"VBA: avoir un macro  qui m'aiderais à afficher/masquer"

mawur Messages postés 1 Date d'inscription mercredi 17 juillet 2024 Statut Membre Dernière intervention 17 juillet 2024 - 17 juil. 2024 à 15:37
danielc0 Messages postés 1091 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 30 août 2024 - 17 juil. 2024 à 17:57

salut et désolé du dérangement

je suis trèèèèèèèèèèès novice en langage VBA .  j'aimerais un macro  qui m'aiderais à afficher/masquer une ligne selon la valeur d'une liste déroulante.

je m'explique

j'ai une liste déroulante en "L12" et des données par Recherchev dans les cellules "C29:C32"

j'aimerai que pour une valeur "x" de L12 si une cellule entre "C29:C32" est vide ("") alors que la ligne en question soit masquer 

mais quand pour une valeur de "y" que la macro tienne compte des nouvelles données et affiche le(s) ligne(s) masqué au cas ou celles-ci ne sont pas vide et ainsi de suite 

j'utilisais le code que voici mais hélas 

Sub Masque_lig()
Application.ScreenUpdating = False
Dim cellule As Range
For Each cellule In Range("C29:C32")
If cellule.Value = "" Then
cellule.EntireRow.Hidden = True
Else
cellule.EntireRow.Hidden = False
End If
Next cellule
End Sub

prière m'aider.

1 réponse

danielc0 Messages postés 1091 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 30 août 2024 122
Modifié le 17 juil. 2024 à 17:59

Bonjour,

Mets cette macro dans le module de la feuille (pas dans un module standard) :

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$L$12" Then
    Application.EnableEvents = False
    If Target = "x" Then
      For Each cellule In Range("C29:C32")
        If cellule.Value = "" Then
          cellule.EntireRow.Hidden = True
        End If
      Next cellule
    ElseIf Target = "y" Then
      For Each cellule In Range("C29:C32")
        If cellule.Value = "" Then
          cellule.EntireRow.Hidden = False
        End If
      Next cellule
    End If
    Application.EnableEvents = True
  End If
End Sub

Daniel


0