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

10 réponses

1 2
Avatar
Eric
Bonjour,

Et en remplacant la constante msoFileTypeExcelWorkbooks par 4, ça donne
quoi ?

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:importationProfilsProfil. 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:ImportationProfilsProfil"


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:úlse
mazone = "a1:z" & derligne
DoCmd.TransferSpreadsheet acImport, , "matableaccess",
.FoundFiles(i), False, mazone

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


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

Avatar
Lou
Merci pour votre réponse...

Maintenant il dit "Objet requis" et arrête à la ligne Workbooks.Open
FileName:=.FoundFiles(i)


Bonjour,

Et en remplacant la constante msoFileTypeExcelWorkbooks par 4, ça donne
quoi ?

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:importationProfilsProfil. 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:ImportationProfilsProfil"


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:úlse
mazone = "a1:z" & derligne
DoCmd.TransferSpreadsheet acImport, , "matableaccess",
.FoundFiles(i), False, mazone

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


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




Avatar
Eric
re,

Voila une procédure qui devrait fonctionner, du moins je l'espère ;-)

Private Sub zz() ' ou sur Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
chemin = "c:ImportationProfilsProfil"
With Application.FileSearch
.NewSearch
.FileType = 4 ' 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
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Données").Select
derligne = ActiveSheet.Range("A65534").End(xlUp).Row
Workbooks(sonnom).Close savechanges:úlse
' La 1ere ligne du classeur contient le nom des champs
'donc sélection de la zone à transférer à partir ligne 2
mazone = "Données!A2:C" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
"matableaccess", .FoundFiles(i), False, mazone
Next i
Else
MsgBox ("Aucun fichier ")
End If
End With
End Sub

Merci pour votre réponse...

Maintenant il dit "Objet requis" et arrête à la ligne Workbooks.Open
FileName:=.FoundFiles(i)



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

Avatar
Lou
Un gros merci pour votre réponse,

J'ai essayé votre procédure et elle bloque à

Workbooks.Open FileName:=.FoundFiles(i)

Lorsque je pointe sur FoundFiles, dans la bulle info je vois qu'il a bien
trouvé le premier doc mais ça s'arrête là.

Voyez-vous une solution?




re,

Voila une procédure qui devrait fonctionner, du moins je l'espère ;-)

Private Sub zz() ' ou sur Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
chemin = "c:ImportationProfilsProfil"
With Application.FileSearch
.NewSearch
.FileType = 4 ' 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
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Données").Select
derligne = ActiveSheet.Range("A65534").End(xlUp).Row
Workbooks(sonnom).Close savechanges:úlse
' La 1ere ligne du classeur contient le nom des champs
'donc sélection de la zone à transférer à partir ligne 2
mazone = "Données!A2:C" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
"matableaccess", .FoundFiles(i), False, mazone
Next i
Else
MsgBox ("Aucun fichier ")
End If
End With
End Sub

Merci pour votre réponse...

Maintenant il dit "Objet requis" et arrête à la ligne Workbooks.Open
FileName:=.FoundFiles(i)



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




Avatar
Eric
re,

Je viens de tester et je n'ai pas le problème évoqué. Quel message
d'erreur as-tu ?

Un gros merci pour votre réponse,

J'ai essayé votre procédure et elle bloque à

Workbooks.Open FileName:=.FoundFiles(i)

Lorsque je pointe sur FoundFiles, dans la bulle info je vois qu'il a bien
trouvé le premier doc mais ça s'arrête là.

Voyez-vous une solution?




re,

Voila une procédure qui devrait fonctionner, du moins je l'espère ;-)

Private Sub zz() ' ou sur Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
chemin = "c:ImportationProfilsProfil"
With Application.FileSearch
.NewSearch
.FileType = 4 ' 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
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Données").Select
derligne = ActiveSheet.Range("A65534").End(xlUp).Row
Workbooks(sonnom).Close savechanges:úlse
' La 1ere ligne du classeur contient le nom des champs
'donc sélection de la zone à transférer à partir ligne 2
mazone = "Données!A2:C" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
"matableaccess", .FoundFiles(i), False, mazone
Next i
Else
MsgBox ("Aucun fichier ")
End If
End With
End Sub

Merci pour votre réponse...

Maintenant il dit "Objet requis" et arrête à la ligne Workbooks.Open
FileName:=.FoundFiles(i)

--

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




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



Avatar
Lou
Je reçois le message suivant :

"Erreur de compilation
Projet ou bibliothèque introuvable"

Et il s'arrête sur le mot Workbooks à la ligne 17




re,

Je viens de tester et je n'ai pas le problème évoqué. Quel message
d'erreur as-tu ?

Un gros merci pour votre réponse,

J'ai essayé votre procédure et elle bloque à

Workbooks.Open FileName:=.FoundFiles(i)

Lorsque je pointe sur FoundFiles, dans la bulle info je vois qu'il a bien
trouvé le premier doc mais ça s'arrête là.

Voyez-vous une solution?




re,

Voila une procédure qui devrait fonctionner, du moins je l'espère ;-)

Private Sub zz() ' ou sur Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
chemin = "c:ImportationProfilsProfil"
With Application.FileSearch
.NewSearch
.FileType = 4 ' 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
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Données").Select
derligne = ActiveSheet.Range("A65534").End(xlUp).Row
Workbooks(sonnom).Close savechanges:úlse
' La 1ere ligne du classeur contient le nom des champs
'donc sélection de la zone à transférer à partir ligne 2
mazone = "Données!A2:C" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
"matableaccess", .FoundFiles(i), False, mazone
Next i
Else
MsgBox ("Aucun fichier ")
End If
End With
End Sub

Merci pour votre réponse...

Maintenant il dit "Objet requis" et arrête à la ligne Workbooks.Open
FileName:=.FoundFiles(i)

--

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




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






Avatar
Fabien
Je reçois le message suivant :

"Erreur de compilation
Projet ou bibliothèque introuvable"

Et il s'arrête sur le mot Workbooks à la ligne 17




re,

Je viens de tester et je n'ai pas le problème évoqué. Quel message
d'erreur as-tu ?

Un gros merci pour votre réponse,

J'ai essayé votre procédure et elle bloque à

Workbooks.Open FileName:=.FoundFiles(i)

Lorsque je pointe sur FoundFiles, dans la bulle info je vois qu'il a bien
trouvé le premier doc mais ça s'arrête là.

Voyez-vous une solution?




re,

Voila une procédure qui devrait fonctionner, du moins je l'espère ;-)

Private Sub zz() ' ou sur Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
chemin = "c:ImportationProfilsProfil"
With Application.FileSearch
.NewSearch
.FileType = 4 ' 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
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Données").Select
derligne = ActiveSheet.Range("A65534").End(xlUp).Row
Workbooks(sonnom).Close savechanges:úlse
' La 1ere ligne du classeur contient le nom des champs
'donc sélection de la zone à transférer à partir ligne 2
mazone = "Données!A2:C" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
"matableaccess", .FoundFiles(i), False, mazone
Next i
Else
MsgBox ("Aucun fichier ")
End If
End With
End Sub

Merci pour votre réponse...

Maintenant il dit "Objet requis" et arrête à la ligne Workbooks.Open
FileName:=.FoundFiles(i)

--

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

--


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

Salut,


Lorsque tu es dans ton module, cliques sur Outils>Références et ajoutes
la référence à la bib Microsoft Excel xx.x object library.
@+





Avatar
Eric
Bonjour Fabien,

Merci pour le suivi.
Mais Lou n'a pas lu le début de la procédure (2ème ligne). Il est bien
inscrit:
Private Sub zz() ' ou sur Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library

c'est vrai, j'aurais du faire un effort et mettre :
'Charger la référence Microsoft Excel x.x Object Library ;-)

Salut,
Lorsque tu es dans ton module, cliques sur Outils>Références et ajoutes
la référence à la bib Microsoft Excel xx.x object library.
@+


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

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




Bonjour Fabien,

Merci pour le suivi.
Mais Lou n'a pas lu le début de la procédure (2ème ligne). Il est bien
inscrit:
Private Sub zz() ' ou sur Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library

c'est vrai, j'aurais du faire un effort et mettre :
'Charger la référence Microsoft Excel x.x Object Library ;-)

Salut,
Lorsque tu es dans ton module, cliques sur Outils>Références et ajoutes
la référence à la bib Microsoft Excel xx.x object library.
@+


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




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

1 2