Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion TgR
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

TgR

XLDnaute Junior
Bonjour à tous,

J'aimerais comprendre comment je dois placer ma boucle pour qu'elle ne soit pas infinie. Je m'explique:

Le code est appliqué à un bouton "valider", qui fait lui même partie d'une userform.
Mon bouton valider sert à copier les données des Combobox dans une autre feuille.

Ce que j'essaye de faire :

Insérer une boucle qui contrôle si toutes les combobox sont remplies et si ce n'est pas le cas, fait apparaitre une MsgBox le signalant. Mon code est le suivant :

If Domaine = "" Or Batiment = "" Or Etage = "" Or Lieu = "" Or LieuBis = "" Or ListBox1 = "" Then
MsgBox ("Toutes les cases ne sont pas remplies")

Sheets("Recap").Select
Feuil2.[A:H].Rows(Feuil2.[A65536].End(xlUp).Row + 1).Value _
= Array(Domaine, Batiment, Etage, Lieu, LieuBis, ListBox1, TextBox1, Signalant.Value)
Sheets("Accueil").Select

Je me suis aperçu qu'avec une condition "IF" la msgbox s'affiche mais la suite du code est quand même exécutée.

J'ai donc tenté

While Domaine = "" Or Batiment = "" Or Etage = "" Or Lieu = "" Or LieuBis = "" Or ListBox1 = "" Then
MsgBox ("Toutes les cases ne sont pas remplies")
Loop

Do While Domaine = "" Or Batiment = "" Or Etage = "" Or Lieu = "" Or LieuBis = "" Or ListBox1 = "" Then
MsgBox ("Toutes les cases ne sont pas remplies")
Loop

Mais avec ces codes, la msgbox apparait et ne disparait jamais.
J'imagine qu'il faut que j'insère une condition de sortie ?

Merci à tous !
 
Re : Boucle infinie

Salut TgR,

Logique que ton code continue de s'exécuter, tu fais une condition non bloquante. Je m'explique : en gros ton code fait que si une ComboBox n'est pas remplie alors ton MsgBox s'affiche sinon il ne s'affiche pas ; dans tous les cas le reste du code s'exécute.

Tu devrais envisager de faire un truc dans le style :

If Domaine = "" Or Batiment = "" Or Etage = "" Or Lieu = "" Or LieuBis = "" Or ListBox1 = "" Then
' code si il y a des ComboBox vides
MsgBox ("Toutes les cases ne sont pas remplies")
Exit Sub
End If

'le reste du code


De cette façon tu vérifies ta condition, si elle est vraie (donc qu'il y a des ComboBox non remplies) alors on affiche le message et on quitte la procédure par exemple. Sinon le reste du code s'exécute. 😉

Cordialement,
Mat'
 
Re : Boucle infinie

Super, ça marche nickel, même pas besoin de boucle finalement ! L'art de se faire des nœuds au cerveau ! Un grand merci à toi MatiChoux

Je viens cependant de me rendre compte d'une chose et je me demande s'il est possible de modifier cela. Dans mon code j'ai mis ListBox1 = ""

Hors ma ListBox1 sera toujours remplie puisqu'elle dépend des ComBoBox. Ce que je souhaitais faire c'était d'empêcher la validation si les ComBoBox n'étaient pas remplies et si aucun choix n'avait été effectué dans la ListBox.

Existe t-il une écriture du genre if [...] Or ListBox1 = aucun_choix_effectué_dans_la_liste_proposée Then [...]

Merci beaucoup !
 
Re : Boucle infinie

De rien, ravi de pouvoir t'aider.

Et en effet pour la ListBox il y a une astuce au niveau des index. Chaque entrée de ta ListBox a un index ; la première valeur possède l'index 0, la deuxième possède l'index 1, etc. Et donc tu peux savoir quel index tu as sélectionné en faisant par exemple un MsgBox ListBox1.ListIndex

En théorie cela va t'afficher l'index de l'entrée que tu as sélectionné. L'astuce est dans le fait que si tu ne sélectionnes rien, l'index est à -1. Donc il te suffit de faire dans ta condition :
[...] Or ListBox1.ListIndex = -1 Then [...]
 
Re : Boucle infinie

Une réponse rapide, une solution proposée qui fonctionne et des explications claires, que demande le peuple ?

Tout marche très bien, merci à toi pour ton aide et pour tes explications
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…