Pb d'attente

Résolu
sobullshit Messages postés 178 Date d'inscription vendredi 9 février 2007 Statut Membre Dernière intervention 8 juin 2007 - 26 févr. 2007 à 15:42
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 27 févr. 2007 à 14:13
Bonjour,

Petit problème tout con:

Lors de l'éxecution de mon programme je dois attendre le passage d'une variable à true pour poursuivre mon calcul. Or ce passage peut se faire au bout de 10s comme au bout d'une heure, ce qui m'empêche d'utiliser un wait ou un sleep.


J'ai bien essayé de mettre une boucle pour attendre que ma variable passe à true mais ça fai planté le pc puisque la boucle m'empeche de fair ce que je dois pour passer ma variable.


La variable passe manuellement de false à true, donc l'emploi d'un DoEvents ne sert pas non plus.


 


Si quelqu'un avait une solution....

8 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 févr. 2007 à 16:16
Re,
La variable activée dans l'autre form, doit avoir une porte suffisante pour être visible partout dans ton projet alors.
Essaie en déclarant la variable qui doit être mise a true dans un module.

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 févr. 2007 à 08:40
Salut,
Pour avancé il serait bon de voir le code que tu as mis (Form1, Form2, et module)

Perso j'aurais déclarer la variable comme suit dans le module.

Global BContinue As Boolean

Après je ne vois pas trop où cela peux coincer. car avec mon exemple cela semble faire ce que tu souhaites.

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 févr. 2007 à 15:54
Salut,

Pourquoi dis tu que que DoEvents ne fonctionne pas... je ne comprends pas bien ou alors je n'ai pas bien compris le problème.

Essaies Ceci
Un bouton sur une feuille et ce code.
Option Explicit

Private BContinue As Boolean

Private Sub Command1_Click()
   BContinue = True
End Sub

Private Sub Attendre()
   While Not BContinue
       DoEvents
   Wend
   Call MsgBox("Bcontinue = TRUE")
End Sub

Private Sub Form_Load()
Me.Show
Call Attendre
End Sub
, ----
[code.aspx?ID=41455 By Renfield]

Ici le âssage à true de la variable se fait bien manuellement.

@+: Ju£i?n
Pensez: Réponse acceptée
0
sobullshit Messages postés 178 Date d'inscription vendredi 9 février 2007 Statut Membre Dernière intervention 8 juin 2007
26 févr. 2007 à 16:08
ta solution ressemble (à peu de choses prêt) à ce que j'avais testé.

L'activation de la variable se fait sur une form différente, je sais pas si ça joue (oui je sais j'avais oublié de le préciser).
Parce que là avec ta solution, ça fait comme avec la mienne, le programme ne continue pas, même quand la variable devrait être passée à true.
0

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

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 févr. 2007 à 23:32
salut,
ou au pire, met un timer. ta sub "attente" (pour reprendre l'exemple de jrivet) passe le timer à true, le timer se désactive et execute la suite seulement si true

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
sobullshit Messages postés 178 Date d'inscription vendredi 9 février 2007 Statut Membre Dernière intervention 8 juin 2007
27 févr. 2007 à 08:05
J'avais espéré que l'astuce du module marcherait puisqu'elle semblait naturellement bonne (bah oui, si la variable n'est pas reconnu comme identique sur 2 form différentes, ça ne peut pas marcher). Néanmoins, ça ne passe toujours pas.

Quant à PCPT, le timer ne change rien à mon problème (sauf si j'ai mal compris), puisqu'il faut quand même le passer à true, ce qui doit se faire depuis une autre form, et c'est là qu'est le problème. Quand je passe ma variable à true depuis la même form, tout se passe bien (avec ou sans timer), mais quand j'utilise 2 form, ça plante (enfin non ça plante pas, mais ça marche pas quand même).

Mais je pense que la piste de jrivet est intéressante, il doit falloir déclarer la variable de façon à ce qu'elle soit commune à tout le projet, si quelqu'un à une idée....
0
sobullshit Messages postés 178 Date d'inscription vendredi 9 février 2007 Statut Membre Dernière intervention 8 juin 2007
27 févr. 2007 à 08:51
En fait pour aller vite j'avais just mis Dim suite as Boolean dans mon module,
mais en passant à Global suite as Boolean c'est bon.

C'est toujours avec les erreurs les plus simples qu'on se plante.

Merci à vous (et j'y pense à réponse acceptée)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 févr. 2007 à 14:13
"(sauf si j'ai mal compris)"
1. ta form peut passer son timer à true.
2. un objet est accessible à partir d'autres form, suffit de le préfixer du nom du parent (form1.timer1.enabled=true)

form1 fait son début de traitement et se termine à la fin du sub
form2 passe la variable (public/gobal) à true
le timer de form1 tourne toujours, depuis le début (donc pas d'activation)
dans la proc du timer, si true il s'arrête (pour ne pas retester) et fait la suite de la sub, donc le fin/2e procédure

çà économiserait des ressources, surtout si tu ne sais pas si l'utilisateur change un jour la valeur de BContinue...
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Rejoignez-nous