Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim PL As Range 'déclare la variable PL (PLage)
Dim NO As Integer 'déclare la variable NO (Nombre d'Occurrences)
Dim R As Range 'déclare la variable R (Recherche)
Dim PA As String 'déclare la variable PA (Première Adresse)
Dim X As Integer 'déclare la variable X (incrément)
Set PL = Range("W1:W" & Range("W" & Application.Rows.Count).End(xlUp).Row) 'définit la palge PL
'si la cellule sélectionnée ne se trouve pas dans une des cellules en colonne V adjacente à la plage PL ou si elle se trouve en ligne 1, sort de la procédure
If Application.Intersect(Target, PL.Offset(0, -1)) Is Nothing Or Target.Row = 1 Then Exit Sub
NO = Application.WorksheetFunction.CountIf(PL, Target.Offset(0, 1).Value) 'définit le nombre d'occurrences NO de la valeur adjacente (colonne W) à la cellule active dans la plage PL
Set R = PL.Find(Target.Offset(0, 1).Value, Range("W1"), xlValues, xlWhole) 'définit la recherche R (recherche la valeur de la cellule adjacente à la cellule active dans la plage PL)
If Not R Is Nothing Then 'condition 1 : si il existe au moins une occurrence trouvée
X = 0 'initialise X
PA = R.Address 'définit l'adresse de la premiere occurrence trouvée
Do 'exécute
X = X + 1 'incrémente x
If R.Row = Target.Row Then 'condition 2 : si la ligne de la cellule active est la même que la ligne de R
MsgBox Target.Offset(0, 1).Value & " " & X & "/" & NO 'message
Exit Sub 'sort de la procédure
End If 'fin de la condition 2
Set R = PL.FindNext(R) 'redéfinit la recherche R (occurrence suivante)
Loop While Not R Is Nothing And R.Address <> PA 'boucle tant qu'il existe de nouvelles occurrences ailleurs qu'en PA
End If 'fin de la condition 1
End Sub