utiliser le presse papier

XL_Luc

XLDnaute Occasionnel
Voici ce que j'aimerai qu'une macro fasse et dessous la manière dont je l'ai programmé mais on peut faire beaucoup beaucoup mieux.

- vider le presse papier
- lancer un programme
- lancer "sans cesse" un sendkeys CTRL+C
- coller dans une cellule
- si erreur -> rien n'est copier, je boucle
- si pas d'erreur le programme est prêt, je passe à la suite
voilà mon code :


Code:
Sub lance_saga_permanant()


ToggleNumLock (True)
task = Shell(saga_permanant, 3)
DoEvents
' vide le presse papier
Cells(1, 1).ClearContents
Cells(1, 1).Copy
Application.CutCopyMode = False

i = 1
On Error Resume Next

Do
SendKeys "^C"
DoEvents
Cells(1, 1).Select
ActiveSheet.Paste
Loop Until Cells(1, 1) <> ""
DoEvents

End Sub

maintenant j'aimerai vider le presse papier plus "proprement" je n'y arrive pas avec les fonctions GetFromClipboard et PutInClipboard.
J'aimerai en fait mettre un objet "Null" dans le presse papier et tester celui ci jusqu'à avoir un objet non nul (car mon CTRL+C" aura fonctionné).
 

XL_Luc

XLDnaute Occasionnel
Re : utiliser le presse papier

Bon en me sortant les doigts du ... et en recherchant sur le forum, j'ai trouver la solution.
Voici donc mon nouveau code qui fonctionne à merveille :

Code:
Sub lance_saga_permanant()

Dim mydata As Object
Set mydata = New DataObject

ToggleNumLock (True)
task = Shell(saga_permanant, 3)
DoEvents
' vide le presse papier
  With New DataObject
        .SetText ""
        .PutInClipboard
End With

On Error Resume Next
Do

SendKeys "^C"
DoEvents
mydata.GetFromClipboard
Loop Until mydata.GetText(1) <> ""

DoEvents

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 231
Membres
103 161
dernier inscrit
Rogombe bryan