Bonjour,
Je suis dans un stade un peux avancer de mon programme,
Un synthèse de ce que j'ai fais ce que maintenant :
données de base : Base de données ACCESS, fichiers excel
Objectif : à partir de la base access, je veux recuperer des données qui sont dans des feuilles dans le fichier
excel. ensuite inserer ces données dans une seule table acces (chaque collonne Excel correspond à une colonne dans une table access.
Même principe pour l'importation. (je ne peux pas utiliser la fonction import d'acces directement pars que le nombre de colonne dans les feuilles excel
est egal ou inferieur au nombre de colonnes de la base access, de plus des fois j'ai problème de nomination des entetes dans les feuilles excel)
avant j'harmonisé le fichier excel manuellement rajout des nouvelles colonnes, corrigé les nom des entetes..., puis j'importe c'est plus facile à importer
mais c'est difficile à harmoniser.
Problème : Le problème que j'ai actuellement est comment je peux inseret les données que j'ai recupéré dans ma table?
alors mon code jusqu'a maintenant :
'------------------------------------------------------------------
compte le nombre de fichier excel dans mon dossier puis stocker lur noms dans un tableau
Dim objFso
Dim strDesktop, strPath, strFile
Dim imax, i, j, k, bpermute 'liste
Dim Tableau()
Set objFso = CreateObject("Scripting.FileSystemObject")
CheminSource = "P:\doc a\\dossier"
Set strPath = objFso.getfolder("P:\doc a\\dossier")
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
Dim strSQL As String
Set dbs = CurrentDb
strSQL = "SELECT Count(*) As nb From BDX_EXP_DETAIL"
Set qdf = dbs.CreateQueryDef("SecondQuarter", strSQL)
MsgBox nb
imax = 0
For Each strFile In objFso.getfolder(strPath).Files
imax = imax + 1
ReDim Preserve Tableau(imax)
Tableau(imax) = strFile.Name
Next
'----------------------------------------------------------------------------------------
se connexter à chaque fichier puis recuperer les données dans chaque feuille
Dim i, j, k As Long
Dim xlApp As Excel.Application
Dim xlSheet As Excel.Worksheet
Dim xlBook As Excel.Workbook
Dim spx_exp(), bdx_rec, spx_rec, n_serie, control_1, control_2 As Variant
Dim bdx_exp_Tranche_Colis(10000) As Variant
Dim bdx_exp_Code_Région(10000) As Variant
Dim bdx_exp_N_Commande(10000) As Variant
Dim bdx_exp_Qté_Validé(10000) As Variant
Dim bdx_exp_Date_sortie_de_stock(10000) As Variant
Dim bdx_exp_Code_Destinataire_Expédition(10000) As Variant
Dim bdx_exp_Code_article(10000) As Variant
Dim cells()
ReDim cells(1 To 10000, 1 To 10)
Set xlApp = CreateObject("Excel.Application")
for k=1 to imax
Set xlBook = xlApp.Workbooks.Open("P:\doc a\dossier\" & Tableau(imax))
Fichier = Tableau(imax)
Set Cn = New ADODB.Connection
Set oCat = New ADOX.Catalog
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Fichier & _
";Extended Properties=Excel 8.0;"
Set oCat.ActiveConnection = Cn
i = 1
For Each Feuille In oCat.Tables
Nb_feuil(i) = Resultat & Feuille.Name & vbCrLf
i = i + 1
Next
Set Feuille = Nothing
Set oCat = Nothing
Cn.Close
Set Cn = Nothing
for j=1 to i
Set xlSheet = xlBook.Sheets(Nb_feuil(i))
i = 2
Do While xlSheet.cells(i, 1) <> ""
bdx_exp_Tranche_Colis(i) = xlSheet.cells(i, 1)
bdx_exp_Code_Région(i) = xlSheet.cells(i, 2)
bdx_exp_N_Commande(i) = xlSheet.cells(i, 3)
bdx_exp_Qté_Validé(i) = xlSheet.cells(i, 4)
bdx_exp_Date_sortie_de_stock(i) = xlSheet.cells(i, 5)
bdx_exp_Code_Destinataire_Expédition(i) = xlSheet.cells(i, 6)
bdx_exp_Code_article(i) = xlSheet.cells(i, 7)
i = i + 1
Loop
next j
next k
Un problème = des solutions
programation .....