VBA ACCESS07
flotilde
-
flotilde -
flotilde -
Bonjour,
J'essaie de créer une base Access qui me permettrait de gérer et travailler plusieurs informations contenues dans des centaines de fichiers excel. Mais je débute avec VBA access (2007) et je recontre un problème, ma procédure ne semble pas fonctionner...
J'aurais besoin de votre aide pour importer automatiquement des fichiers multiples, de format xls vers Access…
• Le dossier qui contient mes fichiers Excel s’appelle « BASES A PURGER »
• La table Access vers laquelle je souhaite importer les données se nomme « Entreprise »
Je précise que je voudrais importer 1dossier contenant plusieurs classeurs excel (et non pas importer plusieurs feuilles d'1classeur excel).
Est- ce que quelqu'un pourrait m'aider SVP??
Merci d'avance
J'essaie de créer une base Access qui me permettrait de gérer et travailler plusieurs informations contenues dans des centaines de fichiers excel. Mais je débute avec VBA access (2007) et je recontre un problème, ma procédure ne semble pas fonctionner...
J'aurais besoin de votre aide pour importer automatiquement des fichiers multiples, de format xls vers Access…
• Le dossier qui contient mes fichiers Excel s’appelle « BASES A PURGER »
• La table Access vers laquelle je souhaite importer les données se nomme « Entreprise »
Je précise que je voudrais importer 1dossier contenant plusieurs classeurs excel (et non pas importer plusieurs feuilles d'1classeur excel).
Est- ce que quelqu'un pourrait m'aider SVP??
Merci d'avance
2 réponses
bonjour :)
donc, deja, il faut que tu liste tous les fichiers xls de ton repertoire :
With Application.FileSearch
.NewSearch
.LookIn = Chemin_base & "Import\" ' a remplacer par le chemin ex c:\BASES A PURGER\
.SearchSubFolders = False
.FileName = "*.xls" ' pour ne rechercher que des fichiers xl
.MatchTextExactly = True
'.FileType = 1
If .Execute() > 0 Then ' fichier trouver.. moi je cré une liste dans une variable fichier(), mais a toi de voir ce que tu veux faire
For I = 1 To .FoundFiles.Count
Fichier(I) = .FoundFiles(I)
Next I
Else 'aucun fichier trouvé
MsgBox "Aucun fichier trouvé !!" & Chr(10) & Chr(13) & Chr(10) & Chr(13) & "Veuillez vérifier le répertoire.", vbCritical
End If
Wend
pour l import de chaque fichier xl dans access, il faut deja extraire le nom de chaque feuille de chaque fichier, et de la tu eux importer..:
Dim oAppExcel As Excel.Application
Dim oWbk As Excel.Workbook
Dim oSht As Excel.Worksheet
'Lance Excel
Set oAppExcel = New Excel.Application
'Ouvre le classeur
Set oWbk = oAppExcel.Workbooks.Open(Chemin_base & fichier(i), , True) ' ici le nom de chaque fichier xl
'Accède à la feuille
TmpNomTable = "_Import_MAJ_" ' debut du nom de la table d import
'Temps d attente d ouverture XL
a = Now
Do Until Now > a + TimeValue("0:00:5")
DoEvents
Loop
For Each sht In oWbk.Worksheets
'Importe la feuille excel
'MsgBox Form_Avancement.ImgAvancement.Left
DoCmd.TransferSpreadsheet acImport, 8, "_XL" & TmpNomTable & sht.Name, Chemin_base & fichier(i), True, sht.Name 'donc importe le fichier xl dans _Import_MAJ_ & sht.Name
next
voila, bon, la c'est brut de fonderie.. juste des copiers collé de code que j utilise.. donc faut adapter, mais avec ca, tu devrais avoir quelques pistes pour avancer ;)
@++
donc, deja, il faut que tu liste tous les fichiers xls de ton repertoire :
With Application.FileSearch
.NewSearch
.LookIn = Chemin_base & "Import\" ' a remplacer par le chemin ex c:\BASES A PURGER\
.SearchSubFolders = False
.FileName = "*.xls" ' pour ne rechercher que des fichiers xl
.MatchTextExactly = True
'.FileType = 1
If .Execute() > 0 Then ' fichier trouver.. moi je cré une liste dans une variable fichier(), mais a toi de voir ce que tu veux faire
For I = 1 To .FoundFiles.Count
Fichier(I) = .FoundFiles(I)
Next I
Else 'aucun fichier trouvé
MsgBox "Aucun fichier trouvé !!" & Chr(10) & Chr(13) & Chr(10) & Chr(13) & "Veuillez vérifier le répertoire.", vbCritical
End If
Wend
pour l import de chaque fichier xl dans access, il faut deja extraire le nom de chaque feuille de chaque fichier, et de la tu eux importer..:
Dim oAppExcel As Excel.Application
Dim oWbk As Excel.Workbook
Dim oSht As Excel.Worksheet
'Lance Excel
Set oAppExcel = New Excel.Application
'Ouvre le classeur
Set oWbk = oAppExcel.Workbooks.Open(Chemin_base & fichier(i), , True) ' ici le nom de chaque fichier xl
'Accède à la feuille
TmpNomTable = "_Import_MAJ_" ' debut du nom de la table d import
'Temps d attente d ouverture XL
a = Now
Do Until Now > a + TimeValue("0:00:5")
DoEvents
Loop
For Each sht In oWbk.Worksheets
'Importe la feuille excel
'MsgBox Form_Avancement.ImgAvancement.Left
DoCmd.TransferSpreadsheet acImport, 8, "_XL" & TmpNomTable & sht.Name, Chemin_base & fichier(i), True, sht.Name 'donc importe le fichier xl dans _Import_MAJ_ & sht.Name
next
voila, bon, la c'est brut de fonderie.. juste des copiers collé de code que j utilise.. donc faut adapter, mais avec ca, tu devrais avoir quelques pistes pour avancer ;)
@++