Masquer colonne d'une feuille a partir cellule d'une autre feuille

Bonjour,

Comme indiqué en objet je souhaiterais pouvoir masquer des colonnes d'une feuille en fonction d'une cellule d'une autre feuille.

Exemple :

Si Feuil1, A2 = Oui

alors Feuil2 = masquer colonnes J à M

Si Feuil1, A3 = Non

alors Feuil2 = masquer colonnes N à Q

J'ai trouvé ceci (source : Cacher une colonne en fonction d'une cellule extérieure (excel-pratique.com) )qui marche parfaitement sur la même feuille, mais je ne sais pas comment faire pour masque les colonnes d'une autre feuille.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Application.Intersect(Target, Range("a2")) Is Nothing Then
        Application.ScreenUpdating = False
        Range("b:BC").EntireColumn.Hidden = False 'affiche tout

    '*** masque les colonnes indiquées ****
        If Target = 8 Then End
        If Target = 7 Then Range("AZ:BC").EntireColumn.Hidden = True
        If Target = 6 Then Range("AV:BC").EntireColumn.Hidden = True
        If Target = 5 Then Range("AR:BC").EntireColumn.Hidden = True
        If Target = 4 Then Range("AN:BC").EntireColumn.Hidden = True
        If Target = 3 Then Range("AJ:BC").EntireColumn.Hidden = True
        If Target = 2 Then Range("AF:BC").EntireColumn.Hidden = True
    End If
End Sub

Pourriez-vous m'aider svp ?

Bonjour,

En feuille2,

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Sheets("Feuil1").Range("A2") = "Oui" Then
        Sheets("Feuil2").Columns("J:M").Hidden = True
    Else
        Sheets("Feuil2").Columns("J:M").Hidden = False
    End If
    If Sheets("Feuil1").Range("A3") = "Non" Then
        Sheets("Feuil2").Columns("N:Q").Hidden = True
    Else
        Sheets("Feuil2").Columns("N:Q").Hidden = False
    End If
End Sub

Waouh quel rapidité Thrrybo, merci !

J'allais répondre qu'en tâtonnant j'ai fini par trouver quelque chose qui fonctionnait :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Application.Intersect(Target, Range("F9")) Is Nothing Then
        Application.ScreenUpdating = False

    '*** masque les colonnes indiquées ****
        If Target = "Non" Then Sheets("Feuil2").Range("J:M").EntireColumn.Hidden = True
        If Target = "Oui" Then Sheets("Feuil2").Range("J:M").EntireColumn.Hidden = False
        If Target = "Sélectionner votre choix" Then Sheets("Feuil2").Range("J:M").EntireColumn.Hidden = False

    ElseIf Not Application.Intersect(Target, Range("F10")) Is Nothing Then
        Application.ScreenUpdating = False

    '*** masque les colonnes indiquées ****
        If Target = "Non" Then Sheets("Feuil2").Range("N:Q").EntireColumn.Hidden = True
        If Target = "Oui" Then Sheets("Feuil2").Range("N:Q").EntireColumn.Hidden = False
        If Target = "Sélectionner votre choix" Then Sheets("Feuil2").Range("N:Q").EntireColumn.Hidden = False
    End If
End Sub

Je n'ai pas pu tester ta solution mais merci quand même !

Bonjour,

Suite à ce code, mon fichier a un peu évolué, désormais, la valeur de la cellule F9 dans Feuil1 est issu d'une formule, et le code ne fonctionne plus.

Comment faire pour que le code "lise" la valeur de la cellule et non la formule svp ?

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Application.Intersect(Target, Range("F9")) Is Nothing Then
        Application.ScreenUpdating = False

    '*** masque les colonnes indiquées ****
        If Target = "Non" Then Sheets("Feuil2").Range("J:M").EntireColumn.Hidden = True
        If Target = "Oui" Then Sheets("Feuil2").Range("J:M").EntireColumn.Hidden = False
        If Target = "Sélectionner votre choix" Then Sheets("Feuil2").Range("J:M").EntireColumn.Hidden = False

    ElseIf Not Application.Intersect(Target, Range("F10")) Is Nothing Then
        Application.ScreenUpdating = False

    '*** masque les colonnes indiquées ****
        If Target = "Non" Then Sheets("Feuil2").Range("N:Q").EntireColumn.Hidden = True
        If Target = "Oui" Then Sheets("Feuil2").Range("N:Q").EntireColumn.Hidden = False
        If Target = "Sélectionner votre choix" Then Sheets("Feuil2").Range("N:Q").EntireColumn.Hidden = False
    End If
End Sub

Bonsoir,

Prenez le code que je vous ai proposé et qui ale mérite d'être plus simple

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Sheets("Feuil1").Range("F9") = "Non" Then
        Sheets("Feuil2").Columns("J:M").Hidden = True
    Else
        Sheets("Feuil2").Columns("J:M").Hidden = False
    End If
    If Sheets("Feuil1").Range("F10") = "Non" Then
        Sheets("Feuil2").Columns("N:Q").Hidden = True
    Else
        Sheets("Feuil2").Columns("N:Q").Hidden = False
    End If
End Sub

Rechercher des sujets similaires à "masquer colonne feuille partir"