Aller au contenu

Faire une pause dans une macro VB


Messages recommandés

Posté(e)

Bonjour

 

J'ai une macro VB à l'intérieur de laquelle j'ai une boucle For. Dans cette boucle For, j'ouvre un forms. Le souci c'est que si le forms est ouvert et son option ShowModal est égal à True, on ne peut pas acceder, manipuler la pièce qui est afficher dans Catia. Mais si l'option ShowModal est a false. la boucle continue ignorant le fait que l'on est valider ou non le forms.

 

C'est pour ca j'aimerais trouver une fonction pour faire une pause dans la boucle tant que le forms n'a pas été valider.

 

Si une fonction existe ou si vous avez une idée...

 

Merci d'avance

 

Enael

 

[Edité le 19/8/2005 par Enael]

Posté(e)

salut enael

 

j'ai une petite idée mais qui n'est pas tres "puriste" ;) , elle risque de te faire ralentir le PC

a essayer quand meme ex :

 

 
Dim i as integer
Public CLE as boolean 

For i=0 to 100
  CLE = False
  
  ton code .....
 
  tu ouvre ta form ici ... (avec showmodal est à false)

  while CLE = False
     debug.print "coucou"
  wend

next i

 

Puis dans ta form, quand tu la valide tu passe CLE à True !

 

Je sais meme pas si l'ordi va te laisser la main avec cet exemple

Tu me dira si tu as vu des flammes !! :exclam:

 

 

 

 

[Edité le 19/8/2005 par mooneck]

Connaître son ignorance est la meilleure part de la connaissance !http://mooneck.pagesperso-orange.fr/confucius_mini.gif

Posté(e)

AU FEUUUU !!!!

 

J'avais aussi penser a ta technique mais ayant déja fait parfois des boucles infinies je me suis dis que ce nétait pas possible. En effet, j'ai essayer et ca fume!! En fait, la boucle paralyse CATIA et donc on ne peut plus rien faire du tout.

 

Mais c'est vrai qu'il fallait essayer.

Merci

 

Enael[Edité le 19/8/2005 par Enael]

 

[Edité le 19/8/2005 par Enael]

Posté(e)

Dommage ! :(

 

Es tu obligé de manipuler catia en même temps que la form active ?

Quelle est l'opération que tu veux faire ?

 

@+

Connaître son ignorance est la meilleure part de la connaissance !http://mooneck.pagesperso-orange.fr/confucius_mini.gif

Posté(e)

Merci pour tes réponses

 

Oui j'ai besoin de manipuler Catia car dans le form il y aura des informations sur des partie du part afficher et il faudrait que l'utilisateur puis avoir acces aux part pouvoir changer la vue verifier les infos etc...

 

Enael

Posté(e)

Désolé mais pour l'instant je sèche

 

ne peux tu pas récupérer toutes les infos que l'utilisateur a besoin et de les rassembler dans le form ?

 

@+

Connaître son ignorance est la meilleure part de la connaissance !http://mooneck.pagesperso-orange.fr/confucius_mini.gif

Posté(e)

Re

 

J'ai peut-etre une idée

 

Mais pour ca j'aimerais connaitre la fonction de ta form...

 

Mon idée :

 

utiliser une variable (mémoire tampon) soit utiliser un fichier texte ou soit une clé dans la base de registre.

puis créer une deuxieme form avec un bouton "suivant"

la premiere form peut-etre avec Showmodal=true

la deuxieme avec Showmodal=false

 

lorsque tu veux intervenir sur catia tu mets en mémoire la position de la form dans la boucle "For"

tu la mets en hide et tu lance la deuxieme en show qui elle n'a pas de boucle for donc elle attend juste que tu appui sur "suivant "

lorsque tu appui sur suivant , tu mets la 2eme form en hide et tu relance la 1ere en lisant la mémoire et repositionnant ainsi la boucle for

 

Peut -etre meme que l'on peut utiliser qu'une form mais il faut pousser la réflexion un peu plus loin.

 

j'espere que tu comprendra s ce que j'essaie d'expliquer !! :)

 

@ +

 

Connaître son ignorance est la meilleure part de la connaissance !http://mooneck.pagesperso-orange.fr/confucius_mini.gif

  • 1 an après...
Posté(e)

Salut Mooneck,

Je suis très intéressé par cette méthode, mais malheureusement, je ne comprend pas vraiment tout ce que tu explique.

Peut-tu précisé comment tu procède, et à quoi ressemble ton code?

Sa me serais bien utile

Merci d'avance pour ta réponse.

Posté(e)

Salut Matthias31,

 

Le probleme est que ca fait 2 ans que j'ai écrit ca et que je n'ai jamais vérifier cette méthode.

Je ne suis pas sur que ca marche !!

 

Connaître son ignorance est la meilleure part de la connaissance !http://mooneck.pagesperso-orange.fr/confucius_mini.gif

Posté(e)

Une autre idée, pas très propre, mais qui devrait marcher :

* tu définis une variable i publique au projet, que tu initialises à 0

* ton prg appelant s'arrête à l'appel MyUserForm.Show 0

* dans le callback du bouton de sortie de ton userform, tu incrémentes i et tu fais un test sur la valeur de i :

-> si (i < limite) alors tu effectues les actions que tu as dans ta boucle for et tu réinitialises ton userform avec les valeurs appropriées

-> sinon tu appelles la fonction LaSuiteDeMonProgramme

 

C'est pas très beau :

-> terminer un programme principal juste pour afficher des UserForms :casstet:

-> définir une variable globale juste pour une boucle for... :casstet:

-> ça peut poser des problèmes de portée de variable : si ta boucle for doit manipuler des données de ton prg appelant, tu es obligé soit de les exposer (pas bo) soit de définir un callback dans ton prg appelant.

 

...mais ça devrait fonctionner

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité