sylv1loop
Messages postés5Date d'inscriptionvendredi 16 avril 2010StatutMembreDernière intervention20 avril 2010
-
16 avril 2010 à 15:53
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024
-
20 avril 2010 à 16:34
Bonjour,
Je me decide a poster pour demander de l'aide car malgres de nombreuses recherche sur mon probleme, je n'ai rien trouve.
Voila :
je recherche a ouvrir une boite de dialogue (msgbox ou userform) qui me demande de faire une action qui n'est pas dans excel (activation d'un element d'une autre application).
Une fois que j'ai fais cette action : le click sur OK me permetrait de continuer la macro sous excel.
Mes premieres recherches m'orientent vite sur l'emploi de la fonction userform en non modale (c'est exactement ce que j'ai besoin).
Or quand on utilise cette fonction, la macro continu de tourner et je me retrouve a la fin alors que je n'ai pu faire l'action demandee par la boite de dialogue.
J'ai vu que d'autres personnes avaient eu ce probleme, mais je n'ai pas eu la reponse finale, et je n'ai rien trouvait qui fonctionnait (pause,doevents, wait, sleep...).
des conseils ou idees ?
merci bien.
SM
pour info : voici un code simplifier que je voudrais faire fonctionner en non modale, mais avec un genre de pause tant que je n'ai pas clicker sur OK ou cancel :
Private Sub test()
UserForm1.Show False
End Sub
Private Sub CommandButton1_Click()
MsgBox "ok"
Unload Me
End Sub
Private Sub CommandButton2_Click()
MsgBox "cancel"
Unload Me
End Sub
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 19 avril 2010 à 19:27
Bonjour,
Normal, tu l'affiche à chaque fois, donc elle ne se termine jamais.
Et pour information, If n'est pas une boucle.
Public Drapeau As Boolean
Sub Test()
Drapeau = True
UserForm1.Show
Do While Drapeau = True
DoEvents
Loop
'If UserForm1.Drapeau Then
'msg box("ok1")
'Else
'MsgBox ("cancel1")
'End If
End Sub
'pour les boutons :
Private Sub CommandButton1_Click()
Drapeau = False
MsgBox "ok"
Hide
End Sub
Private Sub CommandButton2_Click()
Drapeau = False
MsgBox "cancel"
Hide
End Sub
sylv1loop
Messages postés5Date d'inscriptionvendredi 16 avril 2010StatutMembreDernière intervention20 avril 2010 19 avril 2010 à 15:28
Bonjour,
en effet, cela est un peu plus claire, mais malheureusement j'ai quelques petits soucis :
1- tout d'abord la variable public n'est plus reconnue quand on passe aux macros des boutons.
j'ai essaye en les declarants dans les macros bouton, mais inversement, elle disparait lors de l'activation de la macro principale; du coup ma boucle est sans fin.
2- a priori VBA ne comprend pas la commande : UserForm1.Drapeau
3- je ne vois pas trop l'utilité de la boucle if.
que cela apporte t'il ?
je te met ci joint les codes que j'ai fais a partir de tes indications....
merci pour tes infos.
SM
Public Drapeau As Boolean
Sub Test()
Drapeau = True
Do While Drapeau = True
UserForm1.Show
DoEvents
Loop
'If UserForm1.Drapeau Then
'msg box("ok1")
'Else
'MsgBox ("cancel1")
'End If
End Sub
pour les boutons :
Private Sub CommandButton1_Click()
MsgBox "ok"
Drapeau = False
Hide
End Sub
Private Sub CommandButton2_Click()
Drapeau = False
MsgBox "cancel"
Hide
End Sub
sylv1loop
Messages postés5Date d'inscriptionvendredi 16 avril 2010StatutMembreDernière intervention20 avril 2010 20 avril 2010 à 11:02
Bonjour,
en effet, pour le if je voulais parler de la condition et non de boucle.
sinon j'ai essayer avec le changement de position des codes; et ca ne fonctionne toujours pas.
Si je met la UF en non modale : la boucle do tourne sans fin, il ne se passe rien quand je click sur les boutons.
Les sous-macros ne sont pas activees.
si je met la UF en modale : tout d'abord je n'ai pas mes acces aux feuilles excel, mais par contre les sous-macros s'activent bien quand je click sur le bouton.
Ensuite j'ai un message d'erreure de compilation : Nom ambigue détecté : Drapeau; et la ca plante.
Selon moi, je dois rester en non modale.
Dans ce cas : pourquoi les sous-macros ne s'activent pas ?
en tout cas merci de prendre du temps pour me repondre.
sylv1loop
Messages postés5Date d'inscriptionvendredi 16 avril 2010StatutMembreDernière intervention20 avril 2010 20 avril 2010 à 16:04
decidement, je n'y arrive pas.
j'ai bien mis l'option explicit, mais je ne vois pas ou ma variable est declaree 2 fois.
j'ai fais differents essais en declarant ou non les variables en les placant en differents endroit, mais c'est toujours pas OK.
Je dois bien mettre ma UF en non modale ?
comment faire pour activer mes sous macro ?
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 20 avril 2010 à 16:34
Bonjour,
J'ai souvent procédé comme cela et j'ai toujours réussi.
essaye en recherchant toutes le occurences de "drapeau" et en vérifiant bien qu'elle n'est déclarée qu'un seule fois.
Au besoin, déclare-la dans un Module (en laissant la visibilité publique) et comme ça plus besoin de mettre le nom de la form devant.