Checkboxes determinant des listes déroulantes en cascade

Bonjour à tous,

Je suis novice en programmation VBA (c'est mon premier VBA) et je tente de créer entre autre dans un formulaire les éléments suivant :

Il y a 3 Checkboxes ChkRenOeu, ChkAcCo et ChkPratique

2 comboboxes Cbotypologie et CboDetail et enfin une txt box

à chaque modification de l'une des checkboxes, on vérifie que

Cas 1: Si les 3 checkboxes sont cochées

alorsCboTypologie affiche la phrase suivante "action avec les 3 piliers de l'EAC", le tableau15 est chargé dans la CboDetail

Cas 2 : Si 1 ou 2 checkboxes sont cochées alors

alors CboTypologie affiche le tableau Typo2 et la combobox CboDetail est lié en cascade affichant les options du tableau correspondant au choix de CboTypologie.

Cas 3 Si 0 checkbox est cochée

alors les comboboxes restent vides et sont grisées.

Evenement: Lorsque une valeur est affichée dans la combobox CboDetail alors la txtbox affiche un score.

Ce score est récupéré dans le Tableau2 via Vlookup.

Vous trouverez plus bas ma tentative de code (tutoré par une AI). Il y a deux problèmes :

Le Cas 2 ne fonctionnent que partiellement: la combobox Cbo Detail reste vide sans afficher la liste déroulante en cascade (en rouge dans le code).

Aucune valeur ne s'affiche non plus dans la txtbox (en vert dans le code)...

Un peu d'aide serait la bienvenue... Merci à tous

Private Sub ChkRenOeu_Click()
UpdateComboboxes
End Sub

Private Sub ChkAcCo_Click()
UpdateComboboxes
End Sub

Private Sub ChkPratique_Click()
UpdateComboboxes
End Sub

Private Sub UpdateComboboxes()
' Désactiver les comboboxes
Cbotypologie.Enabled = False
CBoDetail.Enabled = False
' Effacer le contenu des comboboxes
Cbotypologie.Clear
CBoDetail.Clear
' Vérifier si les 3 checkboxes sont cochées
If ChkRenOeu.Value And ChkAcCo.Value And ChkPratique.Value Then
' Afficher la combobox Cbotypologie avec la valeur "Action avec les 3 piliers de l'EAC"
Cbotypologie.AddItem "Action avec les 3 piliers de l'EAC"
Cbotypologie.Value = "Action avec les 3 piliers de l'EAC"
' Afficher la combobox CboDetail avec le contenu du Tableau15
For Each cell In Worksheets("RefScore").ListObjects("Tableau15").ListColumns(1).DataBodyRange
CBoDetail.AddItem cell.Value
Next cell
' Activer les comboboxes
Cbotypologie.Enabled = True
CBoDetail.Enabled = True
Else
' Vérifier combien de checkboxes sont cochées
Dim count As Integer
count = IIf(ChkRenOeu.Value, 1, 0) + IIf(ChkAcCo.Value, 1, 0) + IIf(ChkPratique.Value, 1, 0)
If count > 0 Then
' Afficher la combobox Cbotypologie avec le contenu du tableau Typo2
For Each cell In Worksheets("RefScore").ListObjects("Typo2").ListColumns(1).DataBodyRange
Cbotypologie.AddItem cell.Value
Next cell
' Activer la combobox Cbotypologie
Cbotypologie.Enabled = True

' Afficher la combobox CboDetail en fonction du choix de Cbotypologie
CBoDetail.Enabled = True
Select Case Cbotypologie.Value
Case "Rencontre_artiste"
For Each cell In Worksheets("RefScore").ListObjects("Tableau15").ListColumns(1).DataBodyRange
CBoDetail.AddItem cell.Value
Next cell
Case "Spectacle"
For Each cell In Worksheets("RefScore").ListObjects("Tableau14").ListColumns(1).DataBodyRange
CBoDetail.AddItem cell.Value
Next cell
Case "Visite_patrimoniale"
For Each cell In Worksheets("RefScore").ListObjects("Tableau17").ListColumns(1).DataBodyRange
CBoDetail.AddItem cell.Value
Next cell
Case "Visite_équipement_culturel"
For Each cell In Worksheets("RefScore").ListObjects("Tableau18").ListColumns(1).DataBodyRange
CBoDetail.AddItem cell.Value
Next cell
End Select
' Activer la combobox CboDetail si au moins une option est disponible
'If CBoDetail.ListCount > 0 Then
' CBoDetail.Enabled = True
'End If
End If
End If

End Sub

Private Sub CboDetail1_Change()
Dim ws As Worksheet
Dim table As ListObject
Dim searchRange As Range
Dim searchValue As String
Dim result As String

' Référence à la feuille RefScore
Set ws = Worksheets("RefScore")

' Référence à la table Tableau2
Set table = ws.ListObjects("Tableau2")

' Référence à la colonne de recherche
Set searchRange = table.ListColumns(1).DataBodyRange

' Valeur de recherche
searchValue = CBoDetail.Value

' Recherche de la correspondance dans la colonne+1
result = Application.VLookup(searchValue, searchRange.Offset(0, 1), 1, False)

' Affichage du résultat dans la TextBox nommée TxtEac
TxtEac.Value = result

End Sub

Rechercher des sujets similaires à "checkboxes determinant listes deroulantes cascade"