bonjour
je n'ai pas pris en compte le champ 'DATE PAIEMENT dans la Table3 car il n'y a aucun lien possible entre cette table et les 2 autres ...???...
avant de te lancer plus avant dans les requetes , tu devrais approfondir les liens qui t'ont été proposés hier sur un autre forum ...;o) ...nottament les methodes de construction d'une base : sinon ensuite tu seras obligé de faire des usines à gaz pour extraire tes données
j'ai pris l'hypothese que le champ ID dans la Table1 correspond à l'IDREGISTRE dans la Table2
tu inseres cette macro dans le dernier classeur que tu as placé sur le forum
Code:
Sub ImportTableAccess_V03()
Dim Conn As ADODB.Connection
Dim rsT As ADODB.Recordset
Dim Fichier As String, rSQL As String
Dim numDevis As Long
Range('A5:F14').ClearContents
If Not IsNumeric(Range('B2')) Then Exit Sub
Fichier = ThisWorkbook.Path & '\\bd.mdb'
numDevis = Range('B2')
Set Conn = New ADODB.Connection
With Conn
.Provider = 'Microsoft.Jet.OLEDB.4.0'
.Mode = adModeRead
.Properties('Jet OLEDB:Database Password') = 'TOTO'
.Open Fichier
End With
rSQL = 'SELECT Table2.[N° FACTURE],Table2.[DATELIVRAISON],Table2.[DATEFACTURE],' & _
'Table2.[MODE PAIEMENT (1=CHQ, 2=CB)]' & _
' FROM Table1 , Table2' & _
' WHERE Table1.ID=Table2.IDREGISTRE AND Table1.[N°DEVIS]='
Set rsT = New ADODB.Recordset
With rsT
.ActiveConnection = Conn
.Open rSQL & numDevis, , adOpenStatic, adLockOptimistic, adCmdText
End With
If rsT.EOF Then
MsgBox 'Le numero de facture ' & numDevis & ' n'a pas été trouvée'
rsT.Close
Conn.Close
Exit Sub
End If
Range('A5') = numDevis
Cells(5, 2) = rsT.Fields(0).Value
Cells(5, 3) = rsT.Fields(1).Value
Cells(5, 4) = rsT.Fields(2).Value
Cells(5, 6) = rsT.Fields(3).Value
rsT.Close
Conn.Close
End Sub
bonne journée
MichelXld
Message édité par: michelxld, à: 14/12/2005 09:43