Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
NomTab = Target.ListObject 'on récupère le nom de la table dans laquelle on a cliqué
If NomTab = "" Then Exit Sub 'si on a cliqué hors de la table, on quitte
Set TS = ActiveSheet.ListObjects(NomTab) 'on définit la table sur laquelle on travaille
With TS
If Intersect(Target, .ListColumns(1).Range) Is Nothing Then Exit Sub 'on si a cliqué ailleurs que dans la colonne 1
lig = Target.Row - .Range.Row 'numéro de ligne à traiter
For j = 2 To .ListColumns.Count 'pour chaque colonne
.ListColumns(j).Range.EntireColumn.Hidden = (.DataBodyRange(lig, j) = "") 'on masque les colonnes vides
Next j
End With
End Sub