Sortir d'une USF et continuer ma macro

Bonjour à toutes et à tous,

J'ai crér un programme où je dois donner la possibilité à l'utilisateur d'écrire une chaine de caractères qui permettre de faire une recherche dans une BDD et sélectionner certaines colonnes de la BDD . Pour saisir ces cette chaine de caractères j'utilise une une textbox dans une userform que l'on quitte avec un bouton. Le soucis c'est que je n'arrive pas à reprendre ma macro en sortie de l'USF

qq'un aurait une idée SVP?

Bonjour,

Peut-être

userform. show 0

Bonjour le fil, bonjour le forum,

To problème ne semble pas trop complexe mais sans le fichier qui va bien, on risque de perdre un temps fou à trouver la solution adéquate...

Bonjour, Salut à tous !

L'ouverture en non modal n'est pas une bonne solution... L'ouverture de ton Userform doit être intégré à ta macro, qui l'affiche, l'utilisateur saisi ce qu'il doit dans la TextBox et valide, la validation doit masquer le Userform (Hide) et non le décharcher (Unload), la macro initiale reprend alors la main, récupère la valeur de la Textbox, décharge le Userform et se poursuit...

On peut aussi opérer en codant l'ouverture du Userform à partir d'une Function qui fera de même et renverra la valeur de la TextBox, fonction appelée alors par la proc. principale pour récupérer cette valeur.

La première méthode peut paraître plus simple.

Cordialement.

Bonjour à tous merci pour toutes vos réponses,

Mferand je suis novice tu peux m’expliquer Ce que tu appelles “ouverture non modal” etc.

Je mettrai mon fichier ce soir (je suis au travail ).

Pour plus de détails: l’utilisateur appuie sur un bouton qui déclenche la macro qui fait des choses et ensuite ouvre l’USF. Mais je n’arrive pas à lui faire reprendre le cours de la macro après!!

Bonjour,

Je vais expliquer si j'ai le temps de le faire avant qu'il ne repasse par ici

Quand tu affiches un formulaire :

Userform1.Show

Tu as ensuites un argument facultatif que tu peux renseigner :

[Modal]

Si tu ne le renseignes pas, il met par défaut ton formulaire en affichage modal, c'est à dire que tant que tu ne fermes pas ton formulaire, tu ne peux rien faire d'autre dans ton classeur, il prime sur le reste.

L'autre possibilité est :

Userform1.Show vbModeless

Cet affichage est non modal, c'est à dire que tu peux avoir ton formulaire d'affiché et continuer à faire ta vie sur ton classeur (pratique par exemple si tu ouvres une fenêtre d'aide que tu veux garder pendant la saisie de données).

L'avantage ici avec l'affichage modal, c'est que si tu appelles ton formulaire dans ta macro, celle-ci attendra que tu finisses de remplir ton formulaire pour continuer son code.

Voilà

Bonjour,

Je ne reprends pas l'explication de Ausecour elle est tout à fait claire.

Ta problématique étant que ton Userform doit permettre de fournir un élément d'information permettant à la macro de se poursuivre, il ne peut pas être non modal d'une part, et d'autre part pour que l'exécution puisse se rouler en entier, ton Userform doit s'ouvrir en cours de macro au moment où celle-ci doit attendre l'information qui lui manque pour continuer, il faut donc que son ouverture et sa fermeture soient réalisées dans la macro. L'utilisateur valide sa saisie dans le Userform, celui-ci est masqué mais toujours en mémoire, ce qui redonne la main à la macro qui peut aller récupérer l'info dans le Userform, le fermer et se poursuivre.

Cordialement.

Quand j’utilise le “vbModeless” il fini la macro sans attendre la saisie des caractères, or tout est basé sur ces caractères du coup ça ne marche pas après.

Justement, il ne faut pas mettre vbmodeless car ton formulaire ne prime pas sur le reste après

Il faut juste mettre Userform1.show et de cette façon tout attendra ton formulaire.

Sinon si même comme ça ça ne marche pas, il faudra mettre dans l'évènement close de ton formulaire un appel vers la suite de ta macro.

Ok pourrais-tu éclairer ma lanterne et m’expl Ce quoi que tu appelle “formulaire “ et comment le faire repartir sur ma macro s’il-te-plait

Bonjour,

Un formulaire c'est une fenêtre qui va contenir ce qu'on appelle des contrôles, tu peux avoir différents contrôles, des boites de saisie de texte, des listes déroulantes, des cases à cocher, des boutons de commande, des images...

Un exemple :

userform 23c

Pour afficher un formulaire via une macro il faut mettre cette ligne de code Userform1.show

Note qu'il faut aller chercher la propriété Caption de ton formulaire pour savoir ce qu'il faut mettre à la place de Userform1, pour toi ce sera peut-être Userform2 par exemple.

Tu peux créer un formulaire à partir de la fenêtre visual basic (accessible par l'onglet développeur) en faisant clic droit - insertion - formulaire.

J'espère que c'est déjà plus clair pour toi

Re,

• Déclare une variable Publique en haut d'un module standard :

Public MaVar As String

• Tu lances la macro

• Elle ouvre ton UserForm

• Tu renseignes la textBox

• Avant la fermeture, tu récupères la valeur de la TextBoxt dans cette variable :

MaVar = TextBox1.Value

• Tu peux fermer l'UserForm car sa valeur est stockée dans Mavar...

Unload UserForm1

• La macro suit son cours

• À la fin de la macro tu vides la variable Mavar :

MaVar = ""

Comment je récupère la valeur avant de fermer l usf

Re,

Relis mon post !...

MaVar = TextBox1.Value

à adapter bien sûr avec le nom réel de ta textbox...

Merci à tous ca marche.... ça cours même!!!

C'est laborieux mais on y arrive !

Rechercher des sujets similaires à "sortir usf continuer macro"