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
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
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" <Lou@discussions.microsoft.com> a écrit dans le message de
news:98A6D4AE-FE8D-4779-BF56-51408EE94F0B@microsoft.com...
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" <Lou@discussions.microsoft.com> a écrit dans le message de
news:69F72698-077D-414A-98E4-F88E456A81E5@microsoft.com...
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" <Lou@discussions.microsoft.com> a écrit dans le message de
news:79853695-40D3-4C0F-9975-CCDB92E18041@microsoft.com...
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" <Lou@discussions.microsoft.com> a écrit dans le message de
news:0D433F52-57C6-42D2-9A07-7C8032C32587@microsoft.com...
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
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