VBA Excel coller presse-papier
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

VBA Excel coller presse-papier



  1. #1
    Great.J

    VBA Excel coller presse-papier


    ------

    Bonjour à tous,
    N’étant pas initié au VBA, je cherche désespérément sur internet depuis quelques heures de quoi m’aider dans mon projet … en vain.
    Je souhaiterais créer une macro qui copie l’intégralité d’une colonne (« A » dans l’onglet « output ») dans un fichier .txt, ceci lors de l’enregistrement du fichier Excel, et réactive la page consultée lors de l’enregistrement du fichier.

    Pour cela j’ai trouvé ceci :
    Dans ThisWorkbook :
    Code:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Macro1
    End Sub
    Dans Module (code trouvé ici)
    Code:
    Sub Macro1()
        On Error GoTo Erreur
    
        Dim Chaine As String
    
        Dim Fichier As String
    
        CurrentSheet = ActiveSheet.Name
       
        Sheets("output").Activate
        
        Columns("A:A").Select
        
        Selection.Copy
    
        Chaine = "texte à copier"
    
        Fichier = "C:\texte.txt"
        
        Dim f As Integer
    
        f = FreeFile
    
        Open Fichier For Output As #f
    
        Print #f, Chaine
    
        Close #f
    
        MsgBox "Le texte a été sauvegardé dans: " & Fichier
        
        Sheets(CurrentSheet).Activate
    
        Exit Sub
    Erreur:
    
        MsgBox "Le fichier de sortie est inaccessible"
    End Sub
    Le souci réside dans le fait que je n’arrive pas à indiquer dans la commande « print #f » le contenu du presse-papier qui a été copié lors de l’instruction "Chaine = "texte à copier"" …
    De l’aide svp ?

    -----
    "ici se trouve le chemin, c’est ici que commence notre Grand Voyage."

  2. #2
    vande545

    Re : VBA Excel coller presse-papier

    Bonjour
    Le souci réside dans le fait que je n’arrive pas à indiquer dans la commande « print #f » le contenu du presse-papier qui a été copié lors de l’instruction "Chaine = "texte à copier"" …
    Il y a des années que je ne pratique plus VBA mais ce dont je suis sûr c'est de n'avoir jamais "collé" dans un simple fichier texte.
    Je pense que VBA ne peut copier-coller qu'à l'intérieur d'un document M$-Office.
    A ta place, je chercherais à mettre ce qui est à copier dans un array (variable tableau). Il faudra ensuite parcourir ce tableau ligne à ligne et écrire ainsi son contenu dans le fichier txt.

    Remarque :
    Code:
    Columns("A:A").Select
    Selection.Copy
    Est une très mauvaise pratique sauf si tu es sûr que la colonne est totalement remplie ou presque.

  3. #3
    Great.J

    Re : VBA Excel coller presse-papier

    Est une très mauvaise pratique sauf si tu es sûr que la colonne est totalement remplie ou presque.
    Peux-tu développer stp ?

    Je pense que VBA ne peut copier-coller qu'à l'intérieur d'un document M$-Office.
    Il faudra ensuite parcourir ce tableau ligne à ligne et écrire ainsi son contenu dans le fichier txt.
    Ce n'est pas contradictoire du coup ?

  4. #4
    vande545

    Re : VBA Excel coller presse-papier

    Peux-tu développer stp ?
    La partie de plage de cellules vides copiées mobilise malgré tout un espace non négligeable de la RAM. La répétition de ces mauvaises pratiques finit par provoquer des plantages.
    Ce n'est pas contradictoire du coup ?
    Non mais je me suis mal exprimé. En fait, tu n'as pas à utiliser le copier-coller. Tu parcours ligne à ligne la colonne et tu écris le contenu de chaque cellule dans le fichier txt.
    Exemple :
    Code:
    Range("A1").Select
    Do while Activecell.Value<>""
         Open Fichier For Output As #f
                  Print #f, Activecell.Value
          Close #f
          Activecell.Offset(0,1).Select
    loop
    code non testé et écrit de mémoire malgré une décennie au moins de non pratique

  5. A voir en vidéo sur Futura
  6. #5
    umfred

    Re : VBA Excel coller presse-papier

    ça doit marcher, mais perso, je n'aime pas trop utiliser les select dans les macro VBA
    Code:
    Dim c as Range
    Dim ligne as Integer, f as Integer
    Dim fichier as String
    fichier=Fichier = "C:\texte.txt"
    set c=ThisWorkBook.Sheets("output").Range("A1")
    f=FreeFile
    Open fichier For Ouput as #f
    ligne=0 'pour commencer sur la 1ère ligne
    While(c.Offset(ligne,0).Value<>"")
        Print #f, c.Offset(ligne,0).Value
        ligne=ligne+1
    WEnd
    Close #f
    et pour la relecture dans WorkBook_Open()
    relire le fichier avec Line Input

  7. #6
    vande545

    Re : VBA Excel coller presse-papier

    perso, je n'aime pas trop utiliser les select dans les macro VBA
    Entièrement d'accord mais pour un débutant, le mode pas à pas avec vue sur ce qui se passe est rassurant !

  8. #7
    Great.J

    Re : VBA Excel coller presse-papier

    Bonjour et désolé pour le temps de réponse !
    Merci à vous pour votre aide précieuse.
    Je n'ai malheureusement pas eu le temps de tester ce que vous m'avez dit.
    Je reviens vers vous rapidement si je n'y arrive pas ou pour poster le code qui fonctionne.
    Merci !

Discussions similaires

  1. Coller du papier peint sur des portes en stratifiés
    Par tikeno dans le forum Bricolage et décoration
    Réponses: 3
    Dernier message: 04/12/2020, 08h48
  2. En VBA Excel, mettre du texte enrichi dans le presse-papier.
    Par nikkos12 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 24/12/2018, 12h28
  3. [C#] Modifier la valeur de ClipBoard (presse-papier, copier coller)
    Par invite1f60cab1 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 20/01/2013, 21h39
  4. Partage du presse papier
    Par Damon dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 14/10/2008, 01h25
  5. presse papier
    Par invite553ae296 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 16/09/2007, 06h52