Bonjour à tous!
Permettez-moi de vous soumettre une question qui relève uniquement d'une
petite curiosité.
Dans un formulaire, le code ci-dessous permet au contrôle "Horloge" de
changer alternativement de couleur (Jaune, puis Vert clair):
Private Sub Form_Timer()
If Me!Horloge.BackColor=8454143 Then
Me!Horloge.BackColor=65280
Else
Me!Horloge.BackColor=8454143
End If
End Sub
La question: Peut-on faire en sorte que se contrôle passe alternativement
par trois couleurs au lieu de deux (Jaune, puis Vert clair, puis Bleu par
exemple)?
Mille excuses braves gens, veuillez oublier ma question car j'ai trouvé la réponse:
Private Sub Form_Timer()
If Me.Horloge.BackColor = 8454143 Then Me.Horloge.BackColor = 65280 Else If Me.Horloge.BackColor = 16711680 Then Me.Horloge.BackColor = 8454143 Else Me.Horloge.BackColor = 16711680 End If End If
End Sub
Mille excuses braves gens, veuillez oublier ma question car j'ai trouvé la
réponse:
Private Sub Form_Timer()
If Me.Horloge.BackColor = 8454143 Then
Me.Horloge.BackColor = 65280
Else
If Me.Horloge.BackColor = 16711680 Then
Me.Horloge.BackColor = 8454143
Else
Me.Horloge.BackColor = 16711680
End If
End If
Mille excuses braves gens, veuillez oublier ma question car j'ai trouvé la réponse:
Private Sub Form_Timer()
If Me.Horloge.BackColor = 8454143 Then Me.Horloge.BackColor = 65280 Else If Me.Horloge.BackColor = 16711680 Then Me.Horloge.BackColor = 8454143 Else Me.Horloge.BackColor = 16711680 End If End If
End Sub
3stone
Salut,
"Willi2004" | Mille excuses braves gens, veuillez oublier ma question car j'ai trouvé la | réponse:
Oui, mais plus zoli ;-)
'Déclaration Dim iCol As Integer Const Col1 As Long = 65280 Const Col2 As Long = 8454143 Const Col3 As Long = 16711680
Private Sub Form_Timer() iCol = iCol + 1 Select Case iCol Case 1: Me.Horloge.BackColor = Col1 Case 2: Me.Horloge.BackColor = Col2 Case 3: Me.Horloge.BackColor = Col3: iCol = 0 End Select
Eh bien, en fin de compte je n'ai pas eu tort de poser la question car elle m'a donné l'occasion d'apprendre quelque chose de notre si cher 3stone. Merci Professeur.
Eh bien, en fin de compte je n'ai pas eu tort de poser la question car elle
m'a donné l'occasion d'apprendre quelque chose de notre si cher 3stone.
Merci Professeur.
Eh bien, en fin de compte je n'ai pas eu tort de poser la question car elle m'a donné l'occasion d'apprendre quelque chose de notre si cher 3stone. Merci Professeur.
Willi2004
Rebonjour Professeur stone!
Ton code est de loin préférable, et je l'ai tout de suite adopté à la place du mien. Pour que l'action de passer successivement par les trois couleurs s'exécute en boucle, j'ai rajouté quelques lignes de code, comme ceci:
Private Sub Form_Timer() Lbl1: iCol = iCol + 1 Select Case iCol Case 1: Me.Horloge.BackColor = Col1 Case 2: Me.Horloge.BackColor = Col2 Case 3: Me.Horloge.BackColor = Col3 iCol = iCol - 4 GoTo Lbl1 End Select End Sub
Vraiment intéressant!! Ca permet de passer par autant de couleurs qu'on veut sans s'embrouiller avec d'interminables If ..... Then. Merci de m'avoir enrichi.
Rebonjour Professeur stone!
Ton code est de loin préférable, et je l'ai tout de suite adopté à la place
du mien.
Pour que l'action de passer successivement par les trois couleurs s'exécute
en boucle, j'ai rajouté quelques lignes de code, comme ceci:
Private Sub Form_Timer()
Lbl1: iCol = iCol + 1
Select Case iCol
Case 1: Me.Horloge.BackColor = Col1
Case 2: Me.Horloge.BackColor = Col2
Case 3: Me.Horloge.BackColor = Col3
iCol = iCol - 4
GoTo Lbl1
End Select
End Sub
Vraiment intéressant!!
Ca permet de passer par autant de couleurs qu'on veut sans s'embrouiller
avec d'interminables If ..... Then.
Merci de m'avoir enrichi.
Ton code est de loin préférable, et je l'ai tout de suite adopté à la place du mien. Pour que l'action de passer successivement par les trois couleurs s'exécute en boucle, j'ai rajouté quelques lignes de code, comme ceci:
Private Sub Form_Timer() Lbl1: iCol = iCol + 1 Select Case iCol Case 1: Me.Horloge.BackColor = Col1 Case 2: Me.Horloge.BackColor = Col2 Case 3: Me.Horloge.BackColor = Col3 iCol = iCol - 4 GoTo Lbl1 End Select End Sub
Vraiment intéressant!! Ca permet de passer par autant de couleurs qu'on veut sans s'embrouiller avec d'interminables If ..... Then. Merci de m'avoir enrichi.
3stone
Salut Willi,
"Willi2004" [...] | j'ai rajouté quelques lignes de code, comme ceci: | | Private Sub Form_Timer() | Lbl1: iCol = iCol + 1 | Select Case iCol | Case 1: Me.Horloge.BackColor = Col1 | Case 2: Me.Horloge.BackColor = Col2 | Case 3: Me.Horloge.BackColor = Col3 | iCol = iCol - 4 | GoTo Lbl1 | End Select | End Sub
Oui ;-) Mais du coup, il est à nouveau... vilain... Un goto dans une sub c'est... *interdit* et très certainement un saut sans condition ;-(
Si tu souhaite exécuter plusieurs fois, regarde les Do... Loop Until ou les While... Whend.
| Ca permet de passer par autant de couleurs qu'on veut sans s'embrouiller | avec d'interminables If ..... Then.
Mais, Professeur... Je ne sais pas si l'instruction Do...Loop peut réellement s'appliquer au cas présent. Elle exécute un bloc d'instructions un certain nombre de fois. Or ici, il faut que l'exécution du bloc d'instruction se fasse sans discontinuer, tant que le formulaire reste ouvert. J'ai cherché pendant deux heures sans trouver comment faire!!
Mais, Professeur...
Je ne sais pas si l'instruction Do...Loop peut réellement s'appliquer au cas
présent.
Elle exécute un bloc d'instructions un certain nombre de fois.
Or ici, il faut que l'exécution du bloc d'instruction se fasse sans
discontinuer, tant que le formulaire reste ouvert.
J'ai cherché pendant deux heures sans trouver comment faire!!
Mais, Professeur... Je ne sais pas si l'instruction Do...Loop peut réellement s'appliquer au cas présent. Elle exécute un bloc d'instructions un certain nombre de fois. Or ici, il faut que l'exécution du bloc d'instruction se fasse sans discontinuer, tant que le formulaire reste ouvert. J'ai cherché pendant deux heures sans trouver comment faire!!
Eric
Bonsoir,
Tu mets le code initialement donné par Pierre(3stone) sur le timer du formulaire et un itervelle de 1000 ms par exemple. Ca ne s'arretera jamais tant que tu ne mets pas l'intervalle à 0 ou que tu fermes pas le formulaire. Mais j'ai peut-être mal compris ce que tu veux faire.
Mais, Professeur... Je ne sais pas si l'instruction Do...Loop peut réellement s'appliquer au cas présent. Elle exécute un bloc d'instructions un certain nombre de fois. Or ici, il faut que l'exécution du bloc d'instruction se fasse sans discontinuer, tant que le formulaire reste ouvert. J'ai cherché pendant deux heures sans trouver comment faire!!
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonsoir,
Tu mets le code initialement donné par Pierre(3stone) sur le timer du
formulaire et un itervelle de 1000 ms par exemple. Ca ne s'arretera
jamais tant que tu ne mets pas l'intervalle à 0 ou que tu fermes pas le
formulaire.
Mais j'ai peut-être mal compris ce que tu veux faire.
Mais, Professeur...
Je ne sais pas si l'instruction Do...Loop peut réellement s'appliquer au cas
présent.
Elle exécute un bloc d'instructions un certain nombre de fois.
Or ici, il faut que l'exécution du bloc d'instruction se fasse sans
discontinuer, tant que le formulaire reste ouvert.
J'ai cherché pendant deux heures sans trouver comment faire!!
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Tu mets le code initialement donné par Pierre(3stone) sur le timer du formulaire et un itervelle de 1000 ms par exemple. Ca ne s'arretera jamais tant que tu ne mets pas l'intervalle à 0 ou que tu fermes pas le formulaire. Mais j'ai peut-être mal compris ce que tu veux faire.
Mais, Professeur... Je ne sais pas si l'instruction Do...Loop peut réellement s'appliquer au cas présent. Elle exécute un bloc d'instructions un certain nombre de fois. Or ici, il faut que l'exécution du bloc d'instruction se fasse sans discontinuer, tant que le formulaire reste ouvert. J'ai cherché pendant deux heures sans trouver comment faire!!
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
3stone
Willi !!!
"Willi2004" | Je ne sais pas si l'instruction Do...Loop peut réellement s'appliquer au cas | présent. | Elle exécute un bloc d'instructions un certain nombre de fois. | Or ici, il faut que l'exécution du bloc d'instruction se fasse sans | discontinuer, tant que le formulaire reste ouvert. | J'ai cherché pendant deux heures sans trouver comment faire!!
Le "TimerInterval" (Intervalle minuterie) indique le temps... entre 2 passages dans la sub "Form_Timer" (Sur minuterie) Donc, à chaque passage, le code est exécuté !
Si tu veux que la couleur change tous les demis secondes, tu mets 500 (500 milisecondes) dans TimerInterval ! A chaque passage, la valeur iCol sera incrémentée et la couleur correspondante sera attibuée à ta zone de texte.
PS: Faire boucler dans cet événement est ma pire des solutions ;-(
"Willi2004"
| Je ne sais pas si l'instruction Do...Loop peut réellement s'appliquer au cas
| présent.
| Elle exécute un bloc d'instructions un certain nombre de fois.
| Or ici, il faut que l'exécution du bloc d'instruction se fasse sans
| discontinuer, tant que le formulaire reste ouvert.
| J'ai cherché pendant deux heures sans trouver comment faire!!
Le "TimerInterval" (Intervalle minuterie) indique le temps... entre 2 passages
dans la sub "Form_Timer" (Sur minuterie)
Donc, à chaque passage, le code est exécuté !
Si tu veux que la couleur change tous les demis secondes, tu mets
500 (500 milisecondes) dans TimerInterval !
A chaque passage, la valeur iCol sera incrémentée et la couleur correspondante
sera attibuée à ta zone de texte.
PS:
Faire boucler dans cet événement est ma pire des solutions ;-(
"Willi2004" | Je ne sais pas si l'instruction Do...Loop peut réellement s'appliquer au cas | présent. | Elle exécute un bloc d'instructions un certain nombre de fois. | Or ici, il faut que l'exécution du bloc d'instruction se fasse sans | discontinuer, tant que le formulaire reste ouvert. | J'ai cherché pendant deux heures sans trouver comment faire!!
Le "TimerInterval" (Intervalle minuterie) indique le temps... entre 2 passages dans la sub "Form_Timer" (Sur minuterie) Donc, à chaque passage, le code est exécuté !
Si tu veux que la couleur change tous les demis secondes, tu mets 500 (500 milisecondes) dans TimerInterval ! A chaque passage, la valeur iCol sera incrémentée et la couleur correspondante sera attibuée à ta zone de texte.
PS: Faire boucler dans cet événement est ma pire des solutions ;-(
Le code donné par 3stone ne s'exécute qu'une fois. En effet: Pour iCol = 1, Case 1 s'exécute: couleur verte; ensuite Pour iCol = 2, Case 2 s'exécute: couleur jaune; ensuite Pour iCol = 3, Case 3 s'exécute: couleur bleue;
Puis iCol continue de s'incrémenter: 4, 5, 6, 7, etc... Mais alors il n' y a plus de "Case" correspondant, donc plus d'exécution!! L'exécution n'a donc lieu qu'une fois. Vous pouvez bien essayer et vérifier par vous-même que les choses se passent bien ainsi.
Alors Professeur?
Le code donné par 3stone ne s'exécute qu'une fois.
En effet:
Pour iCol = 1, Case 1 s'exécute: couleur verte;
ensuite
Pour iCol = 2, Case 2 s'exécute: couleur jaune;
ensuite
Pour iCol = 3, Case 3 s'exécute: couleur bleue;
Puis iCol continue de s'incrémenter: 4, 5, 6, 7, etc...
Mais alors il n' y a plus de "Case" correspondant, donc plus d'exécution!!
L'exécution n'a donc lieu qu'une fois.
Vous pouvez bien essayer et vérifier par vous-même que les choses se passent
bien ainsi.
Le code donné par 3stone ne s'exécute qu'une fois. En effet: Pour iCol = 1, Case 1 s'exécute: couleur verte; ensuite Pour iCol = 2, Case 2 s'exécute: couleur jaune; ensuite Pour iCol = 3, Case 3 s'exécute: couleur bleue;
Puis iCol continue de s'incrémenter: 4, 5, 6, 7, etc... Mais alors il n' y a plus de "Case" correspondant, donc plus d'exécution!! L'exécution n'a donc lieu qu'une fois. Vous pouvez bien essayer et vérifier par vous-même que les choses se passent bien ainsi.