Liste déroulante conditionnée à la coche de plusieurs checkboxes

Bonjour à tous,
Je débute en programmation: voici mon problème:
J’ai 3 checkboxes et deux comboboxes. à chaque fois que l’on modifie les checkboxes:
1 Lorsqu’on coche les 3 checkboxes, un menu unique apparait dans la combobox appelé CboTypologie et un menu apparait dans la seconde combobox appelé CboDetail.
2 Lorsqu’on coche une ou deux checkboxes sur les trois alors une autre liste apparait dans la combobox CboTypologie et en fonction du choix fait, une liste déroulante en cascade doit apparaitre dans CboDetail.
3 Lorsqu’aucune case n’est cochée les comboboxes restent vides.
4 Enfin, lorsque les choix sont fait dans Cbotypologie et Cbodetail, une boite Txt affiche un score.
Pour l’instant, dans mon formulaire l’ensemble fonctionne à l’exception la partie 2. La Cbodetail reste désespérément vide dans le cas 2.
voici le code: j’ai mis entre étoiles la partie qui me pose problème mais je vois pas ce qui cloche. un peu d’aide me serait bien utile !

Partie 1,2 et 3

Private Sub ChkRenOeu_Click()
ModifierFonction
End Sub

Private Sub ChkAcCo_Click()
ModifierFonction
End Sub

Private Sub ChkPratique_Click()
ModifierFonction
End Sub

Sub ModifierFonction()
’ 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
   
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
’ Ajouter les éléments du tableau Typo2 à la combobox Cbotypologie en utilisant une boucle
For Each cell In Worksheets(« RefScore »).ListObjects(« Typo2 »).ListColumns(1).DataBodyRange
Cbotypologie.AddItem cell.Value
Next cell

' Activer la combobox Cbotypologie
Cbotypologie.Enabled = True

' Recherche de la valeur sélectionnée dans Cbotypologie dans le tableau Tabrecherche
Dim recherche As Range
Set recherche = Worksheets("RefScore").ListObjects("Tabrecherche").Range

' Chercher la valeur correspondante dans le tableau Tabrecherche
Dim valeurRecherche As Variant
valeurRecherche = Application.VLookup(Cbotypologie.Value, recherche, 1, False)

' Si la valeur est trouvée, afficher le nom du tableau correspondant dans CboDetail
If Not IsError(valeurRecherche) Then
    Dim nomTableau As String
    nomTableau = valeurRecherche.Offset(0, 1).Value
    Dim tableau As ListObject
    Set tableau = Worksheets("RefScore").ListObjects(nomTableau)
    
    ' Afficher les éléments du tableau correspondant dans la combobox CBoDetail
    For Each cell In tableau.ListColumns(1).DataBodyRange
        CBoDetail.AddItem cell.Value
    Next cell
    
    ' 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 If

End Sub

Partie 4

Private Sub CboDetail_Change()
’ Récupérer la valeur sélectionnée dans la combobox
Dim valeurRecherche As String
valeurRecherche = CBoDetail.Value

' Référence à la feuille "Refscore"
Dim feuille As Worksheet
Set feuille = ThisWorkbook.Sheets("Refscore")

' Référence au tableau "TableauCorrespondance" dans la feuille "Refscore"
Dim tableauCorrespondance As Range
Set tableauCorrespondance = feuille.Range("TableauCorrespondance")

' Rechercher la valeur dans le tableau
Dim ligneTrouvee As Range
Set ligneTrouvee = tableauCorrespondance.Find(What:=valeurRecherche, LookIn:=xlValues, LookAt:=xlWhole)

' Vérifier si la valeur a été trouvée
If Not ligneTrouvee Is Nothing Then
    ' Récupérer la valeur dans la colonne suivante sur la même ligne
    Dim valeurTrouvee As String
    valeurTrouvee = ligneTrouvee.Offset(0, 1).Value
    
    ' Afficher la valeur dans la textbox
    TxtEac.Value = valeurTrouvee
Else
    ' Valeur non trouvée, afficher 0 dans la textbox
    TxtEac.Value = 0
End If

End Sub

Bonsoir,
Sans fichier, on n’pourrait pas vous aider.

Et bien, je sais pas pour les autres mais j’arrive pas à l’voir dans vos lignes de code.
Will-Fread

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.