Créer une rechercheV avec correspondances multiples
Créer une rechercheV avec correspondances multiples - VB/VBA/VBS - Programmation
MarshPosté le 17-04-2014 à 11:06:12
Bonjour à tous,
Je travaille dans la comptabilité et suis souvent amené à faire des rapprochements entre deux bases de données. Pour gérer les correspondances multiples, ma méthode actuelle est de faire une recherchev et à côté un nb.si qui m'indique s'il y a plusieurs correspondances ou non. S'il y en a plusieurs, je vais les chercher manuellement.
Je voudrais m'épargner ce travail car lorsqu'on travaille sur des bases avec quelques milliers de lignes, ça prend la journée !
J'aimerais donc créer une fonction "RechercheVMultiple" qui me permettrait de faire sortir toutes les correspondances d'un coup !
Pour l'instant j'ai réussi à avoir ça :
En colonne E il y a la recherche V normale (=RECHERCHEV(D2;A:B;2;0) pour la cellule E2), en colonne F le résultat obtenu avec ma fonction :
Function recherchevmultiple(c) If Application.CountIf([A:A], c.Value) = 0 Then Resultat = "aucune correspondance" If Application.CountIf([A:A], c.Value) = 1 Then Resultat = Application.VLookup(c.Value, [A1:B10], 2, 0) If Application.CountIf([A:A], c.Value) > 1 Then Resultat = "plusieurs correspondances" recherchevmultiple = Resultat End Function
Comme vous pouvez le constater, je ne sais pas comment faire pour que ma fonction ait les mêmes arguments qu'une recherchev normale du coup je suis obligé de les rentrer en VBA. Idéalement, il faudrait que RechercheVMultiple demande le critère, la plage, le numéro de colonne à renvoyer avec toujours une correspondance exacte.
Enfin, en colonne G vous trouverez le résultat que je souhaite obtenir avec cette fonction.
Marsh Posté le 17-04-2014 à 11:06:12
Bonjour à tous,
Je travaille dans la comptabilité et suis souvent amené à faire des rapprochements entre deux bases de données.
Pour gérer les correspondances multiples, ma méthode actuelle est de faire une recherchev et à côté un nb.si qui m'indique s'il y a plusieurs correspondances ou non. S'il y en a plusieurs, je vais les chercher manuellement.
Je voudrais m'épargner ce travail car lorsqu'on travaille sur des bases avec quelques milliers de lignes, ça prend la journée !
J'aimerais donc créer une fonction "RechercheVMultiple" qui me permettrait de faire sortir toutes les correspondances d'un coup !
Pour l'instant j'ai réussi à avoir ça :
En colonne E il y a la recherche V normale (=RECHERCHEV(D2;A:B;2;0) pour la cellule E2), en colonne F le résultat obtenu avec ma fonction :
Function recherchevmultiple(c)
If Application.CountIf([A:A], c.Value) = 0 Then Resultat = "aucune correspondance"
If Application.CountIf([A:A], c.Value) = 1 Then Resultat = Application.VLookup(c.Value, [A1:B10], 2, 0)
If Application.CountIf([A:A], c.Value) > 1 Then Resultat = "plusieurs correspondances"
recherchevmultiple = Resultat
End Function
Comme vous pouvez le constater, je ne sais pas comment faire pour que ma fonction ait les mêmes arguments qu'une recherchev normale du coup je suis obligé de les rentrer en VBA. Idéalement, il faudrait que RechercheVMultiple demande le critère, la plage, le numéro de colonne à renvoyer avec toujours une correspondance exacte.
Enfin, en colonne G vous trouverez le résultat que je souhaite obtenir avec cette fonction.
Pouvez-vous m'aider ? Ce serait merveilleux !
Merci d'avance.