Bonjour,

Je souhaiterais savoir si l'ajout d'un champ dans une table avec le driver Excel ODB peut effectivement se faire par un CREATE TABLE.

En effet, je suis obligé de construire une base de données sur Excel et non Access, je construit donc une base dans un classeur Excel. J'ai besoin de rajouter chaque mois une colonne avec un nouveau champs.

Pour cela je voulais utiliser "Alter TABLE" mais il semblerait que ca ne fonctionne pas, sur un forum , l'un des utilisateur propose d'utiliser CREATE TABLE
https://stackoverflow.com/questions/...cel-with-oledb

le probleme c'est que moi ca ne fonctionne pas
Nom : Capture2.PNG
Affichages : 518
Taille : 21,0 Ko

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
Sub Add_DARonDB(ByRef MyDar As Date)
    Dim strr As String, tablo(), i As Long
    Dim rct As New ADODB.Recordset, MyVal
    Dim MyBase As String, MyStr As String
    Dim MyField
 
    'Recuperation des champs de la table
    MyBase = "Base_Donnee"
    strr = "SELECT * FROM [" & MyBase & "$]"
    rct.Open strr, MyConnection, adOpenDynamic, adLockPessimistic
 
    'nb colonnes
    Nb_Champs = rct.Fields.Count
 
    For Each MyField In rct.Fields
        If MyField.Name = MyDar Then Exit Sub
        If i < 8 Then
            MyVal = "[" & MyField.Name & "] char"
        ElseIf i = 8 Then MyVal = "[" & MyDar & "] float, [" & MyField.Name & "] float"
        Else
            MyVal = "[" & MyField.Name & "] float"
        End If
        ReDim Preserve tablo(i)
        tablo(i) = MyVal
        i = i + 1
    Next MyField
 
    'Jointure
    MyStr = Join(tablo, ", "): Set rct = Nothing
    'Ajout colonne
    MyStr = "CREATE TABLE [Base_Donnee$] (" & MyStr & ")"
    rct.Open MyStr, MyConnection, adOpenDynamic, adLockPessimistic
 
    'sup objet
    Set rct = Nothing
 
End Sub
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
'Action de connection
Sub ConnectMe()
    Dim d As Date
 
        'Test si on est connecté
    If IamConnected() Then Exit Sub
 
        'Connecter
    Set MyRealConnection = New ADODB.Connection
 
    With MyRealConnection
        .Provider = "MSDASQL"
        .ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & "DBQ=" & Fichier & ";HDR=Yes';ReadOnly=False;"
        .Open
    End With
End Sub
 
    'Propriete de connection ADO
Property Get MyConnection() As ADODB.Connection
        'Si pas d'objet ==> deconnécté
    If MyRealConnection Is Nothing Then
        ConnectMe
        'DisconnectMe
    End If
    Set MyConnection = MyRealConnection
End Property
 
    'fonction de test si on est connecté
Function IamConnected() As Boolean
    If MyRealConnection Is Nothing Then
        IamConnected = False
        Exit Function
    End If
    IamConnected = True
End Function
 
    'Sub pour se deconnecter
Sub DisconnectMe()
    If Not (MyRealConnection Is Nothing) Then
        MyRealConnection.Close
        Set MyRealConnection = Nothing
    End If
End Sub