Bonjour,
Je voudrai lier au moyen d'un vba des tables d'un serveur sql express avec mon appli en access.
Mon problème c'est que je reçois à chaque table un écran "Sélectionner la source de donnée" ou je sélectionne mon lien de connexion avec sql serveur et cela fonctionne. Comment supprimer l'affiche de cet écran car dans le code je donne le lien de connexion.
Mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
If Me.id_type_db <> "ODBC" Then
 
    'Définit la chaine de connexion permettant la liaison des tables
    strConnect = "MS Access;pwd=;DATABASE=" & strCheminBd
     'Instancie l'objet Database de la base protégée
    Set oDbSource = DBEngine.OpenDatabase(strCheminBd, , True, strConnect)
 
 Else
 
     Set ws = DBEngine.Workspaces(0)
 
    'Définit la chaine de connexion permettant la liaison des tables
 
     strConnect = "ODBC; DATABASE=" & Me.id_nom_db_sql & ";uid=;pwd=;DSN =" & Me.id_connexion
 
    'Instancie l'objet Database de la base protégée
    Set oDbSource = ws.OpenDatabase("" & Me.id_connexion, dbDriverNoPrompt, False, strConnect)
 
 End If
 
    'Instancie l'objet Database de la base courante
    Set oDb = CurrentDb
 
     'Parcours l'ensemble des tables de la base de données protégée
    'et stocke leur nom
    For Each oTblSource In oDbSource.TableDefs
        'ignore les tables system
        If (oTblSource.Attributes And dbSystemObject) = 0 Then
            strTemp = strTemp & oTblSource.Name & "|"
        End If
    Next
 
    'Ferme la base de données sources (impératif pour la liaison)
    oDbSource.Close: Set oDbSource = Nothing
 
 
    'parcours le tableau de noms de tables
    strNomsTables = Split(Left(strTemp, Len(strTemp) - 1), "|")
    For i = 0 To UBound(strNomsTables)
        'Crée une nouvelle table dans la base de données courante
        nom_fichier = Mid(strNomsTables(i), 5, Len(strNomsTables(i)) - 4)
 
'    DoCmd.TransferDatabase acLink, "ODBC Database", strConnect, _
'        acTable, nom_fichier, strNomsTables(i), , False
 
 
        Set oTbl = oDb.CreateTableDef(nom_fichier)
        'Lie les deux tables
        oTbl.Connect = strConnect
        oTbl.SourceTableName = strNomsTables(i)
        'Ajoute la table à la base de données
        oDb.TableDefs.Append oTbl
 
    Next i
 
    'Rafraichit la liste des tables
    oDb.TableDefs.Refresh
    strTemp = ""


Merci de votre aide
Etienne