Afficher/cacher lignes selon une double condition

Bonjour à tous,

Je suis en train de crée un configurateur et j'apprends à tâtons le VBA et après avoir déjà reçu de l'aide sur ce forum, je souhaiteras solliciter votre aide de nouveau s'il vous plait car je bloque de nouveau sur un problème de VBA

Dans le tableau en pièce jointe je souhaiterais que si dans la plage de valeurs comprise entre C7 et G7 il existe au moins une valeur = "Avec_Gaine_Plastique" ou = "Avec_Gaine_Métal"

Alors afficher les lignes 10 à 12

Sinon cacher les lignes 10 à 12

Ou expliqué différemment : si je sélectionne "Avec_Gaine_Plastique" ou "Avec_Gaine_Métal" dans le menu déroulant de l’une des cellules comprises entre C7 et G7, alors Afficher les lignes situées entre 10 à 12 sinon les cacher.

mais je n'y arrive pas

Grace à l'aide de ce forum, j'ai précédemment pu avoir le code ci-dessous qui m'avais beaucoup aidé pour une autre version de mon configurateur, mais ce code permet uniquement d’afficher les lignes si la valeur de la plage de cellules situées entre C7 et G7 est différente de « Sans_Gaine ».

Mais je n'arrive pas à l'adapter pour mon tableau actuel.

Private Sub Worksheet_Change(ByVal Target As Range)
'
If Not Intersect(Target, Range("C7:G7")) Is Nothing Then Rows("10:12").Hidden = IIf(WorksheetFunction.CountIf(Range("C7:G7"), "Sans_Gaine") = 5, True, False)
'
End Sub

Auriez-vous la possibilité de m'aider s'il vous plait ?

9config-tab-2.xlsm (14.83 Ko)

Bonjour Skud,

Ci-joint, ton document avec le code corrigé, j'ai essayé et cela fonctionne.

A voir,

Cordialement,

Bonjour,

Une solution :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range, Vis As Boolean
    If Not Intersect(Target, Me.Range("C7:G7")) Is Nothing Then
        For Each c In Me.Range("C7:G7")
            If c Like "Avec_Gaine*" Then Vis = True: Exit For
        Next c
        Me.Rows("10:12").Hidden = Not Vis
    End If
End Sub

Cordialement.

Bonjour Skud,

Voilà encore une autre proposition x)

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Range("C7") = "Avec_Gaine_Plastique" Then
Rows("10:15").Select
Selection.EntireRow.Hidden = False
Else
If Range("C7") = "Avec_Gaine_Métal" Then
Rows("10:15").Select
Selection.EntireRow.Hidden = False
Else
Rows("10:15").Select
Selection.EntireRow.Hidden = True
End If
End If
Range("C7").Select
Application.EnableEvents = True
End Sub

On reste à ta dispo

6pour-skud.xlsm (16.75 Ko)

Merci beaucoup à tous pour votre précieuse aide, cela fonctionne parfaitement comme je l’espérait

Bonne journée tout le monde

Salut Skud,

Salut l'équipe,

Private Sub Worksheet_Change(ByVal Target As Range)
'
If Not Intersect(Target, Range("C7:G7")) Is Nothing Then Rows("10:12").Hidden = IIf(WorksheetFunction.CountIf(Range("C7:G7"), "Avec_Gaine_*") > 0, False, True)
'
End Sub

A+

Rechercher des sujets similaires à "afficher cacher lignes double condition"