Copier texte d'une fenêtre de texte pour le coller ailleurs

Bonjour à tous

J'ai fait une macro, j'ai le résultat qui s'affiche dans une fenêtre de texte, et je voudrais copier ce résultat dans le presse papier, pour le coller ailleurs.

Le texte généré est plus long que le nombre de caractères autorisé dans la fenêtre de texte.

Pour copier le texte, j'ai fait ceci :

Dim MSG As String 'déclare la variable MSG (MeSsaGe)
Dim x As New DataObject 

MsgBox MSG 'affiche le message msg
x.SetText MSG
x.PutInClipboard

Je vous passe le reste du script qui fonctionne bien.

Lorsque je ctrl+V, dans Note, Word ..., il ne se passe rien

J'ai également essayé ceci :

Dim MSG As String 'déclare la variable MSG (MeSsaGe)
Dim DataObj As New MSForms.DataObject

MsgBox MSG 'affiche le message msg

With DataObj
    .SetText MSG
    .PutInClipboard
End With

Mais ça ne fonctionne pas mieux

Que faire ?

Merci pour votre aide.

bonjour,

apparemment cette méthode est obsolète.

essaie ceci

    msg = "test"
    With CreateObject("htmlfile").parentWindow.clipboardData
        .setData "text", msg
    End With

Merci h2so4 pour ta réponse.

Je ne suis pas spécialiste de vba (sinon, je n'aurai pas posé cette question), mais je n'ai pas tout compris dans le code.

J'ai mis en commentaire du code, ci-dessous, ce que j'ai compris et mes interrogations.

 msg = "test" 'sert à mettre une valeur dans la variable pour l'exemple
    With CreateObject("htmlfile").parentWindow.clipboardData 'créer un fichier d'extension html, dans le dossier parent de la sauvegarde de mon excel
        .setData "text", msg 'ça bug à cette ligne. Erreur 70, après vérification, je ne suis pas autorisé a sauvegarder (???). Je n'ai pas compris à quoi servait "text"
    End With

Au final, je pense qu'il faut adapter ce code, mais je ne sais pas comment.

Merci pour votre aide.

bonjour,

désolé il manquait un étage à la fusée.

    msg = "test"
    With CreateObject("htmlfile")
        With .parentWindow.clipboardData
            .setData "text", msg
        End With
    End With

De mon coté, cela ne fonctionne pas parfaitement.

L'ordre que j'essai ton script seul, ça fonctionne bien.

Mais lorsque je le mets dans mon script, ça me mets un message d'erreur.

Voilà le contenu de la variable que je veux copier :

image

le texte est encore plus long, tout ne s'affiche pas.

Lorsque je veux debugger, c'est cette ligne qui se surligne en jaune :

   .setData "text", MSG

Est-ce que l'erreur ne viendrait pas de "text" que je dois remplacer par autre chose ?

Est-ce parce que mon texte dans la variable est trop long ?

Merci pour ton aide.

Bonsoir,

il y a sans doute une limite à la taille de ce que l'on peut faire avec cette méthode.

ceci dit : ce code basé sur ton message initial (tout comme celui que je t'ai fourni) fonctionne correctement chez moi.

    Dim x As New DataObject
    Texte = String(165000, "x")
    MsgBox Texte 'affiche le message msg
    x.SetText Texte
    x.PutInClipboard

je peux en copier le contenu dans notepad.

Rechercher des sujets similaires à "copier texte fenetre coller ailleurs"