[VBA excel & ADO] créer une table et y importer des données Excel

annyong Messages postés 38 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 25 février 2015 - 1 juil. 2007 à 23:02
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 - 2 juil. 2007 à 12:17
Bonjour,

Je voudrais, sous Excel en VBA et par ADO, pouvoir créer une table dans une BdD déjà existante, et y copier des colonnes de mon classeur courant excel. en effet, j'ai besoin de faire des opérations sur ces colonnes et vu qu'il y a beaucoup de lignes, je voudrais de préférence faire ça dans une table Access.

Est ce que c'est possible ? si oui, pouvez vous me guider ?

Merci d'avance!

2 réponses

cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
2 juil. 2007 à 12:15
Salut,

je te donne une base de travail, comme ca tu pourras deja partir de quelque chose:

Dim bdd As New ADOX.Catalog
Dim Tableau As ADOX.Table
Set acn = New ADODB.connection
Set rs = New ADODB.recordset


        'Connexion avec la table
acn.CursorLocation = adUseClient
acn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Chemin_Fichier_MDB


Set bdd.ActiveConnection = acn


        'On vérifie que la table temporaire n'est pas présente, sinon on la détruit
For Each Tableau In bdd.Tables
    If (Tableau.Name = "Nom_Table") Then
        DoCmd.DeleteObject acTable, "Table_Temp"
        Exit For
    End If
Next


        'Création d'une table temporaire
SQL = "CREATE TABLE Table_Temp(" & _
      "Num Numeric PRIMARY KEY," & _
      "Référence Text(50)," & _
      "[Module ou Fonction] Text(50)," & _
      "[From] Text(50)," & _
      "To Text(50)," & _
      "Priorité Text(50)," & _
      "Type Text(50)," & _
      "[Etat] Text(50));"


DoCmd.RunSQL SQL

rs.Open "SELECT * FROM Nom_Table", acn, adOpenDynamic, adLockReadOnly

Je te decris vite fait ce que ce code doit faire:

1) Connection a ta base de données.
2) Voir si ta table n'est pas deja presente.
3) Creer une table temporaire.
4) Creer un recordset.

A partir du recordset  (rs) tu peux faire des transferts de données dans la table.

A toi d'adapter (c'est du VBA), et de mettre ce qu'il faut et enlever ce que tu ne veux pas.

A+
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
2 juil. 2007 à 12:17
DSL, pour le recordset, il est en lecture seul, voila comment faire pour etre en ecriture:

rs.Open "SELECT * FROM Nom_Table", acn, adOpenDynamic, adLockOptimistic
0
Rejoignez-nous