VBA Réaliser la somme de cellules dans des fichiers différents
Fermé
yaute
Messages postés
1
Date d'inscription
lundi 7 août 2017
Statut
Membre
Dernière intervention
7 août 2017
-
Modifié le 10 août 2017 à 23:04
f894009 Messages postés 17192 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 juin 2024 - 10 août 2017 à 14:54
f894009 Messages postés 17192 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 juin 2024 - 10 août 2017 à 14:54
A voir également:
- VBA Réaliser la somme de cellules dans des fichiers différents
- Excel additionner des cellules - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Somme si couleur - Guide
- Comment réduire la taille d'un fichier - Guide
- Aller à la ligne dans une cellule excel - Guide
1 réponse
f894009
Messages postés
17192
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2024
1 708
10 août 2017 à 14:54
10 août 2017 à 14:54
Bonjour,
A voir pour adapter la plage, le nom de feuille
A voir pour adapter la plage, le nom de feuille
'base de codage: http://silkyroad.developpez.com/VBA/ClasseursFermes/ 'Changement de mode de connexion aux fichiers fermes Sub Requete_lecture_ClasseurFerme_Excel2007_201x() Dim objShell As Object, objFolder As Object, Cn As Object, Rst As Object Dim Chemin As String, Fichier As String Dim NomFeuille As String, texte_SQL As String Dim Table_Cumul(17, 19) As Single 'Tabel de cumul des valeurs Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&, ThisWorkbook.Path) If objFolder Is Nothing Then MsgBox "Arret de la macro", vbCritical, "Annulation" Else 'Sélection du répertoire Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\" 'format du fichier (par exemple xlsx) Fichier = Dir(Chemin & "*.xlsx") Do While Len(Fichier) > 0 'Nom de la feuille dans le classeur fermé NomFeuille = "FTest" Set Cn = CreateObject("ADODB.Connection") Set Rst = CreateObject("ADODB.Recordset") 'connexion fichier ferme With Cn .ConnectionString = "DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & Chemin & Fichier .Open End With 'requete SQL pour une plage de cellules texte_SQL = "SELECT * FROM [" & NomFeuille & "$C35:V40]" 'lecture plage de cellules Set Rst = CreateObject("ADODB.Recordset") Set Rst = Cn.Execute(texte_SQL) '------------Cumul valeurs par cellule---------------- x = 0 'boucle sur les enregistrements a lire Do While Not Rst.EOF 'boucle sur les champs de l'enregistrement en cours de lecture For i = 0 To Rst.Fields.Count - 1 Table_Cumul(x, i) = Table_Cumul(x, i) + Rst.Fields(i).Value Next i x = x + 1 'avance d'un enregistrement Rst.Movenext Loop '--- Fermeture connexion --- Cn.Close Set Cn = Nothing Set Rst = Nothing 'Classeur suivant Fichier = Dir() Loop 'ecriture dans plage feuil1 Worksheets("Feuil1").Range("A1").Resize(18, 20) = Table_Cumul End If End Sub