DateDebutAnalyse = "22/12/2018"
Attente = DateDiff("yyyy", DateDebutAnalyse, Now) * 20
DébutAttente = Now
MsgBox "Avant de cliquer sur OK, copier les données de :" & vbCrLf & "Carnet des commandes clients > Analyse > Analyse globale (par cumul) > Double clique MO rélisée"
If Format(Now - DébutAttente, "hh:mm:ss") < "00:00:" & Attente Then
MsgBox "Attention, il est nécessaire d'attendre que la copie soit terminé" & vbCrLf & "Cela dure au moins 5sec par année annalysée"
End If
With Sheets("Détails MO réel")
.Select
.Columns("A:O").ClearContents
.Range("A1").Select
.Paste 'on colle
End With
Dim pret As Boolean
Public Property Get presse_papier() As String
presse_papier = "oui"
On Error Resume Next
presse_papier = CreateObject("htmlfile").parentwindow.clipboardData.GetData("TEXT")
If Err.Number = 94 Then presse_papier = "non": Err.Clear
End Property
Sub test()
Dim Texte$, T, T1
T1 = Timer
Do While presse_papier = "non"
T = Timer: Do While Timer - T < 1: Loop
If Timer - T1 > 10 Then Exit Do 'delay de 10 secondes avant d'avorter ; a modifier selon la tolérence souhaitée
Loop
If presse_papier =...
tu vide pas le clip de windows avec caOk, j'ai vidé le clipboard (en copiant des cellules excel puis en faisant echap)
Ca ne semble pas fonctionner, le msgbox arrive dessuite.re
peut être pourrions nous nous servir de ca justement "tant que c'est nul c'est que c'est occupé"
même operation tu copie et tu lance ceci
VB:Dim pret As Boolean Public Property Get presse_papier() As String On Error Resume Next presse_papier = CreateObject("htmlfile").parentwindow.clipboardData.GetData("TEXT") End Property Sub test() Dim Texte$, T Texte = presse_papier Do While pret = False T = Timer: Do While Timer - T < 1: Loop On Error Resume Next If Texte = presse_papier Then pret = True On Error GoTo 0 Texte = presse_papier Loop MsgBox "c'est pret à coller" 'activesheet.paste End Sub
Comment je fais sinonre
tu vide pas le clip de windows avec catu vide un des buffer prévu pour excel dans le clip
Non pas cette fois-ci, pas avec le nouveau code que tu m'as envoyé.ok tu dis que quand ca copie et que tu lance la test ca te met en erreur a cause du null c'est bien ca
Dim pret As Boolean
Public Property Get presse_papier() As String
presse_papier = "oui"
On Error Resume Next
presse_papier = CreateObject("htmlfile").parentwindow.clipboardData.GetData("TEXT")
If Err.Number = 94 Then presse_papier = "non": Err.Clear
End Property
Sub test()
Dim Texte$, T
Do While presse_papier = "non"
T = Timer: Do While Timer - T < 1: Loop
Loop
MsgBox "c'est pret à coller"
MsgBox Right(presse_papier, 100)
'activesheet.paste
End Sub
Oui !alors ca marche ?
Non mais ce que je veux dire c'est que dans ma macro j'ai plusieurs copier/coller à faire.tu le vide plus le clip
la dernière mouture par du principe que tant que le clip board est occupé a gloutonner des donner son acces déclenche une erreur que je remplace par "non" des qu'il est pret c'est "oui"
c'est tout
on pourrait même se passer de l'erreur 94 ; et utiliser error tout court au cas ou il y aurais une autre erreur pour autre chose
pour répondre a ta question comme je te l'ai dis ca vide pas le clip ta methode ca vide simplement le buffer d'excel
et tu n'a plus besoins de message "veuillez attendre...." ca se fait tout seul
si tu veux on peut faire ca dans un userform (pseudo message si tu tiens vraiment au message
Non mais en fait c'est moi qui m'embrouille, je voulais rajouter un fonctionnalité inutile, je vais simplement appliquer ton code après que l'utilisateur ait cliqué sur OK.je pige pas très bien si tu a un msgbox excel ne peut plus rien faire alors là tu me perd
ta question est dépourvu de sens dans ce contexte
c'est le but de la sub hein!! mouliner jusqu'a que le clip soit prêt le msgbox est la juste pour te le dire et rien d'autreSi il a suffisement attendu, alors ça sera bon direct, sinon ça moulinera jusqu'à ce que le clipboard soit bon
Dim pret As Boolean
Public Property Get presse_papier() As String
presse_papier = "oui"
On Error Resume Next
presse_papier = CreateObject("htmlfile").parentwindow.clipboardData.GetData("TEXT")
If Err.Number = 94 Then presse_papier = "non": Err.Clear
End Property
Sub test()
Dim Texte$, T, T1
T1 = Timer
Do While presse_papier = "non"
T = Timer: Do While Timer - T < 1: Loop
If Timer - T1 > 10 Then Exit Do 'delay de 10 secondes avant d'avorter ; a modifier selon la tolérence souhaitée
Loop
If presse_papier = "non" Then
MsgBox "le delay d'attente a été dépassé"
Else
MsgBox "c'est pret à coller"
MsgBox Right(presse_papier, 100)
'activesheet.paste
End If
End Sub