XL 2016 utilisation de la macro "worksheet_change" plusieurs fois dans la même feuille

jannine NOLAM

XLDnaute Nouveau
Bonjour tout le monde,

La macro suivante se situant sur la feuille 1, me permet de masquer la feuille 2 lorsque je choisis "Non" dans ma liste déroulante se situant en Q12 et de l'afficher lorsque je choisis "Oui".

VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim titre As Variant
titre = Range("Q12")

 
    If Not Intersect(Target, Range("Q12")) Is Nothing Then
        Select Case titre
            Case Is = "Oui"
                Sheets("titre").Visible = True
            Case Is = "Non"
                Sheets("titre").Visible = False
        End Select
    End If

End Sub

J'aimerais utiliser la même macro sur la même feuille, soit la feuille 1, mais j'aimerais qu'elle me permette de masquer la feuille 3 lorsque je choisis "Non" dans une nouvelle liste déroulante se situant en Q43 et d'afficher la feuille 3 lorsque je choisi "Oui" en Q44.

Pouvez vous m'aider s'il vous plaît ?

Merci d'avance pour votre aide.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Evidemment, vos feuilles s'appellent Titre1 et 2 et non Feuil2 et 3.
Il fallait adapter la macro comme ceci :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin
Dim titre As Variant
    If Not Intersect(Target, [Q12]) Is Nothing Then
        If LCase([Q12]) = "oui" Then: Sheets("Titre1").Visible = True: Else Sheets("Titre1").Visible = False
    End If
    If Not Intersect(Target, [Q43]) Is Nothing Then
        If LCase([Q43]) = "oui" Then Sheets("Titre2").Visible = True Else Sheets("Titre2").Visible = False
    End If
Fin:
End Sub
 

soan

XLDnaute Barbatruc
Inactif
@jannine NOLAM

ah ben oui ! c'est tout de suite plus clair avec un fichier ! :)

ton fichier en retour, avec une toute petite amélioration de présentation. ;)

code VBA de Feuil1 :

VB:
Option Explicit: Option Compare Text

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Address = "$Q$12" Then
      Worksheets("Titre1").Visible = (.Value = "Oui")
    ElseIf .Address = "$Q$43" Then
      Worksheets("Titre2").Visible = (.Value = "Oui")
    End If
  End With
End Sub

et finalement, c'était bien 2 "Oui" ! 😜

soan
 

Pièces jointes

  • Classeur1.xlsm
    16.3 KB · Affichages: 1

jannine NOLAM

XLDnaute Nouveau
Evidemment, vos feuilles s'appellent Titre1 et 2 et non Feuil2 et 3.
Il fallait adapter la macro comme ceci :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin
Dim titre As Variant
    If Not Intersect(Target, [Q12]) Is Nothing Then
        If LCase([Q12]) = "oui" Then: Sheets("Titre1").Visible = True: Else Sheets("Titre1").Visible = False
    End If
    If Not Intersect(Target, [Q43]) Is Nothing Then
        If LCase([Q43]) = "oui" Then Sheets("Titre2").Visible = True Else Sheets("Titre2").Visible = False
    End If
Fin:
End Sub
Merci beaucoup, j'ai reussi !!! ;)
Bonne soirée
 

jannine NOLAM

XLDnaute Nouveau
@jannine NOLAM

ah ben oui ! c'est tout de suite plus clair avec un fichier ! :)

ton fichier en retour, avec une toute petite amélioration de présentation. ;)

code VBA de Feuil1 :

VB:
Option Explicit: Option Compare Text

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Address = "$Q$12" Then
      Worksheets("Titre1").Visible = (.Value = "Oui")
    ElseIf .Address = "$Q$43" Then
      Worksheets("Titre2").Visible = (.Value = "Oui")
    End If
  End With
End Sub

et finalement, c'était bien 2 "Oui" ! 😜

soan
Surement ;p
Bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 847
dernier inscrit
Djigbenou