IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

le presse-papier refuse de se coller [XL-2019]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut le presse-papier refuse de se coller
    bonjour à tous

    J'ai un souci avec le fonctionnement du presse-papier Windows. Avec une Macro, je veux copier une plage de cellules dans Excel , puis la coller dans Word.

    A la main, ça fonctionne. Mais il me faut une macro, pour garantir que les utilisateurs ne modifieront pas les valeurs. J'arrive à faire la copie, j'arrive même à extraire les informations du presse-papier (voir le fichier joint), mais si je tente le Ctrl-V : ça plante.

    Auriez-vous des pistes ?

    Merci d'avance

    Edit : En y regardant de plus près, ce que j'ai écrit ne va rien chercher dans le presse papiers, mais va simplement afficher une matrice générée de manière dynamique. MAis la question reste entière : je veux copier et je n'y arrive pas !
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 484
    Par défaut
    Salut le fil,
    Tu peux tester avec un objet Word, voici un exemple sorti tout droit de mes références et que je n'ai pas testé.
    ATTENTION AVANT DE TESTER TU DOIT L'ADAPTER CAR IL Y A UNE COPIE DE GRAPHIQUE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Sub Test_150922()
     
    ' // LA REFERENCE Microsoft Word XX.00 Object library DOIT ETRE COCHEE
     
     
       Dim oAppWord As New Word.Application
       Dim oDocWord As New Word.Document
     
       '  // Ajoute un nouveau document
       With oAppWord
          ' // On affiche ou pas Word
          .visible = True
          Set oDocWord = .Documents.Add
          .Activate
       End With
     
       With oAppWord.Selection
           '   // Ajoute une ligne de titre et la met en forme
           .TypeText Text:="Résultat des ventes de 2014"
           .HomeKey Unit:=wdLine
           .EndKey Unit:=wdLine, Extend:=wdExtend
           .ParagraphFormat.Alignment = wdAlignParagraphCenter
           .Font.Size = 18
            With .Font
                 .Name = "Arial"
                 .Size = 18
                 .Bold = True
                 .Italic = False
                 .Smallcaps = True
            End With
     
           '  // Copie le tableau Excel dans le Presse-papiers
           Range("A1:D10").Copy
           '  // Colle le tableau dans Word avec liaison
           .EndKey Unit:=wdLine
           .TypeParagraph
           .TypeParagraph
           .PasteSpecial Link:=True, DataType:=wdPasteOLEObject, _
                         Placement:=wdInLine, DisplayAsIcon:=False
     
           '  // Copie le graphique Excel dans le Presse-papiers
           ActiveSheet.ChartObjects(1).Activate
           ActiveChart.ChartArea.Select
           ActiveChart.ChartArea.Copy
           '  Colle le graphique dans Word
           .TypeParagraph
           .TypeParagraph
           .Paste
       End With
     
       With oDocWord
            '   // Enregistre le document Word dans le même
            '   // dossier que le classeur Excel
            .SaveAs ThisWorkbook.Path & "\Resultat_2014.docx", _
            Allowsubstitutions:=True
            '   // Aperçu du résultat dans Word
            .PrintPreview
       End With
     
       '   // Réinitialise l'objet
       Set oAppWord = Nothing
    End Sub

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 178
    Par défaut
    Hello,
    c'est normal que le coller de ce que tu as mis dans le presse-papier par ta macro ne fonctionne pas : il y a n'importe quoi dedans et le presse-papier ne comprend pas ce contenu :

    Nom : CopierMacro.PNG
Affichages : 1091
Taille : 25,3 Ko

    En particulier le CF_TEXT est nul.


    Voici le contenu du presse-papier en faisant un ctrl+C de la plage :

    Nom : CopierPlage.PNG
Affichages : 1009
Taille : 32,2 Ko

    Ami calmant, J.P

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut
    @Valtrase : Merci beaucoup

    Mais dans cet exemple, on part de Word pour aller chercher quelque chose dans Excel. Je voudrais faire l'inverse, c'est à dire récupérer des valeurs dans Excel, les copier dans le presse-papiers, et laisser l'utilisateur faire son collage où il veut dans un document Word qui n'est jamais identique d'une fois sur l'autre. Ce sont des rapports de contrôle : le technicien fait des mesures, la macro Excel compile les résultats, génère de nouvelles valeurs, et ce sont celles-là qu'il faut intégrer, au fil de l'eau, dans le Word.

    J'ai cherché un peu partout. Ce n'est pas clair. J'ai même trouvé un forum où il est indiqué que si l'explorateur Win10 est ouvert avant le fichier Excel, alors la copie dans le clipboard ne fonctionne pas (?!)

    Je continue à chercher. Au pire, j'envoie les valeurs dans un nouveau fichier Excel, et le technicien fait son Ctrl-C - Ctrl-V à l'ancienne...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut
    @ Jurassic JP

    Je suis scotché. éditer le presse papiers dépasse mon niveau actuel de compétences. Chapeau bas.

    Donc j'envoie tout et rien dans le truc. OK. Alors je progresse.

    Si je demande à ma macro de faire un simple Range("A1:B5").Copy et que je tente le Ctrl-V, ça fonctionne

    Mais si, après avoir copié les données, je les efface, alors ça ne fonctionne plus. Or, je veux les effacer... voir le nouveau fichier

    Donc la question devient : est-il possible de "geler" le contenu du presse-papiers ?
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 178
    Par défaut
    Qu'entends-tu par geler le presse-papier ? Si tu l'effaces il n'y a plus rien dedans.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut
    je n'efface pas le presse papier, j'efface la zone dans laquelle il y avait des données que j'ai copiées dans le presse papiers.

  8. #8
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 178
    Par défaut
    voici un exemple de comment mettre des données tableau dans le presse-papier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Enregistre_dans_le_presse_papier()
    Dim objData As New DataObject
    Dim PPContenu As String
    PPContenu = "toto" & Chr(9) & "1" & Chr(13) & Chr(10) & _
                "tata" & Chr(9) & "2" & Chr(13) & Chr(10) & _
                "titi" & Chr(9) & "3" & Chr(13) & Chr(10) & _
                "tutu" & Chr(9) & "4" & Chr(13) & Chr(10) & _
                "tyty" & Chr(9) & "5" & Chr(13) & Chr(10)
    objData.SetText PPContenu
    objData.PutInClipboard
    End Sub

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut
    Heu ... quand je fais Ctrl-V, j'obtiens deux petits caractères abscons...

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut
    bon. Je suis à la bourre, j'abandonne. Je vais préparer les données à copier dans une feuille dédiée et les "offrir" à l'utilisateur qui fera son copier-coller à l'ancienne.

    Un grand merci à ceux qui m'ont aidé.

  11. #11
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 178
    Par défaut
    Hello,
    en fait ton souci vient du fait que l'action d'effacer le contenu d'une plage de cellules , efface le contenu du presse-papier.
    Alors si tu peux le faire, efface le contenu de la plage de cellules après avoir collé le contenu du presse-papier dans word.
    Quand tu fais CTRL V dans word d'une plage de cellules copiée d' Excel c'est le format RTF du presse-papier qui est collé ce qui correspond à un tableau word.
    Si ça intéresse des personnes j'ai des modules de classe VBA qui permettent de manipuler le presse-papier mieux que le DataObject.
    Avec ces modules on peut par exemple :

    • Lister tous les formats qui se trouvent dans le presse-papier.
    • Récupérer sous forme de chaîne du contenu Texte, RTF, HTML qui se trouve dans le presse-papier.
    • Injecter dans le presse-papier du RTF, HTML, Texte.


    Ami calmant, J.P

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/11/2007, 17h45
  2. [Presse papier]copier coller HTML
    Par c-top dans le forum Windows XP
    Réponses: 0
    Dernier message: 26/11/2007, 12h44
  3. copier/coller des graphiques dans le presse-papier
    Par legos dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/01/2007, 13h04
  4. [VBA-E] coller contenu Presse-papiers dans controle Image
    Par mr63 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/03/2006, 17h21
  5. presse papier --> coller
    Par penchu dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/02/2006, 08h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo