{Access} correspondance entre 2 tables champ non i

Fermé
mathieubec Messages postés 4 Date d'inscription vendredi 19 février 2010 Statut Membre Dernière intervention 20 février 2010 - 19 févr. 2010 à 19:42
 mathieubec - 22 févr. 2010 à 16:17
Bonjour,

Sur une base de données propriété industrielle, j'ai 2 tables dans lesquelles j'ai un champs entreprise (dans chacune des tables). Je souhaite rechercher les entreprises commune à ces 2 tables. Le problème est que, bien que les entreprises soient les mêmes (dans la réalité industrielle), leur nom dans ces 2 champs ne sont pas forcément exactement les mêmes (par exemple : total peut devenir Total SA....) ce qui me pose un grand problème sachant que j'ai plusieurs milliers d'entreprises et que je souhaiterais donc automatiser une correspondance en recherchant les caractères commun entre ces 2 champs qui me permettraient de penser que les entreprises sont bien les mêmes.

Par exemple : Total (dans mon champ entreprise de la 1ère table), une fonction du type "si tu trouves TOTAL dans la chaîne de caractère de mon champ entreprise de la 2ème Table) alors faire la correspondance comme si il s'agissait de la même chaîne.

Et j'aimerais faire cela pour toutes mes entreprises des deux tables sans que j'ai à lui préciser le nom à rechercher mais plutôt "si tu trouves 5 caractères consécutifs dans la premier table et dans la seconde sur le champ entreprise" par exemple.

Est ce clair ? j'en suis pas certain

merci pour tout
A voir également:

9 réponses

blux Messages postés 26536 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 décembre 2024 3 317
19 févr. 2010 à 21:01
Salut,

c'est clair, mais c'est complexe et ça peut prendre plusieurs heures de traitement...
0
mathieubec Messages postés 4 Date d'inscription vendredi 19 février 2010 Statut Membre Dernière intervention 20 février 2010
19 févr. 2010 à 22:10
merci pour votre réponse

quelle serait alors la démarche à suivre
0
blux Messages postés 26536 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 décembre 2024 3 317
20 févr. 2010 à 10:26
Idéalement lire une ligne de la table 1, extraire l'info pertinente et lire ensuite toutes les lignes de la table 2, pour voir si on trouve une correspondance.

Ce qui fait qu'au total on aura fait un produit cartésien : lignes de la table 1 x lignes de la table 2...

Le principal problème sera de trouver à quel moment on trouve une information pertinente dans la table 1.
0
mathieubec Messages postés 4 Date d'inscription vendredi 19 février 2010 Statut Membre Dernière intervention 20 février 2010
20 févr. 2010 à 11:04
je vois bien ce que vous voulez dire. Dans ce contexte, quelles seraient les fonctions ou programmation à prévoir pour réaliser cette opération.

merci pour votre aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blux Messages postés 26536 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 décembre 2024 3 317
20 févr. 2010 à 11:12
Parcours des tables avec un recordset et comparaison en VBA...

Extraction avec des fonctions de chaine : str, mid,...
0
mathieubec Messages postés 4 Date d'inscription vendredi 19 février 2010 Statut Membre Dernière intervention 20 février 2010
20 févr. 2010 à 11:58
Pourrais tu être me donner un exemple pour que je puisse mieux comprendre (sur la base de Total , Total SA par exemple). Si je comprends bien il va falloir que je créé une macro en VBA.

Par contre tu parles d'extraction, mais je ne souhaite pas vraiment extraire une chaîne de caractère semblable aux 2 tables mais plutôt voir si une partie de la chaîne de la table 1 et identique à une partie de la chaîne de la table 2 pour les 2 champs étudiés (en l'occurrence entreprise).

Merci pour le temps accordé
0
blux Messages postés 26536 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 décembre 2024 3 317
22 févr. 2010 à 10:12
Je vais me pencher sur le sujet, mais pas pour l'instant...
0
blux Messages postés 26536 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 décembre 2024 3 317
22 févr. 2010 à 15:30
Un peu de code qui recherche les 5 premiers caractères d'une chaine dans la totalité d'une autre présente dans une autre table.

Table1 contient le champ 'nom1', Table2 contient le champ 'Nom2' et on recherche si les 5 premiers caractères de Nom1 sont présents dans Nom2 (en les forçant en majuscules pour la comparaison).

Private Sub Bout_Rech_Click()
Dim Rs1 As DAO.Recordset
Dim Rs2 As DAO.Recordset
Dim Str1 As String
Dim Trouve As Integer
Set Rs1 = CurrentDb.OpenRecordset("Table1")
Set Rs2 = CurrentDb.OpenRecordset("Table2")
Rs1.MoveFirst
While Not Rs1.EOF
    Str1 = UCase(Left(Rs1!Nom1, 5))
    Rs2.MoveFirst
    While Not Rs2.EOF
        Trouve = 0
        Trouve = InStr(1, UCase(Rs2!nom2), Str1)
        If Trouve <> 0 Then
            MsgBox "Trouvé " & Rs1!Nom1 & " dans " & Rs2!nom2
        End If
        Rs2.MoveNext
    Wend
    Rs1.MoveNext
Wend
Set Rs1 = Nothing
End Sub

Ca peut donner un début.
0
merci, je regarde cela et reprend contact avec toi dès que possible

merci encore
0