VBA : trie d'une Combobox en fonction d'un optionbutton

chewwe1602

XLDnaute Nouveau
Bonjour le forum,

Me revoila avec mon petit code vba a faire.
Camarchepas m'a bien aidé pour mon premier userform, mais j'ai un second userform avec des options que j'aimerai développer.

voila l'histoire :

J'ai deux optionbutton qui s'oppose.
l'un valide une menuiserie de 4mm (optionbutton3), l'autre une menuiserie de 12mm(optionbutton4)
j'ai aussi une Combobox (CBRecouvrement) dans laquelle j'ai listé, avec le système Additems, différent type de recouvrement ( tout ceci sont des termes de fabrication de menuiserie. ça n'a pas vraiment d'importance!)

Je souhaiterai que lorsque mon optionbutton3 a une valeur true, on ne puisse sélectionner que le recouvrement de 15 dans la combobox CBRecouvrement.

j’avais pensé a ça:

Private Sub CBRecouvrement_Change()
If userform1.OptionButton3.Value = True Then CBRecouvrement.Value = "15"
End Sub

Bien entendu ça n'a aucun effet :)

merci de votre aide.
 

camarchepas

XLDnaute Barbatruc
Re : VBA : trie d'une Combobox en fonction d'un optionbutton

Bonjour , et oui déjà de bonheure .

Bon , voici une façon de faire .
 

Pièces jointes

  • Menuiserie1.xlsm
    14.3 KB · Affichages: 115
  • Menuiserie1.xlsm
    14.3 KB · Affichages: 113
  • Menuiserie1.xlsm
    14.3 KB · Affichages: 137

chewwe1602

XLDnaute Nouveau
Re : VBA : trie d'une Combobox en fonction d'un optionbutton

Hum, ca ca veut dire qu'il faut que je supprime mes additem dans mon userform initialize?
Parce que la j'ai un gros deboog qui pointe le bout de son nez :)
je joins mon fichier avec pour être, peut être, plus clair.

merci camarchepas.

Regarde la pièce jointe Projet Programme fenetre .xlsm
 

Pièces jointes

  • Projet Programme fenetre .xlsm
    84.6 KB · Affichages: 102
  • Projet Programme fenetre .xlsm
    84.6 KB · Affichages: 104

camarchepas

XLDnaute Barbatruc
Re : VBA : trie d'une Combobox en fonction d'un optionbutton

OK ,

Je reprends mon exemple pour te laisser l'intégrer .

Voici
 

Pièces jointes

  • Menuiserie1.xlsm
    15.7 KB · Affichages: 106
  • Menuiserie1.xlsm
    15.7 KB · Affichages: 98
  • Menuiserie1.xlsm
    15.7 KB · Affichages: 85

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : VBA : trie d'une Combobox en fonction d'un optionbutton

Bonjour chewwe1602, camarchepas,

Un autre essai avec le code sur optionbutton3:
VB:
Private Sub OptionButton3_Change()
  If OptionButton3 Then
    CBRecouvrement.Value = 15
    CBRecouvrement.Locked = True
  Else
    CBRecouvrement.Locked = False
  End If
 

Pièces jointes

  • chewwe1602-Essai v1.xlsm
    15.5 KB · Affichages: 117

chewwe1602

XLDnaute Nouveau
Re : VBA : trie d'une Combobox en fonction d'un optionbutton

Bonjour camarchepas, bonjour mapomme,

Quelle joie d'avoir deux réponses ce matin en me levant !!!
j'ai regardé ce que vous avez fait tous les deux. Je comprend plus facilement le code de mapomme, mais il me semble que celui de ça marche pas est plus adapté a mon fichier.

Toutefois camarchepas j'ai omis de préciser un point. le recouvrement de 15 n'existe que pour le jeux de 4 mm. Je sais j'aurai du le dire plus tôt ( je me fouetterai donc 20 fois en envoyant ce code:

if fouet.value = 10 then
msgbox " Soyez plus clair non de Dieu ! " , vbcritical
end if ). :D

Donc si je clic sur optionbutton3 je n'ai que la valeur 15 dans CBRecouvrement, mais si je clic sur 12 mm alors je peux avoir 18 ou 20.


Je vais quand meme essayé de me pencher sur le sujet.
je vous fais signe si j'y arrive pas dans la journée.

Encore un grand merci.
 

chewwe1602

XLDnaute Nouveau
Re : VBA : trie d'une Combobox en fonction d'un optionbutton

Je suis complètement a la rue.

J'ai essayé tellement de truc que j'ai même réussi a ne plus faire fonctionner des options qui fonctionnaient parfaitement avant.
Notamment le fait que l'optionbutton5 disparaisse lorsque l'optionbutton3 est validé.
je comprend pas. ça marchait parfaitement lorsque je l'ai fait ce matin et la ça ne fonctionne plus.

pour le trie de la combobox, j'ai essayé ce que tu m'as envoyé. mais je souhaitais alimenter les liste par additem et non par la liste de la feuille 6 qui me sert de pense bête et que je ferais sans doute disparaitre par la suite.
Alors du coup je me suis dit :

pourquoi pas ça:

Private Sub OptionButton3_Click()
'parametrage boutton jeux de 4mm

If OptionButton3.Value = True Then
Sheets("Parametre").Range("b3").Value = "4 mm"
ElseIf OptionButton3.Value = False Then Sheets("Parametre").Range("b3").Value = ""
ElseIf OptionButton3.Value = True Then OptionButton5.Visible = True
End If

If OptionButton3.Value = True Then CBRecouvrement.AddItem "15

End Sub

Mais du coup je me retrouve avec deux problèmes :
j'ai autant de fois la valeur 15 dans ma combobox que j'ai cliqué sur le optionbutton3
je ne sais pas trop comment changer les deux autre valeur pour l'optionbutton4


Merci de ton aide :)
 

Pièces jointes

  • Projet Programme fenetre .xlsm
    95.4 KB · Affichages: 83
  • Projet Programme fenetre .xlsm
    95.4 KB · Affichages: 95
  • Projet Programme fenetre .xlsm
    95.4 KB · Affichages: 98

camarchepas

XLDnaute Barbatruc
Re : VBA : trie d'une Combobox en fonction d'un optionbutton

Alors,

Le additem permet d'ajouter une entrée et pour le coup là c'est à une liste .

tu l'affectes déjà dans l'Initialize.

Je crios que tu réécris des choses existantes , et au bout du coup tu cumules les entrées identiques.

Si tu n'as pas plus de valeurs , l'affectation par array était pas mal ,
si tu veux bloquer la liste sur un choix , la solution de ma pomme est sans doute la plus adaptée ,

Je ne pense pas que modifier sans arrêt la liste apporte quelque chose.

pourquoi absolument ce additem ?

Que veux tu faire exactement : Utiliser une instruction spécifique ou limiter les choix en fonction des boutons d'otption.
 

chewwe1602

XLDnaute Nouveau
Re : VBA : trie d'une Combobox en fonction d'un optionbutton

En fait, le jeux de 4 mm ne peut être fait que en axe a 9 mm recouvrement de 15 mm et en feuillure de 18.
Donc peut importe pour le jeux de 4 comment j'y arrive, mais il faut que j'arrive a restreindre le choix a ces trois valeur dans ces deux combobox et l'optionbutton5. Pour le bouton j'ai trouvé en rendant invisible le bouton axe 13 mm lorsque je clic sur le jeux de 4mm ( optionbutton3 ).

Concernant le jeux de 12. il peut être fait dans n'importe laquelle des feuillures, le recouvrement de 18 ou de 20, axe a 9 ou a 13mm.
donc il faut juste que je supprime le choix du recouvrement de 15 mm.

La ou ça va se corsé c'est que l'axe a 9 dans toute les feuillure sauf celle de 24 mm.
l'axe a 13 mm quant a lui ne peut être fait qu'en feuillure de 24.

bref tous ces paramètres doivent s'imbriquer les uns dans les autres ( ce sont les joie de la menuiserie )

Je ne souhaite pas qu'on me mâche le boulot. si j'arrive a comprendre comment on arrive a réduire les choix des combobox, je pense qu’après, je devrais pouvoir me débrouiller :)

Donc pour répondre a ta question, je veux limiter le choix des réponses. Si pour cela il n'y a pas d'autre solution que de passer par une sélection de cellule. Why not.

J'avais lu dans deux bouquin deux technique. celle des additems me paraissait la plus facile a mettre en oeuvre, et en plus, elle me permettait de supprimer ma feuil6.

Est ce que si j'utilise l'additem, je peux supprimer des choix en utilisant le removitems?

je vais m'amuser a tester ça.
 

camarchepas

XLDnaute Barbatruc
Re : VBA : trie d'une Combobox en fonction d'un optionbutton

Bonjour à tous ,

La solution la plus simple si tu n'as pas beaucoup de valeurs dans tes listes déroulantes est je pense un chargement par array.

le code ressemblerait un peu à ceci pour les boutons d'option 3 et 4

Code:
Private Sub OptionButton3_Click()

If OptionButton3.Value = True Then
   
   CBfeuillure.List = Array("15")
   CBfeuillure.Text = "15"
   UserForm1.OptionButton5.Visible = False
   UserForm1.OptionButton6 = True
   Sheets("Parametre").Range("b3").Value = "4 mm"

End If
   


End Sub

Private Sub OptionButton4_Click()

If OptionButton4.Value = True Then
    Sheets("Parametre").Range("b3").Value = "12 mm"
   CBfeuillure.List = Array("", "18", "20", "24", "6/8/4", "7/8/4")
   UserForm1.OptionButton5.Visible = True
   UserForm1.OptionButton6 = False
End If

End Sub
 
Dernière édition:

chewwe1602

XLDnaute Nouveau
Re : VBA : trie d'une Combobox en fonction d'un optionbutton

Bonjour Dranreb, Bonjour camarchepas.

Cranreb en pièce jointe le tableau demandé.



Ça marche pas, ça me parait assez clair.
Si j'ai bien compris, les combobox sont vide au chargement de l'userform, et se charge en fonction du clic des optionbutton
Je suppose donc, avec cette méthode, que je devrais retirer dans uniform1_initialze tout les AddItem rentré?

je vais essayé d'appliquer ta méthode.Je suis quand même a l'écoute d'autre type de solution ( pour ma culture VBA ) car sans doute que j'aurai d'autre application différente a faire a l'avenir.

En tout cas merci a vous deux de vous pencher sur mon cas :)

Je reviens vers vous pour vous donner le résultat de ce code.

Bon week end.
 

Pièces jointes

  • Classeur1.xlsx
    9.5 KB · Affichages: 93
  • Classeur1.xlsx
    9.5 KB · Affichages: 103
  • Classeur1.xlsx
    9.5 KB · Affichages: 112

chewwe1602

XLDnaute Nouveau
Re : VBA : trie d'une Combobox en fonction d'un optionbutton

Camarchepas,

Ton code fonctionne a merveille.
J'ai rencontré un petit soucis a cause du croisement des variables mais j'ai modifié un peu tout ça et ça fonctionne.
Je te renvoi le tableau avec ce code finalisé pour que tu puisse voir si tu le souhaite le résultat obtenue.

Encore merci.:D:D:D
 

Pièces jointes

  • Projet Programme fenetre sauvegarde 2 -1.xlsm
    85.4 KB · Affichages: 127

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote