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)?
Rectificatif: En disant "...plus d'exécution!!", je voulais dire "...plus de changement de couleur!!" En fait le code continue de s'exécuter après iCol=3, mais son exécution se traduit uniquement par une incrémentation de "iCol" à chaque passage, et non par un changement de couleur. J'ai récupérer la valeur de "iCol" dans un TextBox pour le vérifier. Mais pour laisser tomber le GoTo, j'ai dû encore utiliser des If...Then comme ceci:
Private Sub Form_Timer() iCol = iCol + 1 If (iCol - 1) Mod 3 = 0 Then I = iCol Else If (iCol - 2) Mod 3 = 0 Then J = iCol Else If (iCol - 3) Mod 3 = 0 Then K = iCol End If End If End If
Me.Texte8 = iCol
Select Case iCol Case I: Me.Horloge.BackColor = Col1 Case J: Me.Horloge.BackColor = Col2 Case K: Me.Horloge.BackColor = Col3 End Select
End Sub
Qu'en pensez-vous?
Rectificatif: En disant "...plus d'exécution!!", je voulais dire "...plus de
changement de couleur!!"
En fait le code continue de s'exécuter après iCol=3, mais son exécution se
traduit uniquement par une incrémentation de "iCol" à chaque passage, et non
par un changement de couleur.
J'ai récupérer la valeur de "iCol" dans un TextBox pour le vérifier.
Mais pour laisser tomber le GoTo, j'ai dû encore utiliser des If...Then
comme ceci:
Private Sub Form_Timer()
iCol = iCol + 1
If (iCol - 1) Mod 3 = 0 Then
I = iCol
Else
If (iCol - 2) Mod 3 = 0 Then
J = iCol
Else
If (iCol - 3) Mod 3 = 0 Then
K = iCol
End If
End If
End If
Me.Texte8 = iCol
Select Case iCol
Case I: Me.Horloge.BackColor = Col1
Case J: Me.Horloge.BackColor = Col2
Case K: Me.Horloge.BackColor = Col3
End Select
Rectificatif: En disant "...plus d'exécution!!", je voulais dire "...plus de changement de couleur!!" En fait le code continue de s'exécuter après iCol=3, mais son exécution se traduit uniquement par une incrémentation de "iCol" à chaque passage, et non par un changement de couleur. J'ai récupérer la valeur de "iCol" dans un TextBox pour le vérifier. Mais pour laisser tomber le GoTo, j'ai dû encore utiliser des If...Then comme ceci:
Private Sub Form_Timer() iCol = iCol + 1 If (iCol - 1) Mod 3 = 0 Then I = iCol Else If (iCol - 2) Mod 3 = 0 Then J = iCol Else If (iCol - 3) Mod 3 = 0 Then K = iCol End If End If End If
Me.Texte8 = iCol
Select Case iCol Case I: Me.Horloge.BackColor = Col1 Case J: Me.Horloge.BackColor = Col2 Case K: Me.Horloge.BackColor = Col3 End Select
End Sub
Qu'en pensez-vous?
Eric
re,
Non car Pierre a mis sur le Case 3 Case 3: Me.Horloge.BackColor = Col3: iCol = 0 -------------------------------------^ Donc icol est réinitialisé et repart à 1 puisqu'il a mis iCol = iCol + 1 sous Private Sub Form_Timer()
un exemple ici : http://cjoint.com/?cywXPH6eOz
Rectificatif: En disant "...plus d'exécution!!", je voulais dire "...plus de changement de couleur!!" En fait le code continue de s'exécuter après iCol=3, mais son exécution se traduit uniquement par une incrémentation de "iCol" à chaque passage, et non par un changement de couleur.
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
re,
Non car Pierre a mis sur le Case 3
Case 3: Me.Horloge.BackColor = Col3: iCol = 0
-------------------------------------^
Donc icol est réinitialisé et repart à 1 puisqu'il a mis
iCol = iCol + 1
sous
Private Sub Form_Timer()
un exemple ici : http://cjoint.com/?cywXPH6eOz
Rectificatif: En disant "...plus d'exécution!!", je voulais dire "...plus de
changement de couleur!!"
En fait le code continue de s'exécuter après iCol=3, mais son exécution se
traduit uniquement par une incrémentation de "iCol" à chaque passage, et non
par un changement de couleur.
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Non car Pierre a mis sur le Case 3 Case 3: Me.Horloge.BackColor = Col3: iCol = 0 -------------------------------------^ Donc icol est réinitialisé et repart à 1 puisqu'il a mis iCol = iCol + 1 sous Private Sub Form_Timer()
un exemple ici : http://cjoint.com/?cywXPH6eOz
Rectificatif: En disant "...plus d'exécution!!", je voulais dire "...plus de changement de couleur!!" En fait le code continue de s'exécuter après iCol=3, mais son exécution se traduit uniquement par une incrémentation de "iCol" à chaque passage, et non par un changement de couleur.
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Willi2004
Autant pour moi!!!! Tout ça pour rien. Tout ça parce que je n'ai pas su regarder avec attention ce que le Professeur stone m'as donné. Je n'avais pas remarqué le ":iCol=0"!! Merci Eric. Pardon Professeur. Pas trop fâché?
Autant pour moi!!!!
Tout ça pour rien.
Tout ça parce que je n'ai pas su regarder avec attention ce que le
Professeur stone m'as donné.
Je n'avais pas remarqué le ":iCol=0"!!
Merci Eric.
Pardon Professeur. Pas trop fâché?
Autant pour moi!!!! Tout ça pour rien. Tout ça parce que je n'ai pas su regarder avec attention ce que le Professeur stone m'as donné. Je n'avais pas remarqué le ":iCol=0"!! Merci Eric. Pardon Professeur. Pas trop fâché?
3stone
"Willi2004" | Pardon Professeur. Pas trop fâché?
Willi, n'en fait pas de trop... ;-)
Si je me débrouille avec Access, c'est parce que d'autres m'ont aidé. J'essaies juste d'aider à mon tour !