Comparer deux champs avec 3 caractères consécutifs

Fermé
MaximeL54 Messages postés 3 Date d'inscription vendredi 20 février 2015 Statut Membre Dernière intervention 23 février 2015 - 20 févr. 2015 à 10:36
MaximeL54 Messages postés 3 Date d'inscription vendredi 20 février 2015 Statut Membre Dernière intervention 23 février 2015 - 23 févr. 2015 à 12:10
Bonjour à tous,

Je fais appel à vous car je suis bloqué.

J'utilise Access 2013.

J'ai deux tables différentes. Chacune de ces tables contient un champ comprenant des noms d'entreprises.

Mon objectif est de détecter les entreprises qui sont commumes aux deux tables. Le soucis est que ces tables ne proviennnent pas de mêmes sources et les champs sont rarement identiques.
C'est pourquoi, je souhaiterais trouver une méthode permettant d'obtenir les champs à partir du moment où 3 caractères consécutifs sont identiques dans les 2 champs.

Un petit exemple pour que vous visualisés bien le problème :
Table 1 : Champ 1: SCARA
Champ 2 : HUNTSMAN_SCIENCES_SURFACE_FRANCE
Champ 3 : ALPHAGLASS
Champ 4 : ARC_INTERNATIONAL
Champ 5 : CAVAP

Table 2 : Champ 1 : SCARA_Vilette_sur_Aube
Champ 2 : HUNTSMAN_SURFACE_SCIENCES_FRANCE
Champ 3 : EX_SAVERGLASS_ALPHAGLASS
Champ 4: ENTREPRISE_ARC_INTERNATIONAL_FRANCE
Champ 5 : COOP_AGRIC_CAVAP_VILLENEUVE_ARCHEVEQUE

(tous ces champs doivent être mis en relation)

J'accepte aussi d'autres méthode tant qu'elle marche.

Merci d'avance
A voir également:

2 réponses

MaximeL54 Messages postés 3 Date d'inscription vendredi 20 février 2015 Statut Membre Dernière intervention 23 février 2015
23 févr. 2015 à 09:07
Il y a t-il une solution personne ne sait si celà est réalisable ?

Corialement
0
Si, c'est réalisable. Tout est faisable, il suffit d'y consacrer suffisament de temps et d'énergie. Malehureusement, on n'a pas toujours le temps de tout faire....

Je ne vois pas immédiatement de solution évidente. Je vois comment faire avec des boucles en VBA mais ce sera lourd et lent.
Voici une solution imaginable :

étape 0:
Si cela n'existe pas encore, créer un identifiant unique pour chaque nom d'entreprise dans chaque table (numéro de client par exemple)

étape 1 : créer une nouvelle copie de la table2 en ordonnant les noms d'entrprise par order alphabetique et en ajoutant un champ (booléen par exemple).

étape 2 :
Créer une Sub/fonction en VBA avec des boucles. Cette Sub va lire la table1 de la première à la dernière ligne. Pour chaque ligne, extraire le 3 (ou 4 ou 5) premiers caractères.

étape 3:
lire la nouvelle table2 de la première à la dernière ligne. Pour chaque ligne extraire les 3 (ou 4 ou 5) premiers caractères et le comparer au 3 (ou4 ou 5) caractères de la table1.

étape 4:
Si ces caractères sont identiques, alors on a un match, on peut l'extraire et inscrire dans une nouvelle table les deux identifiants uniques. Passer à l'étape 8 puis 2.
Si ces caractères ne sont pas identiques, faire l'étape 5.

étape 5:
lires les caractères 2-3-4 ( ou 2-3-4-5 ou 2-3-4-5-6) de la table2. Faire l'étape 4 à nouveau jusqu'à la fin du nom d'entreprise.

étape 6:
un fois arrivé en bout de chaine sur la table 2 et si on a toujours pas de match, lire les caractères 2-3-4 (ou 2-3-4-5 ou 2-3-4-5-6...) du nom d'entreprise de la table1 et reprendre à l'étape 3.

étape 7:
si le un match a été trouvé retirer de la table2 l'entreprise déjà trouvée. Cela permettra de gagner du temps.

étape 8 :
Passer à la ligne suivante dela table1. Reprendre à l'étape 2.

Ce sera lent....
commencez par comparer les chaines de caractères les plus longues possibles (10 caractères) car c'est ce qui vous donnera la meilleure qualité d'équivalence.
Puis recommencez avec des chaines plus courtes (9 caractères puis 8...)



Continuez à chercher. Il y a sûrement mieux.
0
MaximeL54 Messages postés 3 Date d'inscription vendredi 20 février 2015 Statut Membre Dernière intervention 23 février 2015
23 févr. 2015 à 12:10
Merci pour votre réponse, c'est en effet lourd à réaliser.
Je ne trouve malheureusement pas mieux pour le moment.
0