Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

recherche sur 2 fichiers avec 3 critères

2 réponses
Avatar
ptck
bonjour,

J'ai un fichier A avec des 3 colonnes de nom, ville, code postal.
un autre fichier B avec 4 colonnes de code, nom, ville, code postal

je voudrais dans le premier fichier mettre le code correspondant au
nom uniquement si les 3 critères : nom, ville, code postal, entre les 2
fichiers sont vrais.

pour corser:

Dans Le fichier A les noms ne sont pas exatement les mêmes que dans le
fichier B
je peux avoir un nom coupé (peut-on demander si 4 ou 5 lettres ou plus
correspondent, accepter la validation sur le nom)

j'ai essayer recherche equiv avec si , mais une macro surtout si je peux
demander un nombre de caractères identiques dans les colonnes "nom". Mais
voilà cette macro là ??? !!!!.

à ceux à qui ça ne fait pas peur

merci

2 réponses

Avatar
chrisn
"ptck" a écrit dans le message de news:

je voudrais dans le premier fichier mettre le code correspondant
au

nom uniquement si les 3 critères : nom, ville, code postal, entre
les 2

fichiers sont vrais.

Pour qu'une telle recherche marche ave index/equiv, commencez par

concatener
codepostal + ville + nom dans une nouvelle colonne dans les deux
tableaux.

pour corser:

Dans Le fichier A les noms ne sont pas exatement les mêmes que
dans le

fichier B
je peux avoir un nom coupé (peut-on demander si 4 ou 5 lettres ou
plus

correspondent, accepter la validation sur le nom)

Oui, bien sûr, en utilisant la fonction gauche(nom,5) dans la

concatenation. par contre cela vous causera d(autre problèmes : nom
inférieur à 5 lettres, homonynie sur les 5 premières lettres...
S'il s'agit d'une transcription qui doit être unique, vous avez
intérêt à commencer par faire la première recherche (identité sur le
nom complet) et à filtrer le résultat pour continuer une recherche
ensuite sur 5 ou 4 lettres, après avoir vérifier qu'il ne vous reste
pas de doublon au niveau des noms réduits. (tri avec suppression des
doublons doit vous donner le même nombre de ligne que le fichier
original)


--
chrisn
mettre le bon fai, libertysurf pour me répondre

Avatar
AV
Avec dans le fichier B (nommé "FichierB") les plages nommées :
"CodeFichierB" ; "NomFichierB" ; "VilleFichierB" ; "CPFichierB"
Dans ton fichier A :
En A1 un Nom, en B1 une ville et en C1 un Code Postal
Pour récupérer en D1 le code correspondant s'il y a cohérence entre les 4
premières lettres du nom ET le nom de la ville ET le code postal pour la liste
contenue dans "FichierB" (c'est ta question)
=INDEX(FichierB.xls!CodeFichierB;EQUIV(GAUCHE(A1;4)&B1&C1;GAUCHE(FichierB.xls!No
mFichierB;4)&FichierB.xls!VilleFichierB&FichierB.xls!CPFichierB;0))
Si le fichier "FichierB" est fermé, il faudra préciser le chemin d'accès
Ca pourrait donner quelque chose comme ça :

=INDEX('C:TEMPFichierB.xls'!CodeFichierB;EQUIV(GAUCHE(A1;4)&B1&C1;GAUCHE('C:T
EMPFichierB.xls'!NomFichierB;4)&'C:TEMPFichierB.xls'!VilleFichierB&'C:TEMPF
ichierB.xls'!CPFichierB;0))

Si tu veux gérer l'erreur déclenchée par le EQUIV en cas de non correspondance
des valeurs cherchées :
Avec le fichier "FichierB" ouvert :
=SI(ESTNUM(EQUIV(GAUCHE(A1;4)&B1&C1;GAUCHE(FichierB.xls!NomFichierB;4)&FichierB.
xls!VilleFichierB&FichierB.xls!CPFichierB;0));INDEX(FichierB.xls!CodeFichierB;EQ
UIV(GAUCHE(A1;4)&B1&C1;GAUCHE(FichierB.xls!NomFichierB;4)&FichierB.xls!VilleFich
ierB&FichierB.xls!CPFichierB;0));"")
Avec le fichier "FichierB" fermé :
=SI(ESTNUM(EQUIV(GAUCHE(A1;4)&B1&C1;GAUCHE('C:TEMPFichierB.xls'!NomFichierB;4)
&'C:TEMPFichierB.xls'!VilleFichierB&'C:TEMPFichierB.xls'!CPFichierB;0));INDE
X('C:TEMPFichierB.xls'!CodeFichierB;EQUIV(GAUCHE(A1;4)&B1&C1;GAUCHE('C:TEMPF
ichierB.xls'!NomFichierB;4)&'C:TEMPFichierB.xls'!VilleFichierB&'C:TEMPFichie
rB.xls'!CPFichierB;0));"")

Si tu veux tester les X (au lieu de 4) premières lettres du nom, remplace, dans
les 2 fonctions GAUCHE le 4 par X !

PS : toutes les formules indiquées doivent être validées sous forme matricielle
: Ctrl+maj+entrée
PSbis : tu peux faire l'économie des longues formules (pour cause de test
d'erreur) en utilisant un format conditionnel
Exemple pour D1 : format --> mise en forme conditionnelle --> la formule est :
=ESTNA(D1) --> police de la même couleur que le fond --> OK

AV

"ptck" a écrit dans le message news:

bonjour,

J'ai un fichier A avec des 3 colonnes de nom, ville, code postal.
un autre fichier B avec 4 colonnes de code, nom, ville, code postal

je voudrais dans le premier fichier mettre le code correspondant au
nom uniquement si les 3 critères : nom, ville, code postal, entre les 2
fichiers sont vrais.

pour corser:

Dans Le fichier A les noms ne sont pas exatement les mêmes que dans le
fichier B
je peux avoir un nom coupé (peut-on demander si 4 ou 5 lettres ou plus
correspondent, accepter la validation sur le nom)

j'ai essayer recherche equiv avec si , mais une macro surtout si je peux
demander un nombre de caractères identiques dans les colonnes "nom". Mais
voilà cette macro là ??? !!!!.

à ceux à qui ça ne fait pas peur

merci