Activer/désactiver un bouton en fonction de combobox VBA

Bonjour à tous

Je me permets de vous écrire car j’ai un souci pour activer et désactiver bouton sous certaines conditions

En fait ce que je veux c'est:

si je sélectionne un élément dans combo1 et tant que j’ai la possibilité de sélectionner des éléments dans combo2,combo3 et combo 4 alors bouton reste inactif,

En d’autres termes, le bouton est actif que si je n’ai plus rien à sélectionner dans les autres combo

Private Sub ComboBox1_Change()
 Change 'Affiche
End Sub
Private Sub ComboBox2_Change()
Change ' Affiche
End Sub
Private Sub ComboBox3_Change()
Change ' Affiche
End Sub
Private Sub ComboBox4_Change()
Change 'Affiche
End Sub
Sub Change() 'Affiche
Me.affich.Enabled = (Me.ComboBox1.ListIndex <> "*") * (Me.ComboBox2.ListIndex <> "*") * (Me.ComboBox3.ListIndex <> "*") * (Me.ComboBox4.ListIndex <> "*")
End Sub

je vous remercie de votre aide

41test.zip (21.28 Ko)

Bonjour

Essaie ainsi :

Sub change()
    affich.Enabled = (ComboBox1.ListIndex > 0) * (ComboBox2.ListIndex > 0) * (ComboBox3.ListIndex > 0) * (ComboBox4.ListIndex > 0)

End Sub

Bye !

Salut,

Tu peux checker avec un

 ComboBox2.ListCount

le nombre de choix possible restant et donc si c'est égal à 2 dans une des choix 2/3/4 cela veut dire qu'il ne reste que "" + * dedans.

En fait je pense que tu prends le problème à l'envers, tu cherches à savoir quand rendre enabled ton bouton "afficher" ce qui est une étape superflus dans ton formulaire.

Il faudrait plutot lorsque l'on change un des critères, faire le filtre dans la foulée comme si l'utilisateur clique sur "afficher", cela permet de voir le tri en direct; si on trouve pas notre bonheur ou qu'il y a toujours trop de choix alors on rajoutera un critère ou modifiera celui qu'on vient de faire.

Je pense que de devoir cliquer sur Afficher est rébarbatif pour l'utilisateur mais je connais pas toute l'architecture de ton fichier, à toi de voir ce qui est le mieux par rapport à tes besoins

ECG

Bonjour a vous 2 pour vos contributions.

gmb j'ai deja essayé avec ce que tu propose mais ça ne marche pas.

ExcelCoreGame je veux creer des combobox dependants puis alimenter la listbox avec les colonnes e et f

si vous avez une methode plus simple pour faire sa je suis preneur

cela fait presque une semaine que je galere

merci de vos aides

Juste pour savoir, quel est l'intérêt de forcer les combobox et ne pas remplir à la volée comme je te propose?cela ne t'intéresse pas du tout dans ton fichier, surement avec une bonne raison ^^

ECG

Bonjour ECG,

oui je veux bien voir ta proposition peut etre sa sera plus simple

merci d'avance

Bonjour ECG

as tu un exemple de code à me proposer ?

Salut, non pas précisément, je ne maitrise pas l'architecture de ton fichier avec les .dictionnay pour tes combobox mais pour te donner une idée c'est comme quand tu fais un filtre dans excel, il n'attends pas que tu appuies sur un bouton ou que tous les filtres soient remplis, il t'affiche à la volée les informations en fonction du critère que tu viens de rajouter.

Ici je te conseille de faire la même chose (si tu réussi à l'implémenter), quand on choisis un critère dans une combobox, tu fais comme si on cliquait sur "afficher", tu lances le code toi même mais j'ai fais quelque essais sans succès je dois avouer ^^

ECG

tient rapidement je vois un sujet qui vient d'arriver, dans ses userforms quand on tape un nom ça modifie en direct sa liste, je pensais à ça, peut être que le code derrière t'irais ^^

https://forum.excel-pratique.com/excel/pointage-de-personnel-t101652.html

ECG

Un essai à tester.

Bye !

61test-v1.xlsm (38.23 Ko)

Yes niquel m'sieur c'est de ce genre que je parlais

Il reste juste à mettre jour au pire les combobox selon le choix, car le résultat ne conviendra pas je pense, juste cela à modifier et je pense que ton fichier sera le bon Gmb

ECG

merci gmb et ECG pour vos propositions

j'avoue que vos exemples ne resolvent pas mon probleme

j'ai du modifié le fichier en remplaçant les "blanc" par vide.

c'est cette partie du code qu'il faut modifié en jouant sur les signes

Sub change()
affich.Enabled = (ComboBox1 <> "*") * (ComboBox2 <> "*") + (ComboBox3 = "*") * (ComboBox4 = "*")
End Sub
18test-1.zip (21.67 Ko)
msakho a écrit :

j'avoue que vos exemples ne resolvent pas mon probleme

j'ai du modifié le fichier en remplaçant les "blanc" par vide.

Oui et non j'ai envie de dire... avec le fichier de GMB ton bouton affich ne sert à rien! c'est ce que j'essaye de t'expliquer depuis le début. GMB tri à la volée ta listbox, à quoi servirait donc un bouton... qui fait exactement ce qui est fait en automatique

Je ne comprends plus ta demande en fait la

ECG

Bonjour à tous

ExcelCoreGame a écrit :

Je ne comprends plus ta demande...

Ben... moi non plus !

Bye !

Bonjour à vous,

En fait j’ai bien vu l’exemple de gmb.

Le bouton « afficher « sert à afficher les éléments correspondants au filtre.

Tant que je ne clique pas sur « afficher » je ne veux rien voir apparaitre dans la listbox.

Bonjour à tous

msakho a écrit :

Tant que je ne clique pas sur « afficher » je ne veux rien voir apparaitre dans la listbox.

Le client est roi !

Nouvel essai.

Bye !

19test-v2.xlsm (43.90 Ko)

merci gmb

je vais regardé et te revient

message à supprimer, le client est roi comme tu dis

merci à vous 2

je n'ai pas vraiment ce que je veux mais c'est deja ça.

Rechercher des sujets similaires à "activer desactiver bouton fonction combobox vba"