Bonjour,
à priori, c'est cette partie de code, que tu ne comprends pas :
If Range("A5:A" & Lig).SpecialCells(xlCellTypeVisible).Areas(1).Count > 1 Then
x = 6
Else
x = Range("A5:A" & Lig).SpecialCells(xlCellTypeVisible).Areas(2).Item(1).Row
End If
Comme déterminé un peu plus haut, dans le code, Lig est la dernière ligne remplie de ton tableau
Ensuite, on fait un filtre élaboré, filtrer sur place, et n'apparait que la ligne de la personne
Si la personne sélectionnée est la première de la liste, il n'y a donc qu'une seule Aire (Area) de visible, et la ligne en question est donc la 1 ère du tableau, soit la ligne 6
S'il s'agit d'une autre personne, on obtient donc 2 aires, la première étant la ligne de titre, et la deuxième, la ligne de la personne sélectionnée. Pour avoir le numéro de la ligne, on recherche le premier Item de la deuxième zone visible.
PS, pour le filtre élaboré :
Range("A5:U" & [A65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("A1:B2"), Unique:=False
la zone de critère (CriteriaRange) est dans mon fichier la zone A1 à B2
Si tu veux plus de critères (dans ton exemple, 5 : Nom, Prénom, Fonction, Service, Processus), étends la zone comme ceci :
Range("A5:U" & [A65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("A1:E2"), Unique:=False