[VBA-Excel] Joindre 2 tables

Joindre 2 tables [VBA-Excel] - VB/VBA/VBS - Programmation

Marsh Posté le 21-09-2006 à 13:29:42    


 
Bonjour,  
 
je voudrais joindre deux tables qui sont dans deux fichiers excel distincts en utilisant ADO sous VBA. Voila mon code qui marche pour importer des donnees sur une table simple:  
 
 
 
On Error Resume Next
 
Const adopenstatic = 3
Const adlockoptimistic = 3
Const adcmdtext = &H1
 
Dim query As String
Dim i As Long
Dim j As Integer
 
Set objConnection = CreateObject("ADODB.Connection" )
Set objRecordset = CreateObject("ADODB.Recordset" )
 
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & source & ";" & _
        "Extended Properties=""Excel 8.0;HDR=Yes;"";"
 
query = "Select * FROM [" & feuille & "$] where ENTETE_PAYS= 'FRANCE'"
 
objRecordset.Open query, objConnection, adopenstatic, adlockoptimistic, adcmdtext
 
 
 
J'ai besoin de cette jointure à plusieurs reprises pour extraire des informations d'une base de données sur des pays. Par exemple, j'ai dans un premier fichier la table:  
 
ENTETE_PAYS, NOM_PAYS, DIRECTION  
identifiant du pays, nom du pays, direction a gauche ou a droite  
 
et dans un deuxieme fichier la 2e table:  
 
ENTETE_REGION, ENTETE_PAYS  
identifiant de la region geographique, identifiant du pays  
 
et je souhaite avoir une table resultat  
 
ENTETE_REGION, ENTETE_PAYS, DIRECTION  
 
pour selectionner tous les pays qui ont la direction a droite dans la region Europe, et ensuite utiliser cette liste de pays pour afficher et comparer des informations économiques.  
 
J'ai beaucoup de fichiers avec des tables assez grosses et donc je ne peux pas les regrouper dans un seul fichier Excel.  
 
C'est essentiellement un probleme de syntaxe je suppose, car dans les exemples que je lis sur le net, il y a toujours une syntaxe du type [nomBase$].nomColonne d'utilisée pour les requetes sur des tables Access, que je n'arrive pas à transposer dans mon code pour tables excel qui lui est de type:  
 
Code:  
"Select * FROM [nomBase$] where nomColonne = 'L'"  
 
Voila, message un peu long parce que je bloque dessus depuis un moment. Merci à ceux qui pourront m'aider!  

Reply

Marsh Posté le 21-09-2006 à 13:29:42   

Reply

Marsh Posté le 21-09-2006 à 16:44:50    

Tu utilises 2 fichiers, donc tu as besoin de 2 « canaux de connexion » ADO/ODBC (je ne connais pas de moyen de faire autrement) et il n'est pas possible de faire une jointure entre des tables qui ne sont pas dispo dans le même « canal ».

Reply

Marsh Posté le 21-09-2006 à 17:27:46    

je te conseille de passer par access, là tu peux lier plusieurs fichiers excel en tant que table et faire des requêtes dedans

Reply

Marsh Posté le 22-09-2006 à 10:55:16    

Merci à vous.
Je vais surement me pencher pour ta solution tegu, si je ne trouve rien d'autre.  
MagicBuzz, je sais que je peux passer par Access, mais malheureusement je ne peux travailler que sur Excel (contrainte technique disons).  
 
Personne n'a d'autre solution?
 
Merci.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed