VBA ACCESS07

Fermé
flotilde - 14 sept. 2009 à 10:22
 flotilde - 15 sept. 2009 à 14:02
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

2 réponses

jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
14 sept. 2009 à 10:33
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 ;)

@++
0
Merci beaucou de ton aide, mais le souci que je rencontre maintenant c'est que lors de l'exécution du code, Access me demande d'enregistrer une nouvelle macro!! Pourquoi une nouvelle macro? cette procédure n'est-elle pas suffisante?...
Je ne m'en sort pas... :(
0