Boucler jusqu'a "touche relache"

Bonjour, est-ce possible de faire une boucle jusqu'a ce que la touche qui a apele le code sois relache? Par exemple dans le code plus bas, j'aimerais retourner a la ligne "CommandeStep" tant que la touche n'est pas relache.

' bouton <STEP +> presser
Private Sub CommandButton2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

CommandeStep   'envoi dans le fichier "COMMANDES" la commande STEP 
Sleep 100      'delais 100msec, fonction API
LireRegistres  'recupere le contenu des registres de l'instruction en cours, dans les cellules, puis efface le contenu du fichier 
'tant que le bouton <STEP +> n'est pas relache, goto CommandeStep
End Sub

Bonjour,

Une solution...

Option Explicit

Dim Action As Boolean

Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Label1.Caption = "DEMARRER" 'Ajouter un label pour le test
    Action = True
    Boucler
End Sub

Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Action = False
End Sub

Sub Boucler()
    Do While Action
        CommandeStep   'envoi dans le fichier "COMMANDES" la commande STEP
        Sleep 100      'delais 100msec, fonction API
        LireRegistres
        DoEvents  'Va voir ailleurs si une action est exécutée
    Loop
    Label1.Caption = "ARRET" 'Ajouter un label pour le test
End Sub

Salut, j'ai une erreur "objet requis" sur la ligne Label1.Caption . Je ne comprend pas le role de cette ligne. Y a t-il quelque chose que j'ai oublie de faire?

Les deux lignes avec label1 ne sont pas nécessaires je les ai juste mis pour que tu puisse tester.

Ton bouton est sur un UserForm ?

Si oui ajoute un label sur l'UserForm, tu le met n'importe où ça n'a pas d'importance.

Si tu comprend toujours pas tu dis, je te ferais un exemple.

salut, oui mon bouton est dans un UserForm. Quand tu dis : "ajoute un label sur l'UserForm, tu le met n'importe où ça n'a pas d'importance" tu entend quoi par Label?.

Bon, le plus simple en final c'est de te mettre un classeur.

Evidemment je n'ai pas actionné tes commandes, fais d'abord un essai comme ça et tu comprendras.

Ensuite tu enlève les apostrophes que j'ai mis devant tes commandes.

Une chose m'étonne quand même, tu met une API, tu bidouille dans le régistre et tu ne sais pas ce qu'est un label ?

A+

16startup.zip (8.76 Ko)

Salut Lerminte , c'est tres cool ton demo. Pour le Label, je viens de me reveiller

DoEvents semble verifier dans ce cas si je clic ou relache un bouton du UserForm, et si la condition arrive, ca fait quoi? on passe a la ligne suivante?. Et loop c'est pour fermer la boucle "Do While Action?

Pour le reste je comprend tres bien. Je ne connaissais pas label.caption, car j'allais dans la propriete du bouton du UserForm et j'y mettais le nom. Label.caption permet pas mal plus de souplesse!

Sub Boucler()

Dim N As Long

Do While Action

' CommandeStep 'envoi dans le fichier "COMMANDES" la commande STEP

' Sleep 100 'delais 100msec, fonction API

' LireRegistres

Label3.Caption = N

N = N + 1

DoEvents 'Va voir ailleurs si une action est exécutée

Loop

Label1.Caption = "ARRET" 'Ajouter un label pour le test

End Sub

Bon, je vais essayé d'expliquer, mais le démo me semblais tellement claire..

Quand tu clic sur le bouton.. tu rentre dans la sub MouseDown qui met la variable Action à True et envoi à la sub Boucler

Do While Action veux dire "Tant que la variable Action est à True"... tu boucle.

Les lignes en dessous sont exécutées.

Le DoEvents rend la main au programme ce qui permet de tester la sub MousUP

Quand il arrive sur Loop si la variable Action est toujour à true c'est identique à ton Goto CommandeStep

Mais comme le DoEvents est actionner à chaque coup si la touche est relachée le MouseUP met la variable Action à false et la boucle Do While Action se termine.

Plus d'explications je peu pas donner...

J'ai aussi l'impression que ton clavier est défectueux .. les lettres E,R,I,M et C ne sont pas disponibles.

A+

Tes explications tres completes confirme ce que je pensais.

Je vais pouvoir implanter ce principe dans mon application.

Merci pour ta patiente et surtout l'effort!

Rechercher des sujets similaires à "boucler touche relache"