Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Attacher des tables en VBA

4 réponses
Avatar
Francis SLAWNY
Bonjour

Je travaille avec Access 2003.
J'arrive à faire pas mal de choses mais je maîtrise encore mal la syntaxe
VBA.

J'ai deux bases B1.mdb et B2.mdb situées dans le même dossier MesBases

Je cherche à écrire un programme dans B2 qui au démarrage de B2 :

- Supprime toutes les tables de B2 dont le nom commence par "sup"
- Attache toute les tables de B1 dont le nom commence par "att"

Merci de votre aide
FS

4 réponses

Avatar
Chouette
Bonsoir,

Pour (ré)-attacher des tables, je procède comme suit:

Private Sub ConnecterTables(CHEMIN As String)
' appellée à partir du formulaire de départ_OnLoad()
' Mise à jour des connexions des tables attachées
' (si la DB a été déplacée ou si la DB_Prog a été remplacée)

Dim MBPROG As Database
Dim tbl As TableDef
Dim ConnexionOld As String
Dim ConnexionNew As String
Dim NOMTBL As String

Set MBPROG = CodeDb()
Set tbl = MBPROG.TableDefs("table existante")
' REMARQUE: table existante qui doit être rattachée
ConnexionOld = tbl.Connect
ConnexionNew = "MS Access;PWD=password;database=" & CHEMIN
If ConnexionOld <> ConnexionNew Then
' Mise A Jour Connexions "tables attachées"
For Each tbl In MBPROG.TableDefs
NOMTBL = tbl.Name
If NOMTBL Like "att*" Then
tbl.Connect = ConnexionNew
tbl.RefreshLink
End If
Next
End If
end sub

Pour supprimer des tables, je tenterais qqch de similaire.

A plus, Ch.
Avatar
Francis SLAWNY
Merci pour ce programme qui va déjà bien m'avancer.

Je me pose aussi la question de savoir comment faire un programme qui fait
la même chose mais au lieu d'attacher il importe les tables.
Je vois que j'ai encore beaucoup à apprendre.
En tout cas merci.
FS



"Chouette" a écrit dans le message de
news:
Bonsoir,

Pour (ré)-attacher des tables, je procède comme suit:

Private Sub ConnecterTables(CHEMIN As String)
' appellée à partir du formulaire de départ_OnLoad()
' Mise à jour des connexions des tables attachées
' (si la DB a été déplacée ou si la DB_Prog a été remplacée)

Dim MBPROG As Database
Dim tbl As TableDef
Dim ConnexionOld As String
Dim ConnexionNew As String
Dim NOMTBL As String

Set MBPROG = CodeDb()
Set tbl = MBPROG.TableDefs("table existante")
' REMARQUE: table existante qui doit être rattachée
ConnexionOld = tbl.Connect
ConnexionNew = "MS Access;PWD=password;database=" & CHEMIN
If ConnexionOld <> ConnexionNew Then
' Mise A Jour Connexions "tables attachées"
For Each tbl In MBPROG.TableDefs
NOMTBL = tbl.Name
If NOMTBL Like "att*" Then
tbl.Connect = ConnexionNew
tbl.RefreshLink
End If
Next
End If
end sub

Pour supprimer des tables, je tenterais qqch de similaire.

A plus, Ch.


Avatar
Loutox
Salut,
voici deux fonctions que j'utilise pour importer des tables depuis une base
protegee ou non.

ce n'est pas très documenté mais devrait t'aider (cioller dans vba et voir
l'aide en ligne des instructions)

MERCI aux personnes sur le site desquelles j'ai trouvé ce code avant de le
bidouiller.

======================== ' base d'où on importe protégée par mot de passe

Function fImportePasswd()
Dim wrkDefault As Workspace
Dim vbase As Database
Set wrkDefault = DBEngine.Workspaces(0)
Set vbase = wrkDefault.OpenDatabase("C:vmVMSVM_princip.mdb", False,
False, ";pwd=spirou;")
DoCmd.TransferDatabase acImport, "Microsoft Access", "" & vbase.Name &
"", acTable, "TabFactVte", "TabFactVte"
vbase.Close
Set db = Nothing
End Function
======================================== 'sans protection sur la base source
DoCmd.TransferDatabase acImport, "Microsoft Access", NomBaseSource,
acTable, NomTable1, NomTable2
========================================


"Francis SLAWNY" a écrit dans le message de
news:
Merci pour ce programme qui va déjà bien m'avancer.

Je me pose aussi la question de savoir comment faire un programme qui fait
la même chose mais au lieu d'attacher il importe les tables.
Je vois que j'ai encore beaucoup à apprendre.
En tout cas merci.
FS



"Chouette" a écrit dans le message de
news:
Bonsoir,

Pour (ré)-attacher des tables, je procède comme suit:

Private Sub ConnecterTables(CHEMIN As String)
' appellée à partir du formulaire de départ_OnLoad()
' Mise à jour des connexions des tables attachées
' (si la DB a été déplacée ou si la DB_Prog a été remplacée)

Dim MBPROG As Database
Dim tbl As TableDef
Dim ConnexionOld As String
Dim ConnexionNew As String
Dim NOMTBL As String

Set MBPROG = CodeDb()
Set tbl = MBPROG.TableDefs("table existante")
' REMARQUE: table existante qui doit être rattachée
ConnexionOld = tbl.Connect
ConnexionNew = "MS Access;PWD=password;database=" & CHEMIN
If ConnexionOld <> ConnexionNew Then
' Mise A Jour Connexions "tables attachées"
For Each tbl In MBPROG.TableDefs
NOMTBL = tbl.Name
If NOMTBL Like "att*" Then
tbl.Connect = ConnexionNew
tbl.RefreshLink
End If
Next
End If
end sub

Pour supprimer des tables, je tenterais qqch de similaire.

A plus, Ch.






Avatar
Francis SLAWNY
Merci. Pas le temps de regarder aujourd'hui. Je m'y mets dès demain matin.
Il me semble bien que c'est ça que je cherchais.
Cordialement
FS



"Loutox" <Houloutox> a écrit dans le message de news:
48400488$0$9893$
Salut,
voici deux fonctions que j'utilise pour importer des tables depuis une
base protegee ou non.

ce n'est pas très documenté mais devrait t'aider (cioller dans vba et voir
l'aide en ligne des instructions)

MERCI aux personnes sur le site desquelles j'ai trouvé ce code avant de le
bidouiller.

======================== > ' base d'où on importe protégée par mot de passe

Function fImportePasswd()
Dim wrkDefault As Workspace
Dim vbase As Database
Set wrkDefault = DBEngine.Workspaces(0)
Set vbase = wrkDefault.OpenDatabase("C:vmVMSVM_princip.mdb", False,
False, ";pwd=spirou;")
DoCmd.TransferDatabase acImport, "Microsoft Access", "" & vbase.Name &
"", acTable, "TabFactVte", "TabFactVte"
vbase.Close
Set db = Nothing
End Function
======================================== > 'sans protection sur la base source
DoCmd.TransferDatabase acImport, "Microsoft Access", NomBaseSource,
acTable, NomTable1, NomTable2
======================================== >


"Francis SLAWNY" a écrit dans le message de
news:
Merci pour ce programme qui va déjà bien m'avancer.

Je me pose aussi la question de savoir comment faire un programme qui
fait la même chose mais au lieu d'attacher il importe les tables.
Je vois que j'ai encore beaucoup à apprendre.
En tout cas merci.
FS



"Chouette" a écrit dans le message
de news:
Bonsoir,

Pour (ré)-attacher des tables, je procède comme suit:

Private Sub ConnecterTables(CHEMIN As String)
' appellée à partir du formulaire de départ_OnLoad()
' Mise à jour des connexions des tables attachées
' (si la DB a été déplacée ou si la DB_Prog a été remplacée)

Dim MBPROG As Database
Dim tbl As TableDef
Dim ConnexionOld As String
Dim ConnexionNew As String
Dim NOMTBL As String

Set MBPROG = CodeDb()
Set tbl = MBPROG.TableDefs("table existante")
' REMARQUE: table existante qui doit être rattachée
ConnexionOld = tbl.Connect
ConnexionNew = "MS Access;PWD=password;database=" & CHEMIN
If ConnexionOld <> ConnexionNew Then
' Mise A Jour Connexions "tables attachées"
For Each tbl In MBPROG.TableDefs
NOMTBL = tbl.Name
If NOMTBL Like "att*" Then
tbl.Connect = ConnexionNew
tbl.RefreshLink
End If
Next
End If
end sub

Pour supprimer des tables, je tenterais qqch de similaire.

A plus, Ch.