Probleme avec combobox

  • Initiateur de la discussion Initiateur de la discussion lechti31
  • 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 !

lechti31

XLDnaute Occasionnel
Bonjour à tous
J'aimerai savoir comment faire pour que dans une combobox (liste deroulante dans userform), il y est une liste définie suivant un choix
Dans le fichier joint, j'aimerai que quand je fais le choix dans le combobox "catégorie", je ne puisse voir que les choix de cette catégorie dans le combobox "taille".
Si je choisi la catégorie junior, j'aimerai que dans le menu déroulant du combobox Taille, je ne puisse avoir accés qu'aux tailles Junior donc B1 à F1.
Si je choisi la catégorie Senior, j'aimerai que dans le menu déroulant du combobox Taille, je ne puisse avoir accés qu'aux tailles Senior donc B2 à F2.
A quel endroit dois-je mettre ces informations, car dans ROWSOURCE il ne prend qu'une seule liste et non un choix de liste
Merci pour votre aide
 

Pièces jointes

J'ai vu que la structure des données n'était pas complètement adaptée à l'utilisation d'un ComboBoxLiées.
Et s'il n'y avait pas d'autres besoins se rapportant à un tableau où ces catégories et tailles étaient à utiliser, il vaudrait mieux s'en passer.
Il serait néanmoins possible de l'utiliser à l'aide de ce code :
VB:
Option Explicit
Private WithEvents CL As ComboBoxLiées
Private TCatég(), TTaill()

Private Sub UserForm_Initialize()
Dim TE(), LE&, C&, LMax&, LS&
Set CL = CBxL.Création.ComboBoxLiées
TE = Feuil2.UsedRange.Value
For LE = 1 To UBound(TE, 1)
   For C = 2 To UBound(TE, 2)
      If Not IsEmpty(TE(LE, C)) Then LMax = LMax + 1
      Next C, LE
ReDim TCatég(1 To LMax, 1 To 1), TTaill(1 To LMax, 1 To 1)
For LE = 1 To UBound(TE, 1)
   For C = 2 To UBound(TE, 2)
      If Not IsEmpty(TE(LE, C)) Then
         LS = LS + 1: TCatég(LS, 1) = TE(LE, 1): TTaill(LS, 1) = TE(LE, C)
         End If: Next C, LE
CL.Add ComboBox1
CL.Add ComboBox2
CL.CorrespRequise = True
CL.Actualiser
End Sub

Private Sub CL_SujBdDPersoSVP(ByVal CBM As CBxL.ComboBoxMmbr)
If CBM.CBx Is Me.ComboBox1 Then
   CBM.SujetBdD = SujetCbx(TCatég)
Else
   CBM.SujetBdD = SujetCbx(TTaill)
   End If
End Sub
Important: supprimez la valeur de RowSource de ComboBox1 sinon ça fait un "Permission refusée"
 
Dernière édition:
Si vous ne voulez supprimez le RowSource de ComboBox1,
ni pouvoir choisir la taille avant la catégorie,
et que le nombre de tailles pour chaque est toujours de 5,
je suppose que ceci suffirait :
VB:
Private Sub ComboBox1_Change()
ComboBox2.List = WorksheetFunction.Transpose(Feuil2.[B1:F2].Rows(ComboBox1.ListIndex + 1))
End Sub
 
- 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

  • Question Question
Autres Code VBA
Réponses
11
Affichages
253
Réponses
40
Affichages
1 K
Réponses
5
Affichages
185
Réponses
8
Affichages
102
Réponses
9
Affichages
202
Réponses
15
Affichages
673
Réponses
7
Affichages
186
Retour