VBA Liste déroulantes sous cellule Excel

Hello les Excel-VBA Master !

Je suis là pour solliciter votre aide pour m'aider à résoudre mon problème et je vous remercie d'avance.

Mon problème : Je souhaite créer une liste déroulante en vba dans une cellule Excel en fonction de la valeur sélectionnée dans une liste liste déroulante. J'ai réussi à créer la liste déroulante en vba mais le problème c'est que cette liste déroulante créée en vba bloque toutes les autres listes déroulantes (mises en place via l'outil "data validation") de la feuille Excel. C'est-à-dire que quand je veux cliquer sur une autre liste déroulante ou tout autre cellule, ça marche pas et le curseur vient automatiquement sur la liste déroulante VBA.

Voici le code:

If Range("B8").Value = "Legumes" Then

Range("B16").Select

With Selection.Validation

.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="Pommes, bananes, poires"

.IgnoreBlank = False

.InCellDropdown = True

.InputTitle = ""

.ErrorTitle = ""

.InputMessage = ""

.ErrorMessage = ""

.ShowInput = True

.ShowError = True

End With

ElseIf Range("B8").Value = "Fruits" Then

Range("B16").Select

With Selection.Validation

.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="carottes, poireaux"

.IgnoreBlank = False

.InCellDropdown = True

.InputTitle = ""

.ErrorTitle = ""

.InputMessage = ""

.ErrorMessage = ""

.ShowInput = True

.ShowError = True

End With

ElseIf Range("B8").Value = "Féculents" Then

Range("B16").Select

With Selection.Validation

.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="Riz, pâtes"

.IgnoreBlank = False

.InCellDropdown = True

.InputTitle = ""

.ErrorTitle = ""

.InputMessage = ""

.ErrorMessage = ""

.ShowInput = True

.ShowError = True

End With

Else

Range("B16").Value = "Autres"

End If

Merci beaucoup !

Bonjour,

Une piste :

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Liste As String

    If Target.Address(0, 0) <> "B8" Then Exit Sub
    If Target.Count > 1 Then Exit Sub

    Select Case Range("B8").Value

        Case "Legumes": Liste = "carottes, poireaux"
        Case "Fruits": Liste = "Pommes, bananes, poires"
        Case "Féculents": Liste = "Riz, pâtes"
        Case Else: Liste = "Autres"

    End Select

    With Range("B16").Validation

        .Delete
        .Add xlValidateList, , , Liste

    End With

End Sub

Maintenant, il n'y a aucune raison pour que les autres listes de validation ne soient plus opérationnelles !

Merciiiii beaucoup !!! Vous êtes troop forts !

Rechercher des sujets similaires à "vba liste deroulantes"