je sèche sur qq chose qui doit pourtant être très simple !
Ce que je veux réaliser :
Si aucune valeur (1 à 31) n'est sélectionnée dans un ComboBox (ComboBox1) alors il est impossible de venir cliquer dans une ListBox à MultiSelect (List_Effectif).
Cela fonctionne comme je veux mis à part qu'une fois la MsgBox affichée et validée, une sélection se fait quand même dans ma ListBox...
J'ai essayé divers morceaux de code pour éviter cela mais sans résultat...
Soit le code est mal écrit, soit il est mal placé, je ne sais pas :
VB:
Private Sub List_Effectif_Enter()
If ComboBox1.Value = "" Then
MsgBox "vide", vbExclamation
End If
Exit Sub
End Sub
Merci, au final, grâce à vous, j'ai trouvé !
J'avais pourtant essayé le .Enabled mais sans commencer par Me.
Voici mon code, qui fonctionne presque :
VB:
Private Sub List_Effectif_Enter()
If ComboBox1.Value = "" Then
MsgBox "Merci de remplir les 4 champs précédents, avant les sélections de Noms-Prénoms dans cette liste !", vbExclamation
Me.List_Effectif.Enabled = False
End If
End Sub
Presque parce que je suis confronté à un nouveau problème :
Si une sélection est faite et s'affiche donc dans la ComboBox1, impossible de venir cliquer dans la ListBox "List_Effectif".
Normal me direz-vous, puisqu'Enable reste forcément sur False !
Je n'arrive pas à contourner ce problème, en ajoutant du code dans le code cité plus haut dans le message...
La fatigue du déconfinement professionnel doit y être pour qq chose
Bonjour
1) Ce n'est pas travailler proprement que de vouloir traiter la cause à partir de l'un de ses effets.
La propriété Value d'une combobox n'est QUE la chaîne de caractères présente dans sa zone d'édition et ne saurait permettre de déterminer avec assurance que tel ou tel autre (ou aucun) article y a été sélectionné
2) Si un article a été sélectionné, la seule chose qui permette de l'assurer sans faille est la propriété Listindex de la combobox (-1 = pas d'article sélectionné, et >=0 si article sélectionné)
3) jouer plutôt également avec la propriété listindex de la listbox :
exemple : if combobox1.listindex = -1 then listbox1.Listindex = -1 fera que toute sélection dans la listbox serait annulée dans la foulée en cas de non sélection dans la combobox. et ne pas jouer de manière alourdissante avec la propriété enabled
J'ai oublié de le préciser, mais j'ai fait l'essai et qu'il y ait une valeur ou non dans la ComboBox, la ListBox reste inaccessible. C'est pour cela que j'ai légèrement modifié le code que tu m'as proposé
Bonjour
1) Ce n'est pas travailler proprement que de vouloir traiter la cause à partir de l'un de ses effets.
La propriété Value d'une combobox n'est QUE la chaîne de caractères présente dans sa zone d'édition et ne saurait permettre de déterminer avec assurance que tel ou tel autre (ou aucun) article y a été sélectionné
2) Si un article a été sélectionné, la seule chose qui permette de l'assurer sans faille est la propriété Listindex de la combobox (-1 = pas d'article sélectionné, et >=0 si article sélectionné)
3) jouer plutôt également avec la propriété listindex de la listbox :
exemple : if combobox1.listindex = -1 then listbox1.Listindex = -1 fera que toute sélection dans la listbox serait annulée dans la foulée en cas de non sélection dans la combobox. et ne pas jouer de manière alourdissante avec la propriété enabled
Je ne sais plus comment fait-on pour mettre ce sujet en [Résolu] !?
J'ai quelques petites questions, aussi mais "hors-sujet" :
Quelle est la différence entre Me.Listbox1 et Listbox1 au début d'une ligne de code ?
Pourquoi, lors d'une déclaration de première variable, il s'agit très souvent de Dim i ?
Que ce soit en début de ligne de code ou non n'a rien à voir. Me précise le conteneur. etant par défaut le conteneur actif, Me.Listbox1 ou Listbox1 sont le même objet du conteneur actif
Pourquoi, lors d'une déclaration de première variable, il s'agit très souvent de Dim i ?
Que préfères-tu ?
1) ouvrir ton aide interne VBA à la rubrique Dim, instruction et en lire toi-même le texte
ou
2) que l'un d'entre nous le fasse à ta place et vienne copier/coller ici le texte qui s'y trouve ?