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

Importation XL dans Access

6 réponses
Avatar
jymgo
Bonsoir.
Je dois régulièrement importer 10 feuilles XL dans 10 tables Access. tout
fonctionne correctement avec les importations enregistrées. Est il possible
toutefois de créer un code (ou une macro) qui réalise automatiquement les 10
imports et qui supprime au final les tables d'erreurs (a cause des numéros
autos).
Merci de votre aide. Crdt. Jymgo

6 réponses

Avatar
FFO
Salut à toi

Tu crées une macro avec autant d'action "TransférerFeuilleCalcul" qu'il y a
de table à alimenter et une action "ExécuterCode" associée à un module dans
lequel tu mets ces lignes :

Public Function Fichier_erreur() As Boolean
For Each tdf In CurrentDb.TableDefs
If tdf.Name Like "Errorimport*" Then
CurrentDb.Execute "Drop " & tdf.Name
End If
Next
End Function

Celà devrait convenir

Vérifies le nom des tables d'erreur et adapte en fonction la ligne :

If tdf.Name Like "Errorimport*" Then

Donnes moi des nouvelles !!!!!
Avatar
jymgo
Bonjour et merci beaucoup pour la solution.
L'import fonctionne correctement, contrairement à l'effacement.
J'ai adapté le nom des fichiers d'erreurs en spécifiant '*importErrors*'.
C'est la 1ere fois que je crée un module. A la place de 'Fichier_erreur()'
j'ai inscrit 'effacement()'. C'est le nom que j'ai mis dans la ligne de
commande de la macro 'exécuter code'
Merci de ton aide
JYMGO

"FFO" a écrit :

Salut à toi

Tu crées une macro avec autant d'action "TransférerFeuilleCalcul" qu'il y a
de table à alimenter et une action "ExécuterCode" associée à un module dans
lequel tu mets ces lignes :

Public Function Fichier_erreur() As Boolean
For Each tdf In CurrentDb.TableDefs
If tdf.Name Like "Errorimport*" Then
CurrentDb.Execute "Drop " & tdf.Name
End If
Next
End Function

Celà devrait convenir

Vérifies le nom des tables d'erreur et adapte en fonction la ligne :

If tdf.Name Like "Errorimport*" Then

Donnes moi des nouvelles !!!!!



Avatar
FFO
Rebonjour

J'ai pas trés bien compris si tout fonctionnait correctement

Merci de me confirmer !!!!

Sinon me dire ce qui ne va pas, à quel niveau ou les symptomes
Avatar
jymgo
OK
L'effacement ne fonctionne pas.
Le système me retourne une erreur en me disant que le champ F1 n'existe pas
or, je n'ai pas de champ F1 dans mes feuilles XL.
Néanmoins, le plus important, c'est que l'import fonctionne, ce qui me fait
gagner un temps précieux. J'ai plusieurs projet Access en cours et
certainement d'autres problèmes à soumettre. Merci encore de prendre du temps
pour moi
Crdt
Jymgo

"FFO" a écrit :

Rebonjour

J'ai pas trés bien compris si tout fonctionnait correctement

Merci de me confirmer !!!!

Sinon me dire ce qui ne va pas, à quel niveau ou les symptomes


Avatar
FFO
Rebonjours à toi

Celà n'a rien à voir avec la suppression des tables '*importErrors*' ????

Ton message est trés certainement lié à l'import d'un fichier dans une table

Dans la macro pour cet import tu as du paramétrer "Contient noms de champs"
à Oui
Ce qui tout à fait correct mais nécessite que tu est le même nombre et la
même appellation des champs entre le fichier à importer et ta table en
correspondance
Sinon tu as ce message d'erreur

Tu as donc soit un champ dans ton fichier (une colonne) non déclaré dans ta
table Access soit avec un entête différent (au caractère prés)

Attention de ne pas avoir dans ton fichier Excel un caractère résiduel dans
une colonne suivant celles qui doivent être importé

Si tel est le cas (même avec un blanc ) Access considère que la colonne qui
porte ce caractère est à importer
Ne trouvant pas son homologue dans la table de destination et de plus
n'ayant pas d'entête pour celle-ci dans ton fichier Excel tu as ce message
avec par défaut le nom "Champ1" comme nom de champ

Je te préconise d'ouvrir le fichier Excel de sélectionner toutes les
colonnes qui ne doivent pas être importées et de les supprimer Ces colonnes
resteront aprés cette manipulation à l'écran ce qui est normal (la feuille
Excel reste toujours avec le même nombre de colonne et de lignes) mais elles
seront totalement vidées et donc virtuelles
Tu enregistres ce fichier, le fermes et tu réessaies l'import sous Access

Tiens moi informé !!!!!!
Avatar
jymgo
Merci de ta réponse FFO et désolé pour le délai de réponse
1) l'import fonctionne très bien (merci encore)
2) l'effacement des tables d'erreurs ne se fait pas.

J'avais pris la peine au préalable de contrôler les champs à importer et
ceux des tables et j'avais effectivement supprimer (virtuellement) les
colonnes situées à droite du dernier champ à importer.
Rien n'y fait. L'importation me génère 10 tables d'erreurs, liés à la
numérotation automatique. J'ai présenté mes tables différemment, ce qui me
permet de supprimer les tables d'erreurs en une seule fois.
On va clore ce sujet, mais je serai certainement amené à recontacter le
forum pour d'autres solutions. Merci à toir. Jymgo

"FFO" a écrit :

Rebonjours à toi

Celà n'a rien à voir avec la suppression des tables '*importErrors*' ????

Ton message est trés certainement lié à l'import d'un fichier dans une table

Dans la macro pour cet import tu as du paramétrer "Contient noms de champs"
à Oui
Ce qui tout à fait correct mais nécessite que tu est le même nombre et la
même appellation des champs entre le fichier à importer et ta table en
correspondance
Sinon tu as ce message d'erreur

Tu as donc soit un champ dans ton fichier (une colonne) non déclaré dans ta
table Access soit avec un entête différent (au caractère prés)

Attention de ne pas avoir dans ton fichier Excel un caractère résiduel dans
une colonne suivant celles qui doivent être importé

Si tel est le cas (même avec un blanc ) Access considère que la colonne qui
porte ce caractère est à importer
Ne trouvant pas son homologue dans la table de destination et de plus
n'ayant pas d'entête pour celle-ci dans ton fichier Excel tu as ce message
avec par défaut le nom "Champ1" comme nom de champ

Je te préconise d'ouvrir le fichier Excel de sélectionner toutes les
colonnes qui ne doivent pas être importées et de les supprimer Ces colonnes
resteront aprés cette manipulation à l'écran ce qui est normal (la feuille
Excel reste toujours avec le même nombre de colonne et de lignes) mais elles
seront totalement vidées et donc virtuelles
Tu enregistres ce fichier, le fermes et tu réessaies l'import sous Access

Tiens moi informé !!!!!!