J'ai un petit soucis concernant le parcours de toutes les feuilles d'un fichier fermé pour faire mon traitement, sachant que je n'établie pas de connexion entre fichier, j'utilise juste la fameuse "ExecuteExcel4Macro"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionfor each feuille in classeur.worksheets ..../. next
Dim appExcel As Excel.Application Dim wbExcel As Excel.Workbook Dim wsExcel As Excel.Worksheet Set appExcel = GetObject(, "Excel.Application") '===>> ta boucle sur tes fichiers commence ici. Set wbExcel = appExcel.Workbooks.Open("D:\Classeur1.xlsm") '=====>> traitement du classeur comme toi tu l'entends, au lieu de ce qui suit. Dim feuille As Worksheet For Each feuille In wbExcel.Worksheets MsgBox "la cellule A1 de la feuille " & feuille.Name & " du classeur " & _ wbExcel.FullName & " contient la valeur " & feuille.Range("A1").Value Next '======= fin de ta boucle sur les fichiers
Set wbExcel = appExcel.Workbooks.Open("D:\Classeur1.xlsm")
Private Sub CommandButton1_Click() Dim appExcel As Excel.Application Dim wbExcel As Excel.Workbook '===>> ta boucle sur tes fichiers commence ici. Application.ScreenUpdating = False 'pour éviter des sautillements désagréables Set wbExcel = GetObject("D:\Classeur1.xlsm") '===>> exemple, hein ! '=====>> traitement du classeur comme toi tu l'entends, au lieu de ce qui suit. Dim feuille As Worksheet For Each feuille In wbExcel.Worksheets MsgBox "la cellule A1 de la feuille " & feuille.Name & " du classeur " & _ wbExcel.FullName & " contient la valeur " & feuille.Range("B3").Value Next Application.ScreenUpdating = False ' pour rétablir Set wbExcel = Nothing ' pour soulager ta mémoire '===========================ta boucle sur tes fichiers jusqu'ici End Sub
Sub Requete2007(fichier As String, NomFeuille As String, cel As String) Dim Cn As ADODB.Connection Dim texte_SQL As String Dim Rst As ADODB.Recordset Dim ADOCommand As ADODB.Command Set Cn = New ADODB.Connection '--- Connexion --- Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _ & fichier & ";Extended Properties=""Excel 12.0;HDR=YES;""" ' .Provider = "Microsoft.Jet.OLEDB.4.0" ' .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _ ' & fichier & ";Extended Properties=""Excel 12.0;HDR=YES;""" ' .Open ' End With '----------------- ' la requête ... Set ADOCommand = New ADODB.Command With ADOCommand .ActiveConnection = Cn .CommandText = "SELECT * FROM [" & NomFeuille & cel & "]" End With Set Rst = New ADODB.Recordset Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic Set Rst = Cn.Execute("[" & NomFeuille & cel & "]") Cells(2, 1).CopyFromRecordset Rst MsgBox (Cells(2, 1).Value) '--- Fermeture connexion --- Cn.Close Set Cn = Nothing End Sub
chose qui fait monter le temps d'execution en fléche
mais peut être que le fait de garder le fichier fermé réduira ce temps