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

Importer des données de Excel dans Access

11 réponses
Avatar
Lou
Bonjour,

Avec la version 2003 de Access, il était possible d'utiliser Filesearch.
Maintenant, on me dit qu'avec la version 2007 cette commande n'est plus
disponible. Après plusieurs recherches sur différents site on explique que
Dir pourrait dépaner. J'ai essayé de modifier ce que j'utilisait dans 2003
avec "Filesarche" utilisant "Dir". Par contre n'étant qu'une débutante, je
n'arrive pas à faire fonctionner le code. Est-ce que qulqu'un aurait la
gentillesse d'y geter un oeil et me guider un peu?

Merci énormément pour votre aide!!

Ce code devait rechercher tous les documents d'excel dans un dossier et
importer dans Access le contenu de la feuille "Données". La table de Access
se nomme également "Donnees"

Le voici :

Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library

Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
sPath = "P:\ImportationProfils\Profil"
ChDir sPath
sFil = Dir("*.xlx") 'change or add formats
Do While sFile <> "" 'will start LOOP until all files in folder sPath have
been looped trough
Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
sonnom = ActiveWorkbook.Name
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Donnees").Select
derligne = ActiveSheet.Range("A65534").End(xlUp).Row
Workbooks(sonnom).Close savechanges:=False
' La 1ere ligne du classeur contient le nom des champs
'donc sélection de la zone à transférer à partir ligne 2
mazone = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
sFil = Dir
Loop 'End of LOOP
End Sub

10 réponses

1 2
Avatar
michel chambrillon
Bonjour
Tu as des fautes de frappes
dans le do while la variable sFile au lieu de sFil
dans le masque de fichier *.xlx au lieu de
*.xls pour 2003
ou
*.xlsx pour 2007
Michel
"Lou" a écrit dans le message de
news:
Bonjour,

Avec la version 2003 de Access, il était possible d'utiliser Filesearch.
Maintenant, on me dit qu'avec la version 2007 cette commande n'est plus
disponible. Après plusieurs recherches sur différents site on explique
que
Dir pourrait dépaner. J'ai essayé de modifier ce que j'utilisait dans
2003
avec "Filesarche" utilisant "Dir". Par contre n'étant qu'une débutante,
je
n'arrive pas à faire fonctionner le code. Est-ce que qulqu'un aurait la
gentillesse d'y geter un oeil et me guider un peu?

Merci énormément pour votre aide!!

Ce code devait rechercher tous les documents d'excel dans un dossier et
importer dans Access le contenu de la feuille "Données". La table de
Access
se nomme également "Donnees"

Le voici :

Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library

Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
sPath = "P:ImportationProfilsProfil"
ChDir sPath
sFil = Dir("*.xlx") 'change or add formats
Do While sFile <> "" 'will start LOOP until all files in folder sPath have
been looped trough
Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
sonnom = ActiveWorkbook.Name
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
sFil = Dir
Loop 'End of LOOP
End Sub


Avatar
michel chambrillon
Bonjour
Tu as une faute d'orthographe dans le nom de ta variable sFile dans le do
while de ta boucle
quand au masque de fichier dans le dir(*.xlx") si tu es en 2003 essaie *.xls
sinon en 2007 c'est *.xlsx
Michel
"Lou" a écrit dans le message de
news:
Bonjour,

Avec la version 2003 de Access, il était possible d'utiliser Filesearch.
Maintenant, on me dit qu'avec la version 2007 cette commande n'est plus
disponible. Après plusieurs recherches sur différents site on explique
que
Dir pourrait dépaner. J'ai essayé de modifier ce que j'utilisait dans
2003
avec "Filesarche" utilisant "Dir". Par contre n'étant qu'une débutante,
je
n'arrive pas à faire fonctionner le code. Est-ce que qulqu'un aurait la
gentillesse d'y geter un oeil et me guider un peu?

Merci énormément pour votre aide!!

Ce code devait rechercher tous les documents d'excel dans un dossier et
importer dans Access le contenu de la feuille "Données". La table de
Access
se nomme également "Donnees"

Le voici :

Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library

Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
sPath = "P:ImportationProfilsProfil"
ChDir sPath
sFil = Dir("*.xlx") 'change or add formats
Do While sFile <> "" 'will start LOOP until all files in folder sPath have
been looped trough
Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
sonnom = ActiveWorkbook.Name
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
sFil = Dir
Loop 'End of LOOP
End Sub


Avatar
Lou
Merci pour votre réponse. J'ai fait les corrections mais ça ne fonctionne
toujours pas. Je n'ai peut-être pas bien fait la transition entre le
Filesearch et le Dir.

Voici le code originale, peut-être que vous pourrez voir mon erreur?

Ce code fontionnait très bien avec Acces 2003.

Merci encore pour votre aide, c'est très apprécié.

Code utilisé avec 2003 :

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 = "P: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("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
"Donnees", .FoundFiles(i), True, mazone
Next i
Else
MsgBox ("Aucun fichier ")
End If
End With
End Sub








Bonjour
Tu as des fautes de frappes
dans le do while la variable sFile au lieu de sFil
dans le masque de fichier *.xlx au lieu de
*.xls pour 2003
ou
*.xlsx pour 2007
Michel
"Lou" a écrit dans le message de
news:
Bonjour,

Avec la version 2003 de Access, il était possible d'utiliser Filesearch.
Maintenant, on me dit qu'avec la version 2007 cette commande n'est plus
disponible. Après plusieurs recherches sur différents site on explique
que
Dir pourrait dépaner. J'ai essayé de modifier ce que j'utilisait dans
2003
avec "Filesarche" utilisant "Dir". Par contre n'étant qu'une débutante,
je
n'arrive pas à faire fonctionner le code. Est-ce que qulqu'un aurait la
gentillesse d'y geter un oeil et me guider un peu?

Merci énormément pour votre aide!!

Ce code devait rechercher tous les documents d'excel dans un dossier et
importer dans Access le contenu de la feuille "Données". La table de
Access
se nomme également "Donnees"

Le voici :

Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library

Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
sPath = "P:ImportationProfilsProfil"
ChDir sPath
sFil = Dir("*.xlx") 'change or add formats
Do While sFile <> "" 'will start LOOP until all files in folder sPath have
been looped trough
Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
sonnom = ActiveWorkbook.Name
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
sFil = Dir
Loop 'End of LOOP
End Sub





Avatar
michel chambrillon
Re-Bonjour
Une autre faute de frappe dans la concatenation chemin et nom du fichier
On est sous windows pas unix c' est donc l'anti slash
tu as Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
au lieu de
Set oWbk = Workbooks.Open(sPath & "" & sFil) 'opens the file
Michel
"Lou" a écrit dans le message de
news:
Merci pour votre réponse. J'ai fait les corrections mais ça ne fonctionne
toujours pas. Je n'ai peut-être pas bien fait la transition entre le
Filesearch et le Dir.

Voici le code originale, peut-être que vous pourrez voir mon erreur?

Ce code fontionnait très bien avec Acces 2003.

Merci encore pour votre aide, c'est très apprécié.

Code utilisé avec 2003 :

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 = "P: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("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
"Donnees", .FoundFiles(i), True, mazone
Next i
Else
MsgBox ("Aucun fichier ")
End If
End With
End Sub








Bonjour
Tu as des fautes de frappes
dans le do while la variable sFile au lieu de sFil
dans le masque de fichier *.xlx au lieu de
*.xls pour 2003
ou
*.xlsx pour 2007
Michel
"Lou" a écrit dans le message de
news:
Bonjour,

Avec la version 2003 de Access, il était possible d'utiliser
Filesearch.
Maintenant, on me dit qu'avec la version 2007 cette commande n'est plus
disponible. Après plusieurs recherches sur différents site on explique
que
Dir pourrait dépaner. J'ai essayé de modifier ce que j'utilisait dans
2003
avec "Filesarche" utilisant "Dir". Par contre n'étant qu'une
débutante,
je
n'arrive pas à faire fonctionner le code. Est-ce que qulqu'un aurait
la
gentillesse d'y geter un oeil et me guider un peu?

Merci énormément pour votre aide!!

Ce code devait rechercher tous les documents d'excel dans un dossier et
importer dans Access le contenu de la feuille "Données". La table de
Access
se nomme également "Donnees"

Le voici :

Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library

Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
sPath = "P:ImportationProfilsProfil"
ChDir sPath
sFil = Dir("*.xlx") 'change or add formats
Do While sFile <> "" 'will start LOOP until all files in folder sPath
have
been looped trough
Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
sonnom = ActiveWorkbook.Name
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
sFil = Dir
Loop 'End of LOOP
End Sub







Avatar
Lou
J'ai fait cette modification mais ça ne fonctionne toujours pas.




Re-Bonjour
Une autre faute de frappe dans la concatenation chemin et nom du fichier
On est sous windows pas unix c' est donc l'anti slash
tu as Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
au lieu de
Set oWbk = Workbooks.Open(sPath & "" & sFil) 'opens the file
Michel
"Lou" a écrit dans le message de
news:
Merci pour votre réponse. J'ai fait les corrections mais ça ne fonctionne
toujours pas. Je n'ai peut-être pas bien fait la transition entre le
Filesearch et le Dir.

Voici le code originale, peut-être que vous pourrez voir mon erreur?

Ce code fontionnait très bien avec Acces 2003.

Merci encore pour votre aide, c'est très apprécié.

Code utilisé avec 2003 :

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 = "P: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("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
"Donnees", .FoundFiles(i), True, mazone
Next i
Else
MsgBox ("Aucun fichier ")
End If
End With
End Sub








Bonjour
Tu as des fautes de frappes
dans le do while la variable sFile au lieu de sFil
dans le masque de fichier *.xlx au lieu de
*.xls pour 2003
ou
*.xlsx pour 2007
Michel
"Lou" a écrit dans le message de
news:
Bonjour,

Avec la version 2003 de Access, il était possible d'utiliser
Filesearch.
Maintenant, on me dit qu'avec la version 2007 cette commande n'est plus
disponible. Après plusieurs recherches sur différents site on explique
que
Dir pourrait dépaner. J'ai essayé de modifier ce que j'utilisait dans
2003
avec "Filesarche" utilisant "Dir". Par contre n'étant qu'une
débutante,
je
n'arrive pas à faire fonctionner le code. Est-ce que qulqu'un aurait
la
gentillesse d'y geter un oeil et me guider un peu?

Merci énormément pour votre aide!!

Ce code devait rechercher tous les documents d'excel dans un dossier et
importer dans Access le contenu de la feuille "Données". La table de
Access
se nomme également "Donnees"

Le voici :

Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library

Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
sPath = "P:ImportationProfilsProfil"
ChDir sPath
sFil = Dir("*.xlx") 'change or add formats
Do While sFile <> "" 'will start LOOP until all files in folder sPath
have
been looped trough
Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
sonnom = ActiveWorkbook.Name
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
sFil = Dir
Loop 'End of LOOP
End Sub











Avatar
michel chambrillon
B-Jour
J'ai teste sur une base perso en commentant les lignes excel, cela boucle
bien sur tous les fichiers excel
Quel ligne de code plante. Essaie de lancer le code en mode pas a pas (F8)
et precise nous ce qui ne marche pas
Michel
"Lou" a écrit dans le message de
news:
J'ai fait cette modification mais ça ne fonctionne toujours pas.




Re-Bonjour
Une autre faute de frappe dans la concatenation chemin et nom du fichier
On est sous windows pas unix c' est donc l'anti slash
tu as Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
au lieu de
Set oWbk = Workbooks.Open(sPath & "" & sFil) 'opens the file
Michel
"Lou" a écrit dans le message de
news:
Merci pour votre réponse. J'ai fait les corrections mais ça ne
fonctionne
toujours pas. Je n'ai peut-être pas bien fait la transition entre le
Filesearch et le Dir.

Voici le code originale, peut-être que vous pourrez voir mon erreur?

Ce code fontionnait très bien avec Acces 2003.

Merci encore pour votre aide, c'est très apprécié.

Code utilisé avec 2003 :

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 = "P: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("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
"Donnees", .FoundFiles(i), True, mazone
Next i
Else
MsgBox ("Aucun fichier ")
End If
End With
End Sub








Bonjour
Tu as des fautes de frappes
dans le do while la variable sFile au lieu de sFil
dans le masque de fichier *.xlx au lieu de
*.xls pour 2003
ou
*.xlsx pour 2007
Michel
"Lou" a écrit dans le message de
news:
Bonjour,

Avec la version 2003 de Access, il était possible d'utiliser
Filesearch.
Maintenant, on me dit qu'avec la version 2007 cette commande n'est
plus
disponible. Après plusieurs recherches sur différents site on
explique
que
Dir pourrait dépaner. J'ai essayé de modifier ce que j'utilisait
dans
2003
avec "Filesarche" utilisant "Dir". Par contre n'étant qu'une
débutante,
je
n'arrive pas à faire fonctionner le code. Est-ce que qulqu'un
aurait
la
gentillesse d'y geter un oeil et me guider un peu?

Merci énormément pour votre aide!!

Ce code devait rechercher tous les documents d'excel dans un dossier
et
importer dans Access le contenu de la feuille "Données". La table
de
Access
se nomme également "Donnees"

Le voici :

Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library

Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
sPath = "P:ImportationProfilsProfil"
ChDir sPath
sFil = Dir("*.xlx") 'change or add formats
Do While sFile <> "" 'will start LOOP until all files in folder
sPath
have
been looped trough
Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
sonnom = ActiveWorkbook.Name
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
sFil = Dir
Loop 'End of LOOP
End Sub













Avatar
Lou
Il ne plante pas mais il n'y a pas de résultat. Comme résultat, je devrais
avoir dans ma table "Donnee" de ma base de donnée access 2007, les
informations que j'ai dans la feuille "données" de tous mes fichiers Excel
2003. Est-ce que vous avez quelque chose dans votre table Donnee après
avoir exécuté ce code?


B-Jour
J'ai teste sur une base perso en commentant les lignes excel, cela boucle
bien sur tous les fichiers excel
Quel ligne de code plante. Essaie de lancer le code en mode pas a pas (F8)
et precise nous ce qui ne marche pas
Michel
"Lou" a écrit dans le message de
news:
J'ai fait cette modification mais ça ne fonctionne toujours pas.




Re-Bonjour
Une autre faute de frappe dans la concatenation chemin et nom du fichier
On est sous windows pas unix c' est donc l'anti slash
tu as Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
au lieu de
Set oWbk = Workbooks.Open(sPath & "" & sFil) 'opens the file
Michel
"Lou" a écrit dans le message de
news:
Merci pour votre réponse. J'ai fait les corrections mais ça ne
fonctionne
toujours pas. Je n'ai peut-être pas bien fait la transition entre le
Filesearch et le Dir.

Voici le code originale, peut-être que vous pourrez voir mon erreur?

Ce code fontionnait très bien avec Acces 2003.

Merci encore pour votre aide, c'est très apprécié.

Code utilisé avec 2003 :

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 = "P: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("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
"Donnees", .FoundFiles(i), True, mazone
Next i
Else
MsgBox ("Aucun fichier ")
End If
End With
End Sub








Bonjour
Tu as des fautes de frappes
dans le do while la variable sFile au lieu de sFil
dans le masque de fichier *.xlx au lieu de
*.xls pour 2003
ou
*.xlsx pour 2007
Michel
"Lou" a écrit dans le message de
news:
Bonjour,

Avec la version 2003 de Access, il était possible d'utiliser
Filesearch.
Maintenant, on me dit qu'avec la version 2007 cette commande n'est
plus
disponible. Après plusieurs recherches sur différents site on
explique
que
Dir pourrait dépaner. J'ai essayé de modifier ce que j'utilisait
dans
2003
avec "Filesarche" utilisant "Dir". Par contre n'étant qu'une
débutante,
je
n'arrive pas à faire fonctionner le code. Est-ce que qulqu'un
aurait
la
gentillesse d'y geter un oeil et me guider un peu?

Merci énormément pour votre aide!!

Ce code devait rechercher tous les documents d'excel dans un dossier
et
importer dans Access le contenu de la feuille "Données". La table
de
Access
se nomme également "Donnees"

Le voici :

Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library

Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
sPath = "P:ImportationProfilsProfil"
ChDir sPath
sFil = Dir("*.xlx") 'change or add formats
Do While sFile <> "" 'will start LOOP until all files in folder
sPath
have
been looped trough
Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
sonnom = ActiveWorkbook.Name
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
sFil = Dir
Loop 'End of LOOP
End Sub
















Avatar
michel chambrillon
Question bete mais rentre t'il dans la boucle (lance en pas a pas pour voir)
Autre truc ton chdir te positionne sur un dossier du disque P: or on ne peut
pas changer de disque avec chdir
Ajoute un chdrive "P:" juste avant ton chdir
Pour la suite ce sera pour demain
@plus
Michel
"Lou" a écrit dans le message de
news:
Il ne plante pas mais il n'y a pas de résultat. Comme résultat, je
devrais
avoir dans ma table "Donnee" de ma base de donnée access 2007, les
informations que j'ai dans la feuille "données" de tous mes fichiers Excel
2003. Est-ce que vous avez quelque chose dans votre table Donnee après
avoir exécuté ce code?


B-Jour
J'ai teste sur une base perso en commentant les lignes excel, cela boucle
bien sur tous les fichiers excel
Quel ligne de code plante. Essaie de lancer le code en mode pas a pas
(F8)
et precise nous ce qui ne marche pas
Michel
"Lou" a écrit dans le message de
news:
J'ai fait cette modification mais ça ne fonctionne toujours pas.




Re-Bonjour
Une autre faute de frappe dans la concatenation chemin et nom du
fichier
On est sous windows pas unix c' est donc l'anti slash
tu as Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
au lieu de
Set oWbk = Workbooks.Open(sPath & "" & sFil) 'opens the file
Michel
"Lou" a écrit dans le message de
news:
Merci pour votre réponse. J'ai fait les corrections mais ça ne
fonctionne
toujours pas. Je n'ai peut-être pas bien fait la transition entre
le
Filesearch et le Dir.

Voici le code originale, peut-être que vous pourrez voir mon erreur?

Ce code fontionnait très bien avec Acces 2003.

Merci encore pour votre aide, c'est très apprécié.

Code utilisé avec 2003 :

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 = "P: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("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
"Donnees", .FoundFiles(i), True, mazone
Next i
Else
MsgBox ("Aucun fichier ")
End If
End With
End Sub








Bonjour
Tu as des fautes de frappes
dans le do while la variable sFile au lieu de sFil
dans le masque de fichier *.xlx au lieu de
*.xls pour 2003
ou
*.xlsx pour 2007
Michel
"Lou" a écrit dans le message de
news:
Bonjour,

Avec la version 2003 de Access, il était possible d'utiliser
Filesearch.
Maintenant, on me dit qu'avec la version 2007 cette commande
n'est
plus
disponible. Après plusieurs recherches sur différents site on
explique
que
Dir pourrait dépaner. J'ai essayé de modifier ce que j'utilisait
dans
2003
avec "Filesarche" utilisant "Dir". Par contre n'étant qu'une
débutante,
je
n'arrive pas à faire fonctionner le code. Est-ce que qulqu'un
aurait
la
gentillesse d'y geter un oeil et me guider un peu?

Merci énormément pour votre aide!!

Ce code devait rechercher tous les documents d'excel dans un
dossier
et
importer dans Access le contenu de la feuille "Données". La
table
de
Access
se nomme également "Donnees"

Le voici :

Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library

Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
sPath = "P:ImportationProfilsProfil"
ChDir sPath
sFil = Dir("*.xlx") 'change or add formats
Do While sFile <> "" 'will start LOOP until all files in folder
sPath
have
been looped trough
Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
sonnom = ActiveWorkbook.Name
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
sFil = Dir
Loop 'End of LOOP
End Sub


















Avatar
Lou
Ok le Chdrive a aidé maintenant, il bloque à

DoCmd.transfertspreadsheet acImport, , _
Sfil = Dir


Question bete mais rentre t'il dans la boucle (lance en pas a pas pour voir)
Autre truc ton chdir te positionne sur un dossier du disque P: or on ne peut
pas changer de disque avec chdir
Ajoute un chdrive "P:" juste avant ton chdir
Pour la suite ce sera pour demain
@plus
Michel
"Lou" a écrit dans le message de
news:
Il ne plante pas mais il n'y a pas de résultat. Comme résultat, je
devrais
avoir dans ma table "Donnee" de ma base de donnée access 2007, les
informations que j'ai dans la feuille "données" de tous mes fichiers Excel
2003. Est-ce que vous avez quelque chose dans votre table Donnee après
avoir exécuté ce code?


B-Jour
J'ai teste sur une base perso en commentant les lignes excel, cela boucle
bien sur tous les fichiers excel
Quel ligne de code plante. Essaie de lancer le code en mode pas a pas
(F8)
et precise nous ce qui ne marche pas
Michel
"Lou" a écrit dans le message de
news:
J'ai fait cette modification mais ça ne fonctionne toujours pas.




Re-Bonjour
Une autre faute de frappe dans la concatenation chemin et nom du
fichier
On est sous windows pas unix c' est donc l'anti slash
tu as Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
au lieu de
Set oWbk = Workbooks.Open(sPath & "" & sFil) 'opens the file
Michel
"Lou" a écrit dans le message de
news:
Merci pour votre réponse. J'ai fait les corrections mais ça ne
fonctionne
toujours pas. Je n'ai peut-être pas bien fait la transition entre
le
Filesearch et le Dir.

Voici le code originale, peut-être que vous pourrez voir mon erreur?

Ce code fontionnait très bien avec Acces 2003.

Merci encore pour votre aide, c'est très apprécié.

Code utilisé avec 2003 :

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 = "P: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("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
"Donnees", .FoundFiles(i), True, mazone
Next i
Else
MsgBox ("Aucun fichier ")
End If
End With
End Sub








Bonjour
Tu as des fautes de frappes
dans le do while la variable sFile au lieu de sFil
dans le masque de fichier *.xlx au lieu de
*.xls pour 2003
ou
*.xlsx pour 2007
Michel
"Lou" a écrit dans le message de
news:
Bonjour,

Avec la version 2003 de Access, il était possible d'utiliser
Filesearch.
Maintenant, on me dit qu'avec la version 2007 cette commande
n'est
plus
disponible. Après plusieurs recherches sur différents site on
explique
que
Dir pourrait dépaner. J'ai essayé de modifier ce que j'utilisait
dans
2003
avec "Filesarche" utilisant "Dir". Par contre n'étant qu'une
débutante,
je
n'arrive pas à faire fonctionner le code. Est-ce que qulqu'un
aurait
la
gentillesse d'y geter un oeil et me guider un peu?

Merci énormément pour votre aide!!

Ce code devait rechercher tous les documents d'excel dans un
dossier
et
importer dans Access le contenu de la feuille "Données". La
table
de
Access
se nomme également "Donnees"

Le voici :

Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library

Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
sPath = "P:ImportationProfilsProfil"
ChDir sPath
sFil = Dir("*.xlx") 'change or add formats
Do While sFile <> "" 'will start LOOP until all files in folder
sPath
have
been looped trough
Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
sonnom = ActiveWorkbook.Name
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
sFil = Dir
Loop 'End of LOOP
End Sub





















Avatar
Michel_D
Bonjour,

Regarde l'aide sur TransferSpreadsheet.

PS:Rappel du code qui marchait pour 2003
DoCmd.TransferSpreadsheet acImport, , _
"Donnees", .FoundFiles(i), True, mazone


Ok le Chdrive a aidé maintenant, il bloque à

DoCmd.transfertspreadsheet acImport, , _
Sfil = Dir


Question bete mais rentre t'il dans la boucle (lance en pas a pas pour voir)
Autre truc ton chdir te positionne sur un dossier du disque P: or on ne peut
pas changer de disque avec chdir
Ajoute un chdrive "P:" juste avant ton chdir
Pour la suite ce sera pour demain
@plus
Michel
"Lou" a écrit dans le message de
news:
Il ne plante pas mais il n'y a pas de résultat. Comme résultat, je
devrais
avoir dans ma table "Donnee" de ma base de donnée access 2007, les
informations que j'ai dans la feuille "données" de tous mes fichiers Excel
2003. Est-ce que vous avez quelque chose dans votre table Donnee après
avoir exécuté ce code?


B-Jour
J'ai teste sur une base perso en commentant les lignes excel, cela boucle
bien sur tous les fichiers excel
Quel ligne de code plante. Essaie de lancer le code en mode pas a pas
(F8)
et precise nous ce qui ne marche pas
Michel
"Lou" a écrit dans le message de
news:
J'ai fait cette modification mais ça ne fonctionne toujours pas.




Re-Bonjour
Une autre faute de frappe dans la concatenation chemin et nom du
fichier
On est sous windows pas unix c' est donc l'anti slash
tu as Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
au lieu de
Set oWbk = Workbooks.Open(sPath & "" & sFil) 'opens the file
Michel
"Lou" a écrit dans le message de
news:
Merci pour votre réponse. J'ai fait les corrections mais ça ne
fonctionne
toujours pas. Je n'ai peut-être pas bien fait la transition entre
le
Filesearch et le Dir.

Voici le code originale, peut-être que vous pourrez voir mon erreur?

Ce code fontionnait très bien avec Acces 2003.

Merci encore pour votre aide, c'est très apprécié.

Code utilisé avec 2003 :

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 = "P: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("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
"Donnees", .FoundFiles(i), True, mazone
Next i
Else
MsgBox ("Aucun fichier ")
End If
End With
End Sub








Bonjour
Tu as des fautes de frappes
dans le do while la variable sFile au lieu de sFil
dans le masque de fichier *.xlx au lieu de
*.xls pour 2003
ou
*.xlsx pour 2007
Michel
"Lou" a écrit dans le message de
news:
Bonjour,

Avec la version 2003 de Access, il était possible d'utiliser
Filesearch.
Maintenant, on me dit qu'avec la version 2007 cette commande
n'est
plus
disponible. Après plusieurs recherches sur différents site on
explique
que
Dir pourrait dépaner. J'ai essayé de modifier ce que j'utilisait
dans
2003
avec "Filesarche" utilisant "Dir". Par contre n'étant qu'une
débutante,
je
n'arrive pas à faire fonctionner le code. Est-ce que qulqu'un
aurait
la
gentillesse d'y geter un oeil et me guider un peu?

Merci énormément pour votre aide!!

Ce code devait rechercher tous les documents d'excel dans un
dossier
et
importer dans Access le contenu de la feuille "Données". La
table
de
Access
se nomme également "Donnees"

Le voici :

Private Sub Commande0_Click()
' Charger la référence Microsoft Scripting Runtime
' Charger Microsoft Excel x.x Object Library

Dim oWbk As Workbook
Dim sFil As String
Dim sPath As String
Dim i As Long, chemin As String
Dim derligne As Long
Dim mazone As String, sonnom As String
sPath = "P:ImportationProfilsProfil"
ChDir sPath
sFil = Dir("*.xlx") 'change or add formats
Do While sFile <> "" 'will start LOOP until all files in folder
sPath
have
been looped trough
Set oWbk = Workbooks.Open(sPath & "/" & sFil) 'opens the file
sonnom = ActiveWorkbook.Name
' Sélection de la feuille Données
Workbooks(sonnom).Sheets("Donnees").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 = "Donnees!A1:z" & derligne
' adapter pour le nom de la table matableaccess
DoCmd.TransferSpreadsheet acImport, , _
sFil = Dir
Loop 'End of LOOP
End Sub



















1 2