Comment stopper l'exécution d'un code pour redonner la main à l'utilisateur?

ZeBilou

XLDnaute Nouveau
Bonjour à tous,

Je suis novice en VB et je rencontre actuellement un petit soucis de conception pour lequel je sollicite votre aide.
Je dois créer un petit programme en VB permettant d'afficher un userform invitant l'utilisateur à renseigner des champs manuellement ou à sélectionner des valeurs dans des listes de valeurs. Toutes ces données sont ensuite insérées dans une feuille Excel lorsque l'utilisateur clique sur un bouton 'Insert'.

Voici la cinématique imaginée:
1. Sur la feuille Excel (Feuil1) de départ, l'utilisateur clique sur le bouton d'insertion d'une nouvelle ligne, un userform s'affiche avec les différents champs à renseigner.
2. Ce userform contient notamment 2 contrôles de type ListBox (ListBox1, ListBox2) contenant chacune des valeurs que l'utilisateur est amené à sélectionner. Par défaut, chaque ListBox met en surbrillance la première valeur de la liste ("<Select Value>")
3. Une fois les valeurs sélectionnées (autres que <Select Value> normalement), l'utilisateur doit cliquer sur le CommandButton ('Insert') qui va copier ces valeurs dans la feuille Excel.

Ma problématique:
Je souhaite instaurer un contrôle lorsque l'utilisateur clique sur le bouton 'Insert' du Userform (évènement Click)

1. Si la valeur de la listBox1 = "<Select Value>" alors une msgbox doit apparaître demandant de sélectionner une autre valeur.
2. Quand l'utilisateur valide le message du msgBox (bouton ok), alors l'utilisateur a de nouveau la main et peut changer la valeur de la listBox.
3. Si toutefois, l'utilisateur appuyait de nouveau sur le bouton 'Insert' sans changer la valeur de la listbox1, le contrôle serait effectué à nouveau.
4. Si la valeur de la listBox1 est différente de "<Select Value>" alors le programme passe à la suite et va vérifier la valeur saisie dans la listBox2 (même principe de contrôle que pour ListBox1)

La où je bloque...
Je ne vois pas comment, dans le cadre d'une boucle je peux rendre la main à l'utilisateur après la validation du msgbox. Si j'utilise un "Do Until" ou équivalent, la listbox1.value sera toujours égal à "<Select Value>", et donc la boucle va continuer à s’exécuter à l'infini!! Je ne vois pas comment changer la valeur de la ListBox1 ou ListBox2 en stoppant l'exécution de la macro jusqu'à une nouvelle action de l'utilisateur..
Auriez-vous un conseil ou une astuce pour résoudre ce petit problème?

Merci d'avance pour toutes vos suggestions.
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
10
Affichages
701

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 104
dernier inscrit
JEMADA