Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

pq ma boucle ou Timer ne fonctionne pas?

22 réponses
Avatar
latouffe59
Bonjour,
comme indiqu=E9 dans le titre j'ai un probleme avec un code qui comporte
une fonction Timer...

ce code est cens=E9 , lorsque l'on clique sur une commande et que la
valeur de Label2.Caption (issue d'un Hscroll) <750, lancer un timer
qui fais augmenter progressivement la valeur du Label2.Caption. De l=E0,
j'ajoute dans la boucle un changement de contraste sur l'image qui
d=E9pend de Label2.Caption.

Probleme:Quand le programme se lance il ne change qu'un fois de
valeur (la valeur initiale quadn je clique sur command20)

Qu'est ce qui ne marche pas ?Timer , ma boucle?

---------------------------------------------------------------------------=
----------
Private Sub Command20_Click()

If Label2.Caption < 750 Then
Call Timer1_Timer
Beep
Timer1.Interval =3D i

For i =3D 0 To i =3D 650000 Step 50
Label2.Caption =3D Label2.Caption + i * 250 / 65000
Contraster Form1.ImageCopieOrigine, Form1.ImageOrigine,
Form1.HScroll1.Value
AjusterImageACadre Form1.ImageCopieOrigine,
Form1.ImageAffichee, Form1.ImageContenant
Next i

End If
End Sub
---------------------------------------------------------------------------=
-------------------

Merci d'avance , un pi=E8tre d=E9butant
latouffe

10 réponses

1 2 3
Avatar
jean-marc
wrote in message
news:

Hello,

[snip le code]

Vous pensez qu'un tel code peut fonctionner?



Non.

Les timer ne fonctionnent pas comme ça.

Le meilleur conseil à te donner est de lire
la doc de l'objet Timer, que dire de plus ?

Voici un programme qui fait ce que tu veux faire:
1) Créer un nouveau projet
2) Mettre sur la forme:
- un CommandButton
- Un Timer
- Un Label
3) Copier ce code

Option Explicit

Private Sub Command1_Click()
Dim tempo As Integer

tempo = 2 ' 2 secondes entre chaque update
Timer1.Interval = tempo * 1000
Timer1.Enabled = True

End Sub

Private Sub Form_Load()
Timer1.Enabled = False
Label1.Caption = "PAS DEMARRE"
End Sub

Private Sub Timer1_Timer()
Static n As Long
n = n + 1
Label1.Caption = "COUCOU " & n
' 5 fois en tout.
If n = 5 Then
n = 0
Timer1.Enabled = False
Label1.Caption = "fini"
End If
End Sub

4) Exécuter

Si tu comprends comment fonctionne ce code,
alors ton problème est réglé.

Si non, il faut acheter:
- un livre de programmation
- Un livre sur Visual Basic 6

Bonne prog!

--
Jean-marc
Avatar
Driss HANIB
a écrit dans le message de
news:


dans ton timer tu définis la proriété 'interval' à ce que tu veux : comme
dit JMarc, i n'a aucune valeur définie dasn ton prog : elle doit
correspondre au temps que tu veux laisser entre deux çncrémentations de


ton
label.



Ouai j'ai pas défini i mais c'était juste un code" brouillon" pour
l'idée ...


Oui mais il faut mettre ton incrémentation de la valeur du label dans
l'évènement Timer1_timer du style

if cint(label2.caption) < 750 then
label2.caption= cstr(cint(label2.caption)+1)
else
timer1.enabledúlse
end if

if te suffit de mettre la valeur "interval" de ton timer à ce que tu veux

et dans ton bouton command tu ecris

Timer1.enabled=true

et c'est bon..

Ceci dit quelles sont les parties qui modifient auparavant ton label..?

Driss


Ah que ?qui? doù? dont? quoi???...???

je n'ai pas compris ce que tu me demandais ....Pourrais tu etre plus
explicitite?



OK je n'avais pas bien lu .. :"valeur de Label2.Caption (issue d'un
Hscroll) <750"

Driss
Avatar
PierreVal
Désolé j'ai du prendre le pseudo de mon binome car le mien ne
fonctionne plus

dit JMarc, i n'a aucune valeur définie dasn ton prog :




Je comptais faire un simple "DIM i AS long" masi je l'ai pas mis dans
cette exemple-brouillon

Ceci dit quelles sont les parties qui modifient auparavant ton label..?





Driss





????????????????
pourrais tu être plus explicite?Car là j'ai pas du tout compris ta
question....


Sinon on m'a conseiller d'utiliser l'heure, d etranscrire sa valeur en
numérique et d'utiliser cette dernière dasn une boucle For avec un
step...

-------------------------------------------------
Avatar
Patrice Henrio
le style de latouffe59 me rappelle quelqu'un mais pas moyen de me souvenir
qui !


"Driss HANIB" a écrit dans le message de news:


a écrit dans le message de
news:


dans ton timer tu définis la proriété 'interval' à ce que tu veux : comme
dit JMarc, i n'a aucune valeur définie dasn ton prog : elle doit
correspondre au temps que tu veux laisser entre deux çncrémentations de


ton
label.



Ouai j'ai pas défini i mais c'était juste un code" brouillon" pour
l'idée ...


Oui mais il faut mettre ton incrémentation de la valeur du label dans
l'évènement Timer1_timer du style

if cint(label2.caption) < 750 then
label2.caption= cstr(cint(label2.caption)+1)
else
timer1.enabledúlse
end if

if te suffit de mettre la valeur "interval" de ton timer à ce que tu veux

et dans ton bouton command tu ecris

Timer1.enabled=true

et c'est bon..

Ceci dit quelles sont les parties qui modifient auparavant ton label..?

Driss


Ah que ?qui? doù? dont? quoi???...???

je n'ai pas compris ce que tu me demandais ....Pourrais tu etre plus
explicitite?



OK je n'avais pas bien lu .. :"valeur de Label2.Caption (issue d'un
Hscroll) <750"

Driss




Avatar
latouffe59
Oups désolé pour les posts à répéte masi je pensais que c'était le PC
du CHR ou leur réseau qui bugait vu que c'est déja arrivé.....

Merci à Driss et jean Marcq pour les infos je vais travailler ça dès
aujourd'hui ............


le style de latouffe59 me rappelle quelqu'un mais pas moyen de me souvenir




qui !
euhhhh j'peux pas t'aider là....L'autre stagiaire, Pierreval peut être
vu qu'on à la même logique des choses et surtout le même niveau en VB
(sisi on peut appeler ça un niveau)


Latouffe59
Avatar
latouffe59
Ahh
merci mille et une fois!!
mon programme fonctionne quasiment à merveille!
pourquoi quasiment?
Et bien quand je met la boucle ****If n <E0 Then
timer.Enbaleúlse****
juste après le ****Static n As Long***** mon programme ne veut plus
fonctionner même si je met le reste du code dans un ****Else*****

Mais bon je suis pas à ca prés.....


Encore merci de vos aides
latouffe59
Avatar
Patrice Henrio
il y a plus simple

timer.enable=(n>450)


a écrit dans le message de news:

Ahh
merci mille et une fois!!
mon programme fonctionne quasiment à merveille!
pourquoi quasiment?
Et bien quand je met la boucle ****If n <E0 Then
timer.Enbaleúlse****
juste après le ****Static n As Long***** mon programme ne veut plus
fonctionner même si je met le reste du code dans un ****Else*****

Mais bon je suis pas à ca prés.....


Encore merci de vos aides
latouffe59
Avatar
latouffe59
On 26 avr, 13:43, "Patrice Henrio" wrote:
il y a plus simple

timer.enable=(n>450)




mais tu n'indique pas qu'il faut le mettre false ton timer la!!!
Si? je vois pas bien à quoi sert cette commande >> mettre le timer
enable à n quand celui ci est <à 450
Avatar
Vincent Guichard
a écrit :
On 26 avr, 13:43, "Patrice Henrio" wrote:
il y a plus simple

timer.enable=(n>450)




mais tu n'indique pas qu'il faut le mettre false ton timer la!!!
Si? je vois pas bien à quoi sert cette commande >> mettre le timer
enable à n quand celui ci est <à 450



la ligne:
timer.enable = (n>450)
s'évalue ainsi:
d'abord le programme évalue (n>450), puis affecte le réfultat de cette
évaluation ) timer.enable

donc si n>450, (n>450) est Vrai (True)
et si n<E0, (n>450) est Faux (False)

donc cela reviens à écrire en une seule ligne:

if n>450 then
timer.enable = True
else
timer.enable = False
End If

ou encore:

timer.enable = Iif(n>450, True, False)

Vincent Guichard
Avatar
latouffe59
Ahhh ok!!
merci de l'info .......


mais ne t'es tu pas trompé en mettant "lif" au lieu de "if"?
Et le (true, false) en VB6 n'est il pas la valeur par défaut? je dis
ca car Patrice Henrio ne l'a pas mis!

latouffe59
1 2 3