Enael Posté(e) le 19 août 2005 Posté(e) le 19 août 2005 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]
mooneck Posté(e) le 19 août 2005 Posté(e) le 19 août 2005 salut enael j'ai une petite idée mais qui n'est pas tres "puriste" ;) , elle risque de te faire ralentir le PCa 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 exempleTu 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
Enael Posté(e) le 19 août 2005 Auteur Posté(e) le 19 août 2005 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]
mooneck Posté(e) le 19 août 2005 Posté(e) le 19 août 2005 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
Enael Posté(e) le 22 août 2005 Auteur Posté(e) le 22 août 2005 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
mooneck Posté(e) le 22 août 2005 Posté(e) le 22 août 2005 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
Enael Posté(e) le 23 août 2005 Auteur Posté(e) le 23 août 2005 Hélas non je n'ai pas le choix, ca fait partie des obligations imposées par les utilisateurs. Enael
mooneck Posté(e) le 23 août 2005 Posté(e) le 23 août 2005 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=truela 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
Matthias31 Posté(e) le 29 mars 2007 Posté(e) le 29 mars 2007 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 utileMerci d'avance pour ta réponse.
mooneck Posté(e) le 29 mars 2007 Posté(e) le 29 mars 2007 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
ouinamp Posté(e) le 30 mars 2007 Posté(e) le 30 mars 2007 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
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant