Exporter feuille excel vers BdD Access

Résolu/Fermé
dianedg Messages postés 22 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 19 juillet 2016 - 2 janv. 2016 à 13:02
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 3 janv. 2016 à 07:28
Bonjour,

Je souhaite créer une macro VBA (Excel 2013) qui me permette de:
- sélectionner un fichier xlsx comportant 1 feuille. Celle-ci contient des données dans 4 colonnes(ColA, ColB, ColC, ColD)
- exporter les données des 4 colonnes vers une base de données Access dans une pré-définie (TableDefinie) dont les champs sont identiques aux noms des colonnes (ColA, ColB, ColC, ColD)

Je souhaite automatiser cette exportation vers la Base de données car les fichiers excel (toujours le même format) sont générés régulièrement et devront être importés dans la même table à la suite des derniers enregistrements.

Est-ce que je peux travailler avec un fichier excel dont la feuille est protégée?

Pour la partie connexion avec la BdD, j'ai essayé le code suivant mais j'ai toujours l'erreur 3709 qui apparaît (même après lecture de nombreux forum).

Les options suivantes sont cochées dans les préférences:


Quelqu'un peut m'aider?
Merci d'avance,
Diane

Sub ExcelToAccess()
    ' exports data from the active worksheet to a table in an Access database this procedure must be edited before use
    Dim cn As ADODB.Connection, rs As New ADODB.Recordset
          
    ' connect to the Access database
    Set cn = New ADODB.Connection
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\ddgouvion\Desktop\FluidX ID - RBC\Tracability racks and vials.mdb;;Extended Properties=""Excel 8.0;HDR=No;"";"
    cn.Open
    
    ' open a recordset
    Set rs = New ADODB.Recordset
    rs.Open "Batch to Vial fake", cn, adOpenKeyset, adLockOptimistic, adCmdTable

End Sub





A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
2 janv. 2016 à 13:42
0
dianedg Messages postés 22 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 19 juillet 2016 1
2 janv. 2016 à 15:37
Merci Michel, j'ai déjà lu ce tuto. Est-ce que ça s'applique pour travailler à partir d'un fichier excel et exporter les données vers une BdD Access?
J'ai oublié de préciser que je travaille sous 64-bit.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 2/01/2016 à 16:28
OUI
mais ton script de connxion est diffétent de celui du tutp

Un Viel exemple sur Office 2000: code qui enregistre les données d'une facture dans Access
Sub archiver_Access()
Dim conn As Object
Dim requete As Object
Dim f_num As Long, f_date As Date, c_num As String, e_date As Date, totalHT As Double
Dim base_ac As String, fichier As String, texte_SQL As String

'collecte les infos de la facture
f_num = Range("A14")
f_date = Range("A16")
c_num = CStr(Range("C16"))
e_date = Range("H16")
totalHT = Range("F43")

'connexion à la base dans fichier archives.xls
base_ac = "Suivi_affaire.mdb" 'a adapter
fichier = ThisWorkbook.Path & "\" & base_ac 'a adapter
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _
"data source=" & fichier & ";"

' travail demandé: insère dans les champs de "T_archive les données collectées
texte_SQL = "INSERT INTO T_archive (num_fact,dat_fact,num_comm,echeance,montant_HT) VALUES ('" & (f_num) & "','" & (f_date) & "', '" & (c_num) & "','" & (e_date) & "', '" & (totalHT) & "')"
' éxécute le travail demandé
Set requete = CreateObject("ADODB.recordset")
On Error GoTo alerte 'cas où la facture (numéro) a déjà été enregistrée
Set requete = conn.Execute(texte_SQL)
.
'déroulement normal
MsgBox "archivage de la facture n° " & f_num & " effectué avec succès"
Set requete = Nothing
Set conn = Nothing
Exit Sub

' facture déjà enregistrée
alerte:
MsgBox "la facture n° " & f_num & " a déjà été enregistrée!", vbCritical
Set requete = Nothing
Set conn = Nothing
End Sub

0
dianedg Messages postés 22 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 19 juillet 2016 1
2 janv. 2016 à 19:27
J'ai trouvé un tuto super bien qui explique comment importer des feuilles excel dans access (avec macro lancée depuis Access): https://grenier.self-access.com/access/fichiers/mise-a-jour-d-une-base-access-par-fichier-csv-ou-excel-episode-4/
(voir les épisodes 1,2 et 3 pour toutes les étapes)

Par contre, je suis toujours à la recherche de comment lancer la "macro d'importation" (toute la bidouille du site grenier self access) depuis un classeur excel (celui-ci réunit tout le traitement des fichiers, de leur création à leur importation dans Access, j'aimerais tout faire en un clic).
(Je travaille sous excel 2013)

Merci
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
3 janv. 2016 à 07:28
Bonjour,

Hervé Inisian est un 1 des meilleurs MVP access.

Pour ma part, je continuerais ma recherche sur son forum ;o)

Bonne continuation
0