XL 2016 Empêcher la sélection/ListBox si ComboBox non rempli

Yoyo01000

XLDnaute Occasionnel
Bonjour le forum,

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
FXL.jpg
 

Fichiers joints

sousou

XLDnaute Barbatruc
bonjour
Si j'ai saisie
Après avoir mis de base enabled = false à list-effectif

Private Sub ComboBox1_Change()
If ComboBox1.ListIndex > -1 Then
Me.List_Effectif.Enabled = True
End If
End Sub
 

Yoyo01000

XLDnaute Occasionnel
Merci, au final, grâce à vous, j'ai trouvé !
J'avais pourtant essayé le .Enabled mais sans commencer par Me. :rolleyes:

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 o_O
 

sousou

XLDnaute Barbatruc
Et pourquoi tu n'essaie pas ce que je te proposais?;)
Reste enabled tant que la combobox est vide
 

jmfmarques

XLDnaute Accro
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
 
Dernière édition:

Yoyo01000

XLDnaute Occasionnel
Et pourquoi tu n'essaie pas ce que je te proposais?;)
Reste enabled tant que la combobox est vide
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é :)
 

Yoyo01000

XLDnaute Occasionnel
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
Merci pour ce "détail" que je vais exécuter et garder sous la main :)
 

Yoyo01000

XLDnaute Occasionnel
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 ?

Merci à vous :)
 

jmfmarques

XLDnaute Accro
Quelle est la différence entre Me.Listbox1 et Listbox1 au début d'une ligne de code
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 ?

:cool:
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas