Sortir d'une boucle

ticrain Messages postés 178 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 2 janvier 2015 - 24 avril 2008 à 17:05
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 26 avril 2008 à 22:45
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

Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
24 avril 2008 à 20:07
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
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
24 avril 2008 à 23:14
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) ...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 avril 2008 à 05:59
joues avec un Timer, plutot (ou en VBA : Application.Ontime)

viré ce matin ?
0
ticrain Messages postés 178 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 2 janvier 2015
25 avril 2008 à 12:36
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 avril 2008 à 14:14
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
0
ticrain Messages postés 178 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 2 janvier 2015
25 avril 2008 à 17:32
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...
0
ticrain Messages postés 178 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 2 janvier 2015
25 avril 2008 à 20:48
Bonjour les ptis loups

ya qqun
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
25 avril 2008 à 23:31
Oui

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 avril 2008 à 03:55
aisé a ajouter, me semble, dans la Sub OnTime
0
ticrain Messages postés 178 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 2 janvier 2015
26 avril 2008 à 08:20
Bonjour les ptis loups

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

merci
0
ticrain Messages postés 178 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 2 janvier 2015
26 avril 2008 à 12:39
AU SECOURS je ne m'en sort pas ...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 avril 2008 à 22:45
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
0
Rejoignez-nous