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
7668
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
71
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
71
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
23 août 2018
20
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
71
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
71
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