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

Importation Feuille de Excel dans Access

16 réponses
Avatar
Lou
Bonjour,

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

For i = 1 To .FoundFiles.Count
Workbooks.Open FileName:=.FoundFiles(i)
nomfi = .FoundFiles(i)
sonnom = ActiveWorkbook.Name
derligne = ActiveSheet.Range("A65534").End(xlUp)
Workbooks(Profil1).Close savechanges:=False
mazone = "a1:z" & derligne
DoCmd.TransferSpreadsheet acImport, , "matableaccess",
.FoundFiles(i), False, mazone

Next i
Else
MsgBox ("Aucun fichier ")
End If
End With
End Sub

6 réponses

1 2
Avatar
Lou
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

DoCmd.TransferSpreadsheet acImport, , _
"Donnees", .FoundFiles(i), False, mazone

Merci encore pour votre aide avec ceci.






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
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

Avatar
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


Avatar
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
Avatar
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



Avatar
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

1 2