Sortir d'une boucle

Signaler
Messages postés
178
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
2 janvier 2015
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Bonjour les ptis loups

J'ai été viré ce matin c'est pas sympa les enfants, enfin j'ai quand même réussi à m'ensortir et réussir à avoir se que je voulais.
Voila en cliquant sur le bouton 3
je lance une boucle qui me fais clignoter des labels voir ci dessous :

Private Sub CommandButton3_Click()
Dim moncontrole As Object, NomDuControl As String
NomDuControl = "label" ' nom du type de controle sur le quel on veut boucler
For Each moncontrole In Frame1.Controls
   ' ici on regarde si le controle dans la variable MonControle est bien un label si oui on continu si non on passe au suivant
  If Left(LCase(moncontrole.Name), Len(NomDuControl)) = NomDuControl Then
      If moncontrole.Caption = TextBox1.Value Then ' ici on compare la valeur du label trouve avec la valeur de la textbox
          With moncontrole ' si la valeur est identique on met en forme le label
             
       
          End With
          Exit For
      End If
   End If
  
Next
'clignote
Dim a As String
a = Timer
Do
Do Until a + 0.1 <= Timer
DoEvents
LoopIf moncontrole.Visible True Then moncontrole.Visible False Else moncontrole.Visible = True
a = Timer
Loop



End Sub


Je voudrai à present sortir de cette boucle et arreter le clignotement du label avec l'appui sur le bouton5 que dois-je faire ???

Private Sub CommandButton5_Click()
TextBox1.Value = ""

???

End sub

Merci

12 réponses

Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
Ajoute une variable de type booleen à ta form, nommée flagBoucle par exemple.
Juste avant ton Do, tu la mets à False.
Dans le code de Command5, tu la mets à True.
Tu modifies un tout petit peu ton code pour sortir du Do Loop si flagBoucle est vrai :
Loop While Not flagBoucle
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonsoir,


Et tu penses à ne pas faire tourner cette boucle trop longtemps (j'entends d'ici le ventilateur de refroiddissement de ton processeur s'énerver après un peu moins de deux minutes) ...
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
joues avec un Timer, plutot (ou en VBA : Application.Ontime)

viré ce matin ?
Messages postés
178
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
2 janvier 2015

Bonjour les ptis loups

Comment puis je faire avec mon code pour utiliser application.ontime? je trouve que le prog fonctionne bien le problème c'est pour sortir!!!!

Kristof_koder voici ce que j'ai fai avec ce que tu m'a dit:

Private Sub CommandButton3_Click()
Dim moncontrole As Object, NomDuControl As String
NomDuControl = "label" ' nom du type de controle sur le quel on veut boucler
For Each moncontrole In Frame1.Controls
   ' ici on regarde si le controle dans la variable MonControle est bien un label si oui on continu si non on passe au suivant
  If Left(LCase(moncontrole.Name), Len(NomDuControl)) = NomDuControl Then
      If moncontrole.Caption = TextBox1.Value Then ' ici on compare la valeur du label trouve avec la valeur de la textbox
          With moncontrole ' si la valeur est identique on met en forme le label
        
          End With
          Exit For
      End If
   End If
  
Next
'clignote
Dim a As String
a = Timer
flagboucle=false
Do
Do Until a + 0.1 < = Timer
DoEvents
LoopIf moncontrole.Visible True Then moncontrole.Visible False Else moncontrole.Visible = True
a = Timer
Loop
end sub

Private Sub CommandButton5_Click()
TextBox1.Value = ""
'clignote
Dim a As String
a = Timer
flagboucle=true
Do
Do Until a + 0.1 < = Timer
DoEvents
LoopIf moncontrole.Visible True Then moncontrole.Visible True Else moncontrole.Visible = True
a = Timer
Loop While Not flagBoucle

end sub

Ca ne fonctionne pas merci pour votre aide
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
Dans ton UserForm :

Option Explicit

Private Sub CommandButton1_Click()
mbTimerEnabled = True
OnTime
End Sub

Private Sub CommandButton2_Click()
mbTimerEnabled = False
End Sub

---------------

dna sun module :

Option Explicit

Public mbTimerEnabled As Boolean

Public Sub OnTime()
Dim oControl As Object
Const Second As Double = 0.0000115741
For Each oControl In UserForm1.Controls
If TypeOf oControl Is MSForms.Label Then
If mbTimerEnabled Then
oControl.Visible = Not oControl.Visible
Else
oControl.Visible = True
End If
End If
Next oControl

If mbTimerEnabled Then
Application.OnTime Now + Second / 2, "OnTime"
End If
End Sub
Messages postés
178
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
2 janvier 2015

Merci Renfield de m'aider

Alors j'ai testé ce que tu m'as donné , et en faite quand je clic sur bouton j'ai tous les labels de mon userform qui clignote et non pas celui que j'ai demandé dans la textbox. Il manque encore une comparaison entre la saisie dans la textbox et le label recherché. Il y'a un mix à faire entre se que tu m'as donné et se que moi j'ai fais. Merci Renfield. Je cherche en même temps...
Messages postés
178
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
2 janvier 2015

Bonjour les ptis loups

ya qqun
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Oui

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
aisé a ajouter, me semble, dans la Sub OnTime
Messages postés
178
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
2 janvier 2015

Bonjour les ptis loups

Je te comprends plus Renfield...."aisé a ajouter, me semble, dans la Sub OnTime" ca veut dire quoi?

merci
Messages postés
178
Date d'inscription
jeudi 15 mars 2007
Statut
Membre
Dernière intervention
2 janvier 2015

AU SECOURS je ne m'en sort pas ...
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
ben juste que si tu veux faire clignotter un label, mets ce code :
On Local Error Resume Next
Set oControl = UserForm1.Controls(UserForm1.TextBox1.Value)
If Not Nothing Is oControl Then
If mbTimerEnabled Then
oControl.Visible = Not oControl.Visible
Else
oControl.Visible = True
End If
End If