Bonjour,

Je souhaite créer une une base de donnée MDB à partir de VBA Excel. Après diverses recherches sur le net, j'en suis arrivé à utiliser deux méthodes, mais j'ai quelques questions à leur propos.

1- en utilisant une requête SQL

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
    Dim cnn As Object
    Dim cat As Object
 
    Set cnn = CreateObject("ADODB.Connection")
    Set cat = CreateObject("ADOX.Catalog")
    cat.Create "Provider=Microsoft.Jet.OLEDB.4.0; Jet OLEDB:Engine Type=5; Data Source=E:\2017\Bilan.mbd"
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\2017\Bilan.mbd"
    cnn.Execute "CREATE TABLE Files (Id INT PRIMARY KEY NOT NULL, Path VARCHAR(255))", adCmdText + adExecuteNoRecords
 'cnn.Execute "CREATE UNIQUE INDEX UX_Id ON Files (Id )", adCmdText
    cnn.Close
    Set cat = Nothing
    Set cnn = Nothing
Ce code me crée bien ma base et ma table.

Nom : Screenshot_3.png
Affichages : 365
Taille : 58,1 Ko

En utilisant cette méthode, y-a-t-il un moyen de faire en sorte que le champ Id s'auto-incrémente au fur et à mesure des ajouts d'enregistrements?

1- en utilisant ADOX

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
    Dim cnn As Object
    Dim cat As Object
    Dim objTable As Object
    Dim objKey As Object
 
    Set cnn = CreateObject("ADODB.Connection")
    Set cat = CreateObject("ADOX.Catalog")
    Set objTable = CreateObject("ADOX.Table")
    Set objKey = CreateObject("ADOX.Key")
    cat.Create "Provider=Microsoft.Jet.OLEDB.4.0; Jet OLEDB:Engine Type=5; Data Source=E:\2017\Bilan.mbd"
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\2017\Bilan.mbd"
    Set cat.ActiveConnection = cnn
    objTable.Name = "Files"
    With objTable.Columns
     .Append "Id", adInteger
      .Append "Path", adWChar, 255
    End With
    objKey.Name = "Id"
    objKey.Type = adKeyPrimary
    objKey.Columns.Append "Id"
    objTable.Keys.Append objKey
    cat.Tables.Append objTable
    cnn.Close
    Set objTable = Nothing
    Set cat = Nothing
    Set cnn = Nothing
Nom : Screenshot_4.png
Affichages : 366
Taille : 57,4 Ko

Même question, y-a-t-il un moyen de faire en sorte que le champ Id s'auto-incrémente au fur et à mesure des ajouts d'enregistrements?

N'étant pas un expert en VBA et bases de données, quels sont les avantages / inconvénients de ces deux méthodes?

Voyez vous dans ces deux codes des erreurs ou choses choquantes?

Merci.

Ikes qui ne demande qu'à apprendre et comprendre.