Merci d'avoir pris le temps de me répondre.
Je cherche effectivement un code VBA qui relierait 2 tables d'une base
Access entre elles .
Justement l'utilisateur n'est pas censé avoir Access et la liaison dans mon
cas devrait se faire à partir d'une Userform Excel.
Mais est ce que VBA peut faire cela ???
A bientôt
José
Merci d'avoir pris le temps de me répondre.
Je cherche effectivement un code VBA qui relierait 2 tables d'une base
Access entre elles .
Justement l'utilisateur n'est pas censé avoir Access et la liaison dans mon
cas devrait se faire à partir d'une Userform Excel.
Mais est ce que VBA peut faire cela ???
A bientôt
José
Merci d'avoir pris le temps de me répondre.
Je cherche effectivement un code VBA qui relierait 2 tables d'une base
Access entre elles .
Justement l'utilisateur n'est pas censé avoir Access et la liaison dans mon
cas devrait se faire à partir d'une Userform Excel.
Mais est ce que VBA peut faire cela ???
A bientôt
José
Rebonjour josé
Je te propose pour lier 2 tables Access entre elles de lier en fait une
nouvelle table que l'on crée sur une table existante de la base
Il est impossible pour moi de lier entre elles 2 tables déjà en place dans
une base
la liaison s'établissant à la création de l'une d'entre elles
Je ne sait pas si il ne sera pas incontournable pour l'utilisateur d'avoir
access installé sur son poste car il faut activer la référence "Microsoft
Access 11.0 Object Library" (Outils/Références)
Je te propose donc ce code à mettre dans la Macro Excel :
Dim ObjAcc As Access.Application
Set ObjAcc = CreateObject("Access.Application")
ObjAcc.OpenCurrentDatabase "C:CheminBase.mdb"
ObjAcc.UserControl = True
AppActivate "Microsoft Access"
strConnect = "MS Access;DATABASE=C:CheminBase.mdb"
'on vérifie la présence de la table à créer dans la base et de la
supprimer
dans cette éventualité
For Each tdf In CurrentDb.TableDefs
If tdf.Name = "Tablenouvelle" Then
CurrentDb.Execute "Drop table Tablenouvelle"
End If
Next
'On crée la nouvelle table en la liant à la table existante de la base
Set oTbl = CurrentDb.CreateTableDef("Tablenouvelle")
With oTbl
.Connect = strConnect
.SourceTableName = "Tableexistante"
End With
'On ajoute la table à la base de données
CurrentDb.TableDefs.Append oTbl: CurrentDb.TableDefs.Refresh
'On ferme la base et l'application Access
ObjAcc.CloseCurrentDatabase
ObjAcc.UserControl = False
ObjAcc.Application.Quit
Les lignes :
ObjAcc.UserControl = True
AppActivate "Microsoft Access"
ne sont pas obligatoire elle permettent d'activer à l'écran la base Access
Si tu choisis de ne pas les mettre supprimes aussi la ligne :
ObjAcc.UserControl = False
J'espère ainsi avoir répondu à ton attente
Dis moi !!!!Merci d'avoir pris le temps de me répondre.
Je cherche effectivement un code VBA qui relierait 2 tables d'une base
Access entre elles .
Justement l'utilisateur n'est pas censé avoir Access et la liaison dans
mon
cas devrait se faire à partir d'une Userform Excel.
Mais est ce que VBA peut faire cela ???
A bientôt
José
Rebonjour josé
Je te propose pour lier 2 tables Access entre elles de lier en fait une
nouvelle table que l'on crée sur une table existante de la base
Il est impossible pour moi de lier entre elles 2 tables déjà en place dans
une base
la liaison s'établissant à la création de l'une d'entre elles
Je ne sait pas si il ne sera pas incontournable pour l'utilisateur d'avoir
access installé sur son poste car il faut activer la référence "Microsoft
Access 11.0 Object Library" (Outils/Références)
Je te propose donc ce code à mettre dans la Macro Excel :
Dim ObjAcc As Access.Application
Set ObjAcc = CreateObject("Access.Application")
ObjAcc.OpenCurrentDatabase "C:CheminBase.mdb"
ObjAcc.UserControl = True
AppActivate "Microsoft Access"
strConnect = "MS Access;DATABASE=C:CheminBase.mdb"
'on vérifie la présence de la table à créer dans la base et de la
supprimer
dans cette éventualité
For Each tdf In CurrentDb.TableDefs
If tdf.Name = "Tablenouvelle" Then
CurrentDb.Execute "Drop table Tablenouvelle"
End If
Next
'On crée la nouvelle table en la liant à la table existante de la base
Set oTbl = CurrentDb.CreateTableDef("Tablenouvelle")
With oTbl
.Connect = strConnect
.SourceTableName = "Tableexistante"
End With
'On ajoute la table à la base de données
CurrentDb.TableDefs.Append oTbl: CurrentDb.TableDefs.Refresh
'On ferme la base et l'application Access
ObjAcc.CloseCurrentDatabase
ObjAcc.UserControl = False
ObjAcc.Application.Quit
Les lignes :
ObjAcc.UserControl = True
AppActivate "Microsoft Access"
ne sont pas obligatoire elle permettent d'activer à l'écran la base Access
Si tu choisis de ne pas les mettre supprimes aussi la ligne :
ObjAcc.UserControl = False
J'espère ainsi avoir répondu à ton attente
Dis moi !!!!
Merci d'avoir pris le temps de me répondre.
Je cherche effectivement un code VBA qui relierait 2 tables d'une base
Access entre elles .
Justement l'utilisateur n'est pas censé avoir Access et la liaison dans
mon
cas devrait se faire à partir d'une Userform Excel.
Mais est ce que VBA peut faire cela ???
A bientôt
José
Rebonjour josé
Je te propose pour lier 2 tables Access entre elles de lier en fait une
nouvelle table que l'on crée sur une table existante de la base
Il est impossible pour moi de lier entre elles 2 tables déjà en place dans
une base
la liaison s'établissant à la création de l'une d'entre elles
Je ne sait pas si il ne sera pas incontournable pour l'utilisateur d'avoir
access installé sur son poste car il faut activer la référence "Microsoft
Access 11.0 Object Library" (Outils/Références)
Je te propose donc ce code à mettre dans la Macro Excel :
Dim ObjAcc As Access.Application
Set ObjAcc = CreateObject("Access.Application")
ObjAcc.OpenCurrentDatabase "C:CheminBase.mdb"
ObjAcc.UserControl = True
AppActivate "Microsoft Access"
strConnect = "MS Access;DATABASE=C:CheminBase.mdb"
'on vérifie la présence de la table à créer dans la base et de la
supprimer
dans cette éventualité
For Each tdf In CurrentDb.TableDefs
If tdf.Name = "Tablenouvelle" Then
CurrentDb.Execute "Drop table Tablenouvelle"
End If
Next
'On crée la nouvelle table en la liant à la table existante de la base
Set oTbl = CurrentDb.CreateTableDef("Tablenouvelle")
With oTbl
.Connect = strConnect
.SourceTableName = "Tableexistante"
End With
'On ajoute la table à la base de données
CurrentDb.TableDefs.Append oTbl: CurrentDb.TableDefs.Refresh
'On ferme la base et l'application Access
ObjAcc.CloseCurrentDatabase
ObjAcc.UserControl = False
ObjAcc.Application.Quit
Les lignes :
ObjAcc.UserControl = True
AppActivate "Microsoft Access"
ne sont pas obligatoire elle permettent d'activer à l'écran la base Access
Si tu choisis de ne pas les mettre supprimes aussi la ligne :
ObjAcc.UserControl = False
J'espère ainsi avoir répondu à ton attente
Dis moi !!!!Merci d'avoir pris le temps de me répondre.
Je cherche effectivement un code VBA qui relierait 2 tables d'une base
Access entre elles .
Justement l'utilisateur n'est pas censé avoir Access et la liaison dans
mon
cas devrait se faire à partir d'une Userform Excel.
Mais est ce que VBA peut faire cela ???
A bientôt
José
Il y a un truc qui serait possible !
Assure toi que le MDAC est à jour - site de microsoft
MDAC = Microsoft Data Access Component
Tu ajoutes dans l'éditeur de code d'excel, la référence
suivante : "Microsoft Activex Data Object 2.x librairy"
Ceci est un exemple avec la base de donnée Comptoir.mdb sur
le CD d'office...
Je n'ai jamais tenté le coup à savoir si c'était possible d'utiliser ADO
quand ACCESS n'est pas installé sur une machine... à toi de tester...
La requête retenue ne sert à rien d'autre qu'au test !!!!
'-------------------------------
Sub Le_test()
Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim Base_Data As String
Dim Requete As String
'Location et Nom de la base de données
Base_Data = "C:Comptoir.mdb"
' Ouvrir la connection avec la base de donnée
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Base_Data
Requete = "SELECT Employés.[N° employé], " & vbCrLf & _
" Commandes.[Code client] FROM Employés" & vbCrLf & _
" INNER JOIN Commandes ON " & vbCrLf & _
"Employés.[N° employé] = Commandes.[N° employé]"
'Exécution de la requête
rst.Open Requete, cnt, adOpenForwardOnly
'copie vers la cellule A1 le résultat de la requête
Range("A1").CopyFromRecordset rst
'Fermeture du RecordSet et de la connexion
rst.Close
cnt.Close
End Sub
'-------------------------------
"José" a écrit dans le message de news:
475d92db$0$14475$
Merci d'avoir pris le temps de me répondre.
Je cherche effectivement un code VBA qui relierait 2 tables d'une base
Access entre elles .
Justement l'utilisateur n'est pas censé avoir Access et la liaison dans
mon
cas devrait se faire à partir d'une Userform Excel.
Mais est ce que VBA peut faire cela ???
A bientôt
José
Il y a un truc qui serait possible !
Assure toi que le MDAC est à jour - site de microsoft
MDAC = Microsoft Data Access Component
Tu ajoutes dans l'éditeur de code d'excel, la référence
suivante : "Microsoft Activex Data Object 2.x librairy"
Ceci est un exemple avec la base de donnée Comptoir.mdb sur
le CD d'office...
Je n'ai jamais tenté le coup à savoir si c'était possible d'utiliser ADO
quand ACCESS n'est pas installé sur une machine... à toi de tester...
La requête retenue ne sert à rien d'autre qu'au test !!!!
'-------------------------------
Sub Le_test()
Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim Base_Data As String
Dim Requete As String
'Location et Nom de la base de données
Base_Data = "C:Comptoir.mdb"
' Ouvrir la connection avec la base de donnée
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Base_Data
Requete = "SELECT Employés.[N° employé], " & vbCrLf & _
" Commandes.[Code client] FROM Employés" & vbCrLf & _
" INNER JOIN Commandes ON " & vbCrLf & _
"Employés.[N° employé] = Commandes.[N° employé]"
'Exécution de la requête
rst.Open Requete, cnt, adOpenForwardOnly
'copie vers la cellule A1 le résultat de la requête
Range("A1").CopyFromRecordset rst
'Fermeture du RecordSet et de la connexion
rst.Close
cnt.Close
End Sub
'-------------------------------
"José" <perez.jose@free.fr> a écrit dans le message de news:
475d92db$0$14475$426a34cc@news.free.fr...
Merci d'avoir pris le temps de me répondre.
Je cherche effectivement un code VBA qui relierait 2 tables d'une base
Access entre elles .
Justement l'utilisateur n'est pas censé avoir Access et la liaison dans
mon
cas devrait se faire à partir d'une Userform Excel.
Mais est ce que VBA peut faire cela ???
A bientôt
José
Il y a un truc qui serait possible !
Assure toi que le MDAC est à jour - site de microsoft
MDAC = Microsoft Data Access Component
Tu ajoutes dans l'éditeur de code d'excel, la référence
suivante : "Microsoft Activex Data Object 2.x librairy"
Ceci est un exemple avec la base de donnée Comptoir.mdb sur
le CD d'office...
Je n'ai jamais tenté le coup à savoir si c'était possible d'utiliser ADO
quand ACCESS n'est pas installé sur une machine... à toi de tester...
La requête retenue ne sert à rien d'autre qu'au test !!!!
'-------------------------------
Sub Le_test()
Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim Base_Data As String
Dim Requete As String
'Location et Nom de la base de données
Base_Data = "C:Comptoir.mdb"
' Ouvrir la connection avec la base de donnée
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Base_Data
Requete = "SELECT Employés.[N° employé], " & vbCrLf & _
" Commandes.[Code client] FROM Employés" & vbCrLf & _
" INNER JOIN Commandes ON " & vbCrLf & _
"Employés.[N° employé] = Commandes.[N° employé]"
'Exécution de la requête
rst.Open Requete, cnt, adOpenForwardOnly
'copie vers la cellule A1 le résultat de la requête
Range("A1").CopyFromRecordset rst
'Fermeture du RecordSet et de la connexion
rst.Close
cnt.Close
End Sub
'-------------------------------
"José" a écrit dans le message de news:
475d92db$0$14475$
Merci d'avoir pris le temps de me répondre.
Je cherche effectivement un code VBA qui relierait 2 tables d'une base
Access entre elles .
Justement l'utilisateur n'est pas censé avoir Access et la liaison dans
mon
cas devrait se faire à partir d'une Userform Excel.
Mais est ce que VBA peut faire cela ???
A bientôt
José