Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Exportation de Excel vers Access

9 réponses
Avatar
remigo
Bonjour je recois des données quotidiennement toujours sur le même format, et
je veux les exporter vers access et ce de facon automatique.

Comment je peux faire?

Merci à l'avance!

9 réponses

Avatar
MichDenis
Pour le temps que va durer l'exportation, on doit créer une plage nommée
de la colonne à exporter vers la base de données.

Cette plage nommée dans l'exemple s'appelle "Plage".
La toute première ligne de la plage nommée "plage" représente une étiquette
de colonne du même nom de champ de la table
où les données seront exportées.

Dans l'exemple suivant, il ne te restera plus qu'à adapter le nom des
objets selon ton application.

toto = Nom de la table dans la base de données Comptoir.mdb

Pour ce qui est du champ de numéro automatique dans ta base de données,
il va se mettre à jour tout seul !

Évidemment, tu dois ajouter la bibliothèque : Microsoft DAO 3.6 objects Librairy
'--------------------------------------------
Sub ExporterVersAccess()

Dim bd As DAO.Database
Dim Rst As DAO.Recordset

With Worksheets("Feuil1")
.Range("B4:B" & .Range("B65536").End(xlUp).Row).Name = "Plage"
End With

Set bd = OpenDatabase(ThisWorkbook.FullName, False, False, "excel 8.0")

bd.Execute "INSERT INTO toto IN 'C:ExcelComptoir.mdb' SELECT * FROM [Plage]"
ThisWorkbook.Names("Plage").delete
bd.Close
Set bd = Nothing
End Sub
'--------------------------------------------




"remigo" a écrit dans le message de news:

Bonjour je recois des données quotidiennement toujours sur le même format, et
je veux les exporter vers access et ce de facon automatique.

Comment je peux faire?

Merci à l'avance!
Avatar
JB
Bonjour,

A partir d'Access, on peut s'attacher à une BD Excel avec la commande

Fichier/Données externes/Attacher.
Les données sont à jour en permanence.

(On peut également à partir d'Excel s'attacher de façon permanente
à une table ou une requête Access)

Cordialement JB



Bonjour je recois des données quotidiennement toujours sur le même fo rmat, et
je veux les exporter vers access et ce de facon automatique.

Comment je peux faire?

Merci à l'avance!


Avatar
remigo
Bonjour ça marche jusqu'avant la ligne:

bd.Execute "INSERT INTO toto IN 'C:ExcelComptoir.mdb' SELECT * FROM
[Plage]"

Pourtant mon champ nommé plage est bien configurer sur la feuille excel et
ma table Access porte exactement les mêmes noms de champs que ma feuille excel



Pour le temps que va durer l'exportation, on doit créer une plage nommée
de la colonne à exporter vers la base de données.

Cette plage nommée dans l'exemple s'appelle "Plage".
La toute première ligne de la plage nommée "plage" représente une étiquette
de colonne du même nom de champ de la table
où les données seront exportées.

Dans l'exemple suivant, il ne te restera plus qu'à adapter le nom des
objets selon ton application.

toto = Nom de la table dans la base de données Comptoir.mdb

Pour ce qui est du champ de numéro automatique dans ta base de données,
il va se mettre à jour tout seul !

Évidemment, tu dois ajouter la bibliothèque : Microsoft DAO 3.6 objects Librairy
'--------------------------------------------
Sub ExporterVersAccess()

Dim bd As DAO.Database
Dim Rst As DAO.Recordset

With Worksheets("Feuil1")
.Range("B4:B" & .Range("B65536").End(xlUp).Row).Name = "Plage"
End With

Set bd = OpenDatabase(ThisWorkbook.FullName, False, False, "excel 8.0")

bd.Execute "INSERT INTO toto IN 'C:ExcelComptoir.mdb' SELECT * FROM [Plage]"
ThisWorkbook.Names("Plage").delete
bd.Close
Set bd = Nothing
End Sub
'--------------------------------------------




"remigo" a écrit dans le message de news:

Bonjour je recois des données quotidiennement toujours sur le même format, et
je veux les exporter vers access et ce de facon automatique.

Comment je peux faire?

Merci à l'avance!





Avatar
MichDenis
Pour insérer des nouvelles données dans une table Access,
on se doit de respecter les "restrictions" de la table.

Le type de données doit correspondre entre ceux du classeur (colonne par colonne)
avec le type de données des champs de la table Access

Si la table d'access a une restrinction par exemple : "Un champ ne peut pas être vide"
pour valideer un enregistrement, cette restriction doit aussi être respectée.

IL y en a d'autres... cela dépend de ta table ! As-tu fait ce type de vérifications ?







"remigo" a écrit dans le message de news:

Bonjour ça marche jusqu'avant la ligne:

bd.Execute "INSERT INTO toto IN 'C:ExcelComptoir.mdb' SELECT * FROM
[Plage]"

Pourtant mon champ nommé plage est bien configurer sur la feuille excel et
ma table Access porte exactement les mêmes noms de champs que ma feuille excel



Pour le temps que va durer l'exportation, on doit créer une plage nommée
de la colonne à exporter vers la base de données.

Cette plage nommée dans l'exemple s'appelle "Plage".
La toute première ligne de la plage nommée "plage" représente une étiquette
de colonne du même nom de champ de la table
où les données seront exportées.

Dans l'exemple suivant, il ne te restera plus qu'à adapter le nom des
objets selon ton application.

toto = Nom de la table dans la base de données Comptoir.mdb

Pour ce qui est du champ de numéro automatique dans ta base de données,
il va se mettre à jour tout seul !

Évidemment, tu dois ajouter la bibliothèque : Microsoft DAO 3.6 objects Librairy
'--------------------------------------------
Sub ExporterVersAccess()

Dim bd As DAO.Database
Dim Rst As DAO.Recordset

With Worksheets("Feuil1")
.Range("B4:B" & .Range("B65536").End(xlUp).Row).Name = "Plage"
End With

Set bd = OpenDatabase(ThisWorkbook.FullName, False, False, "excel 8.0")

bd.Execute "INSERT INTO toto IN 'C:ExcelComptoir.mdb' SELECT * FROM [Plage]"
ThisWorkbook.Names("Plage").delete
bd.Close
Set bd = Nothing
End Sub
'--------------------------------------------




"remigo" a écrit dans le message de news:

Bonjour je recois des données quotidiennement toujours sur le même format, et
je veux les exporter vers access et ce de facon automatique.

Comment je peux faire?

Merci à l'avance!





Avatar
remigo
Oui j'ai fait cette vérification, j'ai même crée la table en importent la
feuille excel en access.
Pourrait-il y avoir une erreur de syntaxe dans la commande ??

Merci à l'avance!


Pour insérer des nouvelles données dans une table Access,
on se doit de respecter les "restrictions" de la table.

Le type de données doit correspondre entre ceux du classeur (colonne par colonne)
avec le type de données des champs de la table Access

Si la table d'access a une restrinction par exemple : "Un champ ne peut pas être vide"
pour valideer un enregistrement, cette restriction doit aussi être respectée.

IL y en a d'autres... cela dépend de ta table ! As-tu fait ce type de vérifications ?







"remigo" a écrit dans le message de news:

Bonjour ça marche jusqu'avant la ligne:

bd.Execute "INSERT INTO toto IN 'C:ExcelComptoir.mdb' SELECT * FROM
[Plage]"

Pourtant mon champ nommé plage est bien configurer sur la feuille excel et
ma table Access porte exactement les mêmes noms de champs que ma feuille excel



Pour le temps que va durer l'exportation, on doit créer une plage nommée
de la colonne à exporter vers la base de données.

Cette plage nommée dans l'exemple s'appelle "Plage".
La toute première ligne de la plage nommée "plage" représente une étiquette
de colonne du même nom de champ de la table
où les données seront exportées.

Dans l'exemple suivant, il ne te restera plus qu'à adapter le nom des
objets selon ton application.

toto = Nom de la table dans la base de données Comptoir.mdb

Pour ce qui est du champ de numéro automatique dans ta base de données,
il va se mettre à jour tout seul !

Évidemment, tu dois ajouter la bibliothèque : Microsoft DAO 3.6 objects Librairy
'--------------------------------------------
Sub ExporterVersAccess()

Dim bd As DAO.Database
Dim Rst As DAO.Recordset

With Worksheets("Feuil1")
.Range("B4:B" & .Range("B65536").End(xlUp).Row).Name = "Plage"
End With

Set bd = OpenDatabase(ThisWorkbook.FullName, False, False, "excel 8.0")

bd.Execute "INSERT INTO toto IN 'C:ExcelComptoir.mdb' SELECT * FROM [Plage]"
ThisWorkbook.Names("Plage").delete
bd.Close
Set bd = Nothing
End Sub
'--------------------------------------------




"remigo" a écrit dans le message de news:

Bonjour je recois des données quotidiennement toujours sur le même format, et
je veux les exporter vers access et ce de facon automatique.

Comment je peux faire?

Merci à l'avance!










Avatar
MichDenis
Quel est ton message d'erreur ?

P.S. bd.Execute "INSERT INTO toto IN 'C:ExcelComptoir.mdb' SELECT * FROM
[Plage]"

Tu dois modifier la ligne de code précédente pour qu'elle corresponde avec les éléments de ton
application.

Cette macro a été testé à plusieurs reprises... et il ne devrait pas causer de problèmes.



"remigo" a écrit dans le message de news:

Oui j'ai fait cette vérification, j'ai même crée la table en importent la
feuille excel en access.
Pourrait-il y avoir une erreur de syntaxe dans la commande ??

Merci à l'avance!


Pour insérer des nouvelles données dans une table Access,
on se doit de respecter les "restrictions" de la table.

Le type de données doit correspondre entre ceux du classeur (colonne par colonne)
avec le type de données des champs de la table Access

Si la table d'access a une restrinction par exemple : "Un champ ne peut pas être vide"
pour valideer un enregistrement, cette restriction doit aussi être respectée.

IL y en a d'autres... cela dépend de ta table ! As-tu fait ce type de vérifications ?







"remigo" a écrit dans le message de news:

Bonjour ça marche jusqu'avant la ligne:

bd.Execute "INSERT INTO toto IN 'C:ExcelComptoir.mdb' SELECT * FROM
[Plage]"

Pourtant mon champ nommé plage est bien configurer sur la feuille excel et
ma table Access porte exactement les mêmes noms de champs que ma feuille excel



Pour le temps que va durer l'exportation, on doit créer une plage nommée
de la colonne à exporter vers la base de données.

Cette plage nommée dans l'exemple s'appelle "Plage".
La toute première ligne de la plage nommée "plage" représente une étiquette
de colonne du même nom de champ de la table
où les données seront exportées.

Dans l'exemple suivant, il ne te restera plus qu'à adapter le nom des
objets selon ton application.

toto = Nom de la table dans la base de données Comptoir.mdb

Pour ce qui est du champ de numéro automatique dans ta base de données,
il va se mettre à jour tout seul !

Évidemment, tu dois ajouter la bibliothèque : Microsoft DAO 3.6 objects Librairy
'--------------------------------------------
Sub ExporterVersAccess()

Dim bd As DAO.Database
Dim Rst As DAO.Recordset

With Worksheets("Feuil1")
.Range("B4:B" & .Range("B65536").End(xlUp).Row).Name = "Plage"
End With

Set bd = OpenDatabase(ThisWorkbook.FullName, False, False, "excel 8.0")

bd.Execute "INSERT INTO toto IN 'C:ExcelComptoir.mdb' SELECT * FROM [Plage]"
ThisWorkbook.Names("Plage").delete
bd.Close
Set bd = Nothing
End Sub
'--------------------------------------------




"remigo" a écrit dans le message de news:

Bonjour je recois des données quotidiennement toujours sur le même format, et
je veux les exporter vers access et ce de facon automatique.

Comment je peux faire?

Merci à l'avance!










Avatar
remigo
Voici mon code:

Sub ExporterVersAccess()

Dim bd As DAO.Database
Dim Rst As DAO.Recordset

nomfeuille = ActiveCell.Worksheet.Name
With Worksheets(nomfeuille)
.Range("H1:A" & .Range("A65536").End(xlUp).Row).Name = "Plage"
End With

Set bd = OpenDatabase(ThisWorkbook.FullName, False, False, "excel 8.0")

bd.Execute "INSERT INTO TAnalyseTest IN
'P:geologiedocStatistiquesstatistiques.mdb' SELECT * FROM [Plage]"
ThisWorkbook.Names("Plage").Delete
bd.Close
Set bd = Nothing
End Sub

ET Voici mon code d'erreur:

Le moteur de base de données Microsoft Jet n’a pas pu trouver l’objet
'Plage'. Assurez-vous que l'objet existe et que vous avez correctement saisi
son nom et son chemin d'accès.

Lorsque je l'execute ligne par ligne, sur la ligne;

Set bd = OpenDatabase(ThisWorkbook.FullName, False, False, "excel 8.0")
Je ne suis pas dans le même répertoire, est-ce que ça peut changer quelque
chose, et comment y rémédier?

Merci!
Avatar
MichDenis
| Set bd = OpenDatabase(ThisWorkbook.FullName, False, False, "excel 8.0")
ThisWorkbook.FullName = Chemin et nom complet du fichier où tu dois avoir
écris la macro et à partir duquel tu l'exécutes.

| Microsoft Jet n'a pas pu trouver l'objet 'Plage'.

Le message d'erreur est assez clair -> il ne parvient pas à identifier
la plage de cellules représentée par le nom "Plage"
La première ligne de ta colonne est une étiquette qui est en même temps
le nom de champ de ta base de données ???
Le nom "Plage" existe vraiment et il représente la bonne colonne de ton application.

Est-ce que ta base est situé sur un lecteur reseau ?
Si tu places ta base de données dans le même répertoire de ton classeur
Est-ce que cela fonctionne ?

Au delà de ce que j'ai énoncé sur ce fil, je n'ai pas vraiment d'autres suggestions !





"remigo" a écrit dans le message de news:

Voici mon code:

Sub ExporterVersAccess()

Dim bd As DAO.Database
Dim Rst As DAO.Recordset

nomfeuille = ActiveCell.Worksheet.Name
With Worksheets(nomfeuille)
.Range("H1:A" & .Range("A65536").End(xlUp).Row).Name = "Plage"
End With

Set bd = OpenDatabase(ThisWorkbook.FullName, False, False, "excel 8.0")

bd.Execute "INSERT INTO TAnalyseTest IN
'P:geologiedocStatistiquesstatistiques.mdb' SELECT * FROM [Plage]"
ThisWorkbook.Names("Plage").Delete
bd.Close
Set bd = Nothing
End Sub

ET Voici mon code d'erreur:

Le moteur de base de données Microsoft Jet n'a pas pu trouver l'objet
'Plage'. Assurez-vous que l'objet existe et que vous avez correctement saisi
son nom et son chemin d'accès.

Lorsque je l'execute ligne par ligne, sur la ligne;

Set bd = OpenDatabase(ThisWorkbook.FullName, False, False, "excel 8.0")
Je ne suis pas dans le même répertoire, est-ce que ça peut changer quelque
chose, et comment y rémédier?

Merci!
Avatar
remigo
Bonjour MichDenis,

J'ai réussi à le faire fonctionner, même en réseau...

Pour que ça fonctionne, j'ai du modifier un peu ton code,

Voici les modif...

Set bd = OpenDatabase(ActiveWorkbook.FullName, False, False, "excel 8.0")
au lieu de:
Set bd = OpenDatabase(ThisWorkbook.FullName, False, False, "excel 8.0")


ActiveWorkbook.Names("Plage").Delete
au lieu de:
ThisWorkbook.Names("Plage").Delete


Merci beaucoup de ton aide précieuse, tes conseils mon guidé vers la solution

@ la prochaine

REMIGO