comparaison de noms+prenoms avec résultats multiples

beleb

XLDnaute Nouveau
Bonjour,

Je contacte la communauté après avoir passé un bon nombre d'heures à faire des recherches et essais divers. Je me débrouille en macros et patouille en VBA mais là, je dois dire que ça coince dur et vu que ça urge, vous êtes mon dernier espoir! :(

Pour la faire court, j'ai 2 listes de noms et prénoms. La première est une liste de noms et prénoms troncaturés avec des *. La seconde est une liste simple de noms et prénoms.
Mon objectif est de tester chaque ligne de la première liste en effectuant une recherche par nom et prénom dans la seconde liste et de récupérer la ou les références de lignes pour lesquels la recherche s'est avérée positive...

Mes difficultés proviennent majoritairement des troncatures, de la comparaison de 2 tableaux de 2 colonnes et surtout, des résultats multiples (la fonction equiv ne ramène que la première référence trouvée).
Merci d'avance à tous pour l'aide que vous pourrez m'apporter...
 

ROGER2327

XLDnaute Barbatruc
Re : comparaison de noms+prenoms avec résultats multiples

Bonjour beleb
Ca ne va pas être facile de vous aider sans avoir un échantillon de données (de préférence celles qui posent le plus de problèmes), et, pour ces données, le résultat souhaité...​
Bon courage.
ROGER2327
#2032
 

beleb

XLDnaute Nouveau
Re : comparaison de noms+prenoms avec résultats multiples

Re,

Vous avez tout à fait raison.
Je vous joins un fichier à titre d'exemple.
La première liste se trouve sur les colonnes A et B de la feuille 1 et la seconde sur les colonnes A et B de la feuille 2.
La colonne C de la feuille 1 affiche les résultats que je voudrais obtenir, à savoir la ou les lignes pour lesquelles la comparaison s'est révélée positive...
 

Pièces jointes

  • exemple.xls
    14.5 KB · Affichages: 96
  • exemple.xls
    14.5 KB · Affichages: 98
  • exemple.xls
    14.5 KB · Affichages: 98

ROGER2327

XLDnaute Barbatruc
Re : comparaison de noms+prenoms avec résultats multiples

Re...
Je ne sais pas faire ça avec les formules intégrées, mais voici deux fonctions personnalisées :
Code:
[COLOR="DarkSlateGray"]Function toto(cel As Range)
Dim oDat, i As Long
   Application.Volatile
   oDat = Range("DATA").Value '"DATA" est la plage de données de la feuille "Feuil2"
   For i = LBound(oDat, 1) To UBound(oDat, 1)
      If LCase(oDat(i, 1)) Like LCase(cel.Item(1).Value) And LCase(oDat(i, 2)) Like LCase(cel.Item(2).Value) Then toto = toto & i & ", "
   Next i
   If IsEmpty(toto) Then toto = "#N/A" Else toto = Left$(toto, Len(toto) - 2)
End Function

Function tata(cel As Range)
Dim oCel As Range, x
   Application.Volatile
   For Each oCel In Range("DATA").Rows
      x = oCel.Value2
      If LCase(x(1, 1)) Like LCase(cel.Item(1).Value) And LCase(x(1, 2)) Like LCase(cel.Item(2).Value) Then tata = tata & oCel.Row & ", "
   Next oCel
   If IsEmpty(tata) Then tata = "#N/A" Else tata = Left$(tata, Len(tata) - 2)
End Function[/COLOR]
L'argument "cel" est une plage de deux cellules de la même ligne. Dans votre classeur A1:B1, par exemple.
J'ai nommée "DATA" la plage de données de la feuille "Feuil2".
Ces deux fonctions font la même chose. Voir sur de grosses quantités de données si leur rapidité est la même.
Voyez si vous pouvez tirer quelque chose de tout ça.​
ROGER2327
#2035
 

Pièces jointes

  • beleb_2035.zip
    7.4 KB · Affichages: 49

Discussions similaires

Réponses
17
Affichages
1 K

Statistiques des forums

Discussions
312 684
Messages
2 090 916
Membres
104 697
dernier inscrit
Pierrot Hubert