Comment Faire Une Fonction Equiv Sous Vba

Ah, VBA... Le langage discret qui se cache derrière nos feuilles Excel, prêt à transformer des tâches fastidieuses en opérations quasi-magiques. On en parle peut-être moins que des langages comme Python ou JavaScript, mais croyez-moi, une fois qu'on l'a dompté, VBA devient un allié précieux. Aujourd'hui, on s'attaque à un défi particulier : recréer l'équivalent de la fonction EQUIV sous VBA. Accrochez-vous, on va décortiquer ça ensemble !
Mais, au fait, c'est quoi EQUIV ?
Pour ceux qui ne seraient pas familiers, la fonction EQUIV (MATCH en anglais) est un peu le détective d'Excel. On lui donne une valeur à chercher, une plage de cellules où fouiller, et elle nous renvoie la position de cette valeur dans la plage. Imaginez, c'est comme demander à un bibliothécaire où se trouve un livre spécifique sur une étagère – il vous indique le numéro de l'étagère (la position) et non le livre lui-même.
Par exemple, si dans la plage A1:A5, on a les valeurs {"Pomme", "Banane", "Orange", "Kiwi", "Mangue"} et qu'on cherche "Orange", la fonction EQUIV nous renverra 3, car "Orange" est la troisième valeur de la plage.
Must Read
Passons à l'action : Le code VBA
Alors, comment reproduire ça en VBA ? Voici une fonction simple et efficace :
Function EquivVBA(valeurRecherchée As Variant, plageRecherche As Range) As Variant
Dim i As Long
For i = 1 To plageRecherche.Rows.Count
If plageRecherche.Cells(i, 1).Value = valeurRecherchée Then
EquivVBA = i
Exit Function
End If
Next i
EquivVBA = CVErr(xlErrNA) 'Retourne #N/A si la valeur n'est pas trouvée
End Function
Décortiquons ce code :

- Function EquivVBA(valeurRecherchée As Variant, plageRecherche As Range) As Variant : C'est la déclaration de notre fonction. Elle prend en entrée la valeur à chercher (valeurRecherchée) et la plage de cellules où chercher (plageRecherche). Elle renvoie un Variant, ce qui permet de gérer les cas où la valeur n'est pas trouvée (on renverra une erreur Excel).
- Dim i As Long : On déclare une variable 'i' de type Long pour parcourir les lignes de la plage.
- For i = 1 To plageRecherche.Rows.Count : On boucle sur chaque ligne de la plage. plageRecherche.Rows.Count nous donne le nombre total de lignes.
- If plageRecherche.Cells(i, 1).Value = valeurRecherchée Then : C'est le cœur de la fonction. On vérifie si la valeur de la cellule courante (ligne 'i', colonne 1) est égale à la valeur recherchée. Notez le .Value, essentiel pour comparer les valeurs et non les références aux cellules.
- EquivVBA = i : Si on trouve la valeur, on affecte sa position (le numéro de la ligne 'i') à la fonction EquivVBA.
- Exit Function : On sort de la fonction dès qu'on a trouvé la valeur. Inutile de continuer à chercher !
- EquivVBA = CVErr(xlErrNA) : Si on arrive à la fin de la boucle sans trouver la valeur, on renvoie l'erreur Excel #N/A, comme le ferait la fonction EQUIV standard.
Comment utiliser cette fonction ?
C'est simple ! Ouvrez l'éditeur VBA (Alt + F11 dans Excel), insérez un nouveau module (Insertion > Module), et copiez-collez le code. Ensuite, vous pouvez utiliser la fonction directement dans votre feuille de calcul comme ceci :
=EquivVBA("Kiwi",A1:A5)

Si la plage A1:A5 contient {"Pomme", "Banane", "Orange", "Kiwi", "Mangue"}, cette formule renverra 4.
Améliorations possibles
Cette fonction est un bon point de départ, mais on peut l'améliorer :

- Gérer la recherche sur plusieurs colonnes : Modifier le code pour parcourir non seulement les lignes mais aussi les colonnes d'une plage plus large.
- Ajouter un argument pour le type de correspondance : Comme la fonction EQUIV, permettre une correspondance exacte (0), inférieure (1) ou supérieure (-1).
- Optimiser la performance : Pour les très grandes plages, envisager d'utiliser des méthodes de recherche plus rapides, comme la recherche binaire (si la plage est triée).
Un peu de culture Excel
Saviez-vous que la première version de Microsoft Excel est sortie en 1985 ? C'était une révolution pour l'époque, et même si les tableurs ont évolué depuis, les bases restent les mêmes. Et VBA, qui est apparu plus tard, a vraiment décuplé les possibilités d'automatisation.
Aujourd'hui, Excel (et VBA) sont utilisés dans tous les secteurs, de la finance à la logistique, en passant par le marketing. C'est un outil essentiel pour toute personne qui travaille avec des données.
En conclusion
Créer sa propre fonction EQUIV sous VBA, c'est bien plus qu'un simple exercice technique. C'est une façon de comprendre en profondeur comment fonctionnent les outils qu'on utilise au quotidien. C'est un peu comme apprendre à cuisiner son plat préféré au lieu de simplement le commander au restaurant : on gagne en autonomie et en satisfaction. Alors, n'hésitez pas à expérimenter, à modifier le code, et à vous approprier VBA. Vous serez surpris de ce que vous pouvez accomplir !
