Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Procédure privée : Worksheet_SelectionChange => s’exécute lorsque l’on déplace la sélection. Le paramètre 'utilisé renvoie l’adresse de la sélection et s’appelle Target
Dim Plg As Range, F As Worksheet
'Déclaration de variables : PLg de type plage de cellules et F de type Feuille (onglet)
Application.ScreenUpdating = False
'Suspend le rafraîchissement d’écran, ce qui permet de gagner du temps.
With Me
'En utilisant la feuille actuelle (onglet actuel) désigné par Me
Set Plg = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(3)(1, 2))
'On définit que la variable plage contient les cellules B2 à cellule correspondant à la dernière ligne de la feuille et 'colonne située juste à droite du 3° groupe de colonnes utilisé.
End With
'Fin d’utilisation de Me
If Not Intersect(Target, Plg) Is Nothing Then
'Si Target renvoie une cellule contenue dans la zone affectée à Plg
On Error Resume Next
'Gestion d’erreurs : En cas d’erreur, on reprend à l’instruction suivante
Sheets(Target.Value).Visible = Not Sheets(Target.Value).Visible
'Si la feuille (l’onglet) dont le nom est contenu dans la cellule sélectionnée au début de la macro est visible, alors 'on la masque. Si elle est masquée, on la rend visible.
Me.Range("$A$1").Select
'On sélectionne la cellule A1
End If
'Fi de la condition Si
If Target.Address = "$J$2" Then
'Si l’adresse de la cellule sélectionnée qu début de la macro est $I$2, alors on applique les instructions si dessous
For Each F In Worksheets
'Pour chaque feuille du fichier
If F.Name <> Me.Name Then F.Visible = False
'Si le nom de la feuille est différent du nom de la feuille sélectionnée alors on masque la feuille en question.
Next F
'On passe à la feuille suivante
Me.Range("$A$1").Select
'On sélectionne la cellule $A$1
End If
'Fin de la condition Si
If Target.Address = "$J$4" Then
'Si l’adresse de la cellule sélectionnée qu début de la macro est $I$4, alors on applique les instructions si dessous
For Each F In Worksheets
'Pour chaque feuille du fichier
F.Visible = True
'On rend la feuille visible
Next F
'On passe à la feuille suivante
Me.Range("$A$1").Select
'On sélectionne la cellule $A$1
End If
'Fin de la condition Si
End Sub
'Fin de la procédure