J'ai besoin de transférer les données de plusieurs fichiers Excel dans une
base de données acces. Après quelques recherches, j'ai trouvé le code
suivant mais lorsque je l'essaie, il me donne un erreur sur Filetype. J'ai
trouvé se code dans un forum et la personne qui a écrit ce code conseillait
de s'assurer que MsScript Runtime et Ms Scripting soient cochées. J'ai coché
MsScript Runtime mais je n'ai pas Ms scripting.
Les documents excel qui doivent être transférés sont dans
c:\importationProfils\Profil. La feuille que je veux qui soit transférée se
nomme "donnée"
Est-ce que quelqu'un peu m'aider avec ceci. Merci énormément pour votre aide.
Voici une copie du code.
Private Sub Commande0_Click()
Dim i, chemin
chemin = "c:\ImportationProfils\Profil\"
With Application.FileSearch
.NewSearch
.FileType = msoFileTypeExcelworkbooks
.SearchSubFolders = False
.LookIn = chemin
If .Execute() <> 0 Then
Après quelques essais, il me demande de nommer mes champs de F1 à F.. pour le nombre de colonnes que j'ai. Donc j'ai effacer les noms de champs de ma table et je les ai remplacé avec F1 jusqu'à F23 et il me transfert mon information. Ça semble fonctionner. Est-ce qu'il y a une raison spécial de devoir nommer les champs de cette manière?
Bonjour,
Le 1er champ de la table ne serait-il pas clé primaire? Et si la 1ere colonne d'une feuille donneees d'un classeur contient des cellules vides, cela devrait être la raison.
Rem: dans le code, j'ai défini la zone de A2:Cdernierligne ce qui correspond à une zone de 3 colonnes. Tu peux remplacer par A2:Zderniereligne ou par A2:IVderniereligne du style: mazone = "Données!A2:Z" & derligne
Bonjour,
Vous avez raison, je n'avais pas bien suivi les instructions.
J'ai activé ces deux options et la procédure semble se rendre plus loin mais maintenant, j'ai un message m'indiquant que Access n'a pas pu ajouter les données à la table à la suite de violation de clé. Et la procédure s'arrête à la ligne 28 et 29
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Après quelques essais, il me demande de nommer mes champs de F1 à F.. pour le
nombre de colonnes que j'ai. Donc j'ai effacer les noms de champs de ma
table et je les ai remplacé avec F1 jusqu'à F23 et il me transfert mon
information. Ça semble fonctionner. Est-ce qu'il y a une raison spécial de
devoir nommer les champs de cette manière?
Bonjour,
Le 1er champ de la table ne serait-il pas clé primaire? Et si la 1ere
colonne d'une feuille donneees d'un classeur contient des cellules
vides, cela devrait être la raison.
Rem: dans le code, j'ai défini la zone de A2:Cdernierligne ce qui
correspond à une zone de 3 colonnes. Tu peux remplacer par
A2:Zderniereligne ou par A2:IVderniereligne
du style: mazone = "Données!A2:Z" & derligne
Bonjour,
Vous avez raison, je n'avais pas bien suivi les instructions.
J'ai activé ces deux options et la procédure semble se rendre plus loin mais
maintenant, j'ai un message m'indiquant que Access n'a pas pu ajouter les
données à la table à la suite de violation de clé. Et la procédure s'arrête
à la ligne 28 et 29
Après quelques essais, il me demande de nommer mes champs de F1 à F.. pour le nombre de colonnes que j'ai. Donc j'ai effacer les noms de champs de ma table et je les ai remplacé avec F1 jusqu'à F23 et il me transfert mon information. Ça semble fonctionner. Est-ce qu'il y a une raison spécial de devoir nommer les champs de cette manière?
Bonjour,
Le 1er champ de la table ne serait-il pas clé primaire? Et si la 1ere colonne d'une feuille donneees d'un classeur contient des cellules vides, cela devrait être la raison.
Rem: dans le code, j'ai défini la zone de A2:Cdernierligne ce qui correspond à une zone de 3 colonnes. Tu peux remplacer par A2:Zderniereligne ou par A2:IVderniereligne du style: mazone = "Données!A2:Z" & derligne
Bonjour,
Vous avez raison, je n'avais pas bien suivi les instructions.
J'ai activé ces deux options et la procédure semble se rendre plus loin mais maintenant, j'ai un message m'indiquant que Access n'a pas pu ajouter les données à la table à la suite de violation de clé. Et la procédure s'arrête à la ligne 28 et 29
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Eric
Re,
Donc la table est créée par l'importation.
Modifie dans la procédure la ligne suivante: mazone = "Données!A2:Z" & derligne ' pas bon en mazone = "Données!A1:Z" & derligne 'BON
et aussi celle-ci: DoCmd.TransferSpreadsheet acImport, , _ "Table1", .FoundFiles(i), False, mazone en DoCmd.TransferSpreadsheet acImport, , _ "Table1", .FoundFiles(i), True, mazone
Cette derniere commande indique à Access que la 1ere ligne de la feuille importée 'Donnees' de chaque fichier contient le nom des champs. Il faut évidemment que la table soit créée au moment de la 1ère importation et non préalablement.
Après quelques essais, il me demande de nommer mes champs de F1 à F.. pour le nombre de colonnes que j'ai. Donc j'ai effacer les noms de champs de ma table et je les ai remplacé avec F1 jusqu'à F23 et il me transfert mon information. Ça semble fonctionner. Est-ce qu'il y a une raison spécial de devoir nommer les champs de cette manière?
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Re,
Donc la table est créée par l'importation.
Modifie dans la procédure
la ligne suivante:
mazone = "Données!A2:Z" & derligne ' pas bon
en
mazone = "Données!A1:Z" & derligne 'BON
et aussi celle-ci:
DoCmd.TransferSpreadsheet acImport, , _
"Table1", .FoundFiles(i), False, mazone
en
DoCmd.TransferSpreadsheet acImport, , _
"Table1", .FoundFiles(i), True, mazone
Cette derniere commande indique à Access que la 1ere ligne de la feuille
importée 'Donnees' de chaque fichier contient le nom des champs. Il faut
évidemment que la table soit créée au moment de la 1ère importation et
non préalablement.
Après quelques essais, il me demande de nommer mes champs de F1 à F.. pour le
nombre de colonnes que j'ai. Donc j'ai effacer les noms de champs de ma
table et je les ai remplacé avec F1 jusqu'à F23 et il me transfert mon
information. Ça semble fonctionner. Est-ce qu'il y a une raison spécial de
devoir nommer les champs de cette manière?
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Modifie dans la procédure la ligne suivante: mazone = "Données!A2:Z" & derligne ' pas bon en mazone = "Données!A1:Z" & derligne 'BON
et aussi celle-ci: DoCmd.TransferSpreadsheet acImport, , _ "Table1", .FoundFiles(i), False, mazone en DoCmd.TransferSpreadsheet acImport, , _ "Table1", .FoundFiles(i), True, mazone
Cette derniere commande indique à Access que la 1ere ligne de la feuille importée 'Donnees' de chaque fichier contient le nom des champs. Il faut évidemment que la table soit créée au moment de la 1ère importation et non préalablement.
Après quelques essais, il me demande de nommer mes champs de F1 à F.. pour le nombre de colonnes que j'ai. Donc j'ai effacer les noms de champs de ma table et je les ai remplacé avec F1 jusqu'à F23 et il me transfert mon information. Ça semble fonctionner. Est-ce qu'il y a une raison spécial de devoir nommer les champs de cette manière?
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Eric
.../... Corriges l'accent sur Données. C'est Donnees dans ton code.
Re,
Donc la table est créée par l'importation.
Modifie dans la procédure la ligne suivante: mazone = "Données!A2:Z" & derligne ' pas bon en mazone = "Données!A1:Z" & derligne 'BON
et aussi celle-ci: DoCmd.TransferSpreadsheet acImport, , _ "Table1", .FoundFiles(i), False, mazone en DoCmd.TransferSpreadsheet acImport, , _ "Table1", .FoundFiles(i), True, mazone
Cette derniere commande indique à Access que la 1ere ligne de la feuille importée 'Donnees' de chaque fichier contient le nom des champs. Il faut évidemment que la table soit créée au moment de la 1ère importation et non préalablement.
Après quelques essais, il me demande de nommer mes champs de F1 à F.. pour le nombre de colonnes que j'ai. Donc j'ai effacer les noms de champs de ma table et je les ai remplacé avec F1 jusqu'à F23 et il me transfert mon information. Ça semble fonctionner. Est-ce qu'il y a une raison spécial de devoir nommer les champs de cette manière?
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
.../...
Corriges l'accent sur Données. C'est Donnees dans ton code.
Re,
Donc la table est créée par l'importation.
Modifie dans la procédure
la ligne suivante:
mazone = "Données!A2:Z" & derligne ' pas bon
en
mazone = "Données!A1:Z" & derligne 'BON
et aussi celle-ci:
DoCmd.TransferSpreadsheet acImport, , _
"Table1", .FoundFiles(i), False, mazone
en
DoCmd.TransferSpreadsheet acImport, , _
"Table1", .FoundFiles(i), True, mazone
Cette derniere commande indique à Access que la 1ere ligne de la feuille
importée 'Donnees' de chaque fichier contient le nom des champs. Il faut
évidemment que la table soit créée au moment de la 1ère importation et
non préalablement.
Après quelques essais, il me demande de nommer mes champs de F1 à F..
pour le nombre de colonnes que j'ai. Donc j'ai effacer les noms de
champs de ma table et je les ai remplacé avec F1 jusqu'à F23 et il me
transfert mon information. Ça semble fonctionner. Est-ce qu'il y a
une raison spécial de devoir nommer les champs de cette manière?
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
.../... Corriges l'accent sur Données. C'est Donnees dans ton code.
Re,
Donc la table est créée par l'importation.
Modifie dans la procédure la ligne suivante: mazone = "Données!A2:Z" & derligne ' pas bon en mazone = "Données!A1:Z" & derligne 'BON
et aussi celle-ci: DoCmd.TransferSpreadsheet acImport, , _ "Table1", .FoundFiles(i), False, mazone en DoCmd.TransferSpreadsheet acImport, , _ "Table1", .FoundFiles(i), True, mazone
Cette derniere commande indique à Access que la 1ere ligne de la feuille importée 'Donnees' de chaque fichier contient le nom des champs. Il faut évidemment que la table soit créée au moment de la 1ère importation et non préalablement.
Après quelques essais, il me demande de nommer mes champs de F1 à F.. pour le nombre de colonnes que j'ai. Donc j'ai effacer les noms de champs de ma table et je les ai remplacé avec F1 jusqu'à F23 et il me transfert mon information. Ça semble fonctionner. Est-ce qu'il y a une raison spécial de devoir nommer les champs de cette manière?
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Eric
:-(
Ayant fait du copier-coller des lignes de ma procédure, je n'avais pas remarqué que ta table s'appelait elle aussi Donnees. Donc il te faut remplacer Table1 par Donnees dans l'instruction DoCmd.TransferSpreadsheet acImport, , _ "Table1", .FoundFiles(i), True, mazone
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
:-(
Ayant fait du copier-coller des lignes de ma procédure, je n'avais pas
remarqué que ta table s'appelait elle aussi Donnees. Donc il te faut
remplacer Table1 par Donnees dans l'instruction
DoCmd.TransferSpreadsheet acImport, , _
"Table1", .FoundFiles(i), True, mazone
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Ayant fait du copier-coller des lignes de ma procédure, je n'avais pas remarqué que ta table s'appelait elle aussi Donnees. Donc il te faut remplacer Table1 par Donnees dans l'instruction DoCmd.TransferSpreadsheet acImport, , _ "Table1", .FoundFiles(i), True, mazone
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Lou
Ça marche...Un gros merci pour votre aide!! Grace à votre aide je vais sauver énormément de temps!!!
Lou
:-(
Ayant fait du copier-coller des lignes de ma procédure, je n'avais pas remarqué que ta table s'appelait elle aussi Donnees. Donc il te faut remplacer Table1 par Donnees dans l'instruction DoCmd.TransferSpreadsheet acImport, , _ "Table1", .FoundFiles(i), True, mazone
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Ça marche...Un gros merci pour votre aide!! Grace à votre aide je vais
sauver énormément de temps!!!
Lou
:-(
Ayant fait du copier-coller des lignes de ma procédure, je n'avais pas
remarqué que ta table s'appelait elle aussi Donnees. Donc il te faut
remplacer Table1 par Donnees dans l'instruction
DoCmd.TransferSpreadsheet acImport, , _
"Table1", .FoundFiles(i), True, mazone
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Ça marche...Un gros merci pour votre aide!! Grace à votre aide je vais sauver énormément de temps!!!
Lou
:-(
Ayant fait du copier-coller des lignes de ma procédure, je n'avais pas remarqué que ta table s'appelait elle aussi Donnees. Donc il te faut remplacer Table1 par Donnees dans l'instruction DoCmd.TransferSpreadsheet acImport, , _ "Table1", .FoundFiles(i), True, mazone
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Eric
Bonjour,
Merci pour le retour. Juste une précision, si la table est préalablement créée avant l'importation des feuilles Donnees de chaque classeur, la procédure fonctionne aussi sous réserve que les noms des champs de la table correspondent exactement aux noms stockés sur la 1ère ligne de chaque feuille.
Bonne continuation
Ça marche...Un gros merci pour votre aide!! Grace à votre aide je vais sauver énormément de temps!!!
Lou
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour,
Merci pour le retour.
Juste une précision, si la table est préalablement créée avant
l'importation des feuilles Donnees de chaque classeur, la procédure
fonctionne aussi sous réserve que les noms des champs de la table
correspondent exactement aux noms stockés sur la 1ère ligne de chaque
feuille.
Bonne continuation
Ça marche...Un gros merci pour votre aide!! Grace à votre aide je vais
sauver énormément de temps!!!
Lou
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Merci pour le retour. Juste une précision, si la table est préalablement créée avant l'importation des feuilles Donnees de chaque classeur, la procédure fonctionne aussi sous réserve que les noms des champs de la table correspondent exactement aux noms stockés sur la 1ère ligne de chaque feuille.
Bonne continuation
Ça marche...Un gros merci pour votre aide!! Grace à votre aide je vais sauver énormément de temps!!!
Lou
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr