Particularité de RechercheV
Lorsque l'on utilise la formule RechercheV, nous sommes sensés retrouver une valeur se situant à droite de la colonne de recherche. Or il est parfois utile d'obtenir une valeur se situant sur le bord gauche de cette matrice. De plus, ceci nous permettra d'étudier un nouveau cas de fonction personnelle.
L'exercice est simple, une liste de noms avec une cote à droite de chaque nom. Je désire savoir quelle est la personne qui a la cote la plus élevée parmi la liste (Noms en bleu). Si je veux utiliser la fonction RechercheV en cumul avec la fonction Max, je dois modifier la disposition de mes données (Noms en magenta), mais je n'y tiens pas car j'aimerais pouvoir ajouter des cotes sur la droite du tableau
Pour arriver à mon but, je me suis donc créé une petite macro dont voici le code à placer dans un module. C'est une simple boucle qui scrute la plage de cellules données comme paramètre dans la fonction. Elle opère une comparaison de valeur et permet de récupérer une valeur sur la gauche grâce au paramètre offset
Function CotePlusElevee(ad1 As Range) As String
Dim test As Integer
Dim c As Range
'Initialisation des valeurs
test = 0
CotePlusElevee = ""
'On crée la boucle
For Each c In ad1
If c > test Then
'On récupère le nom de la personne
CotePlusElevee = c.Offset(0, -1)
'On incrémente c pour tester la dernière valeur trouvée
test = c
End If
'Et on recommence jusque fin de la plage fixée
Next
End Function
Télécharger le fichier exemple CoteLaPlusElevee