Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Consolidation par macro

3 réponses
Avatar
victor
Bonjour,

Je souhaite faire la consolidation automatique d'une plage d'un ensemble de
fichier.xls tous contenu dans un dossier (dossier x par exemple). Mon
problème est que je peux avoir 300 fichiers excel dans le dossier en
question allant de c1.xls à C300.xls.

Comment dire à la macro de consolider tout ça sans écrire dans la ligne
ci-dessous le chemin et le nom de mes 300 fichiers (c'est variable !).
L'idéal pour moi serait : comment dire à la macro de consolider tout les
*.xls contenus dans le dossier x dans les plages fixées. Est-ce que j'en
demande trop là !?

Exemple avec une consolidation de 3 fichiers:

Selection.Consolidate Sources:=Array("'C:\x\c1.xls'!R1C1:R15C2", _
"'C:\x\c2.xls'!R1C1:R15C2", "'C:\x\c3.xls'!R1C1:R15C2"), Function:=
_
xlCount, TopRow:=True, LeftColumn:=False, CreateLinks:=True

Hum...si quelqu'un peu m'aider.
+
Victor

3 réponses

Avatar
denis P
Bonjour Victor,

Voila le code donner par Denis Michon pour faire la liste de tout les
fichiers d'un répertoire.
Il te place les noms et les chemins complets complait de tout les fichier du
répertoire sur les colonnes A et B d'un nouvel feuille.
Tu peut reprendres cette liste avec ListFile = Array(Range("a1:a12").Value)

denis p.

'======================================== Sub TousFichiersDunDossier()
Dim FSO As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, i As Integer
Dim Wk As Workbook, A As Long, Sh As Worksheet

Application.ScreenUpdating = False
Set FSO = CreateObject("Scripting.FileSystemObject")
NomDossier = "c:"
If NomDossier = "" Then Exit Sub
Set Dossier = FSO.GetFolder(NomDossier)

Set Files = Dossier.Files
If Files.Count <> 0 Then
Set Sh = Sheets.Add
For Each File In Files
i = i + 1
Sh.Cells(i, 1).Value = File.Path
Sh.Cells(i, 2).Value = File.Name

Next
End If
Sh.UsedRange.EntireColumn.AutoFit
Set FSO = Nothing: Set Sh = Nothing: Set Wk = Nothing
Set Dossier = Nothing: Set File = Nothing
End Sub
'--------------------






"victor" a écrit dans le message de
news:
Bonjour,

Je souhaite faire la consolidation automatique d'une plage d'un ensemble
de

fichier.xls tous contenu dans un dossier (dossier x par exemple). Mon
problème est que je peux avoir 300 fichiers excel dans le dossier en
question allant de c1.xls à C300.xls.

Comment dire à la macro de consolider tout ça sans écrire dans la ligne
ci-dessous le chemin et le nom de mes 300 fichiers (c'est variable !).
L'idéal pour moi serait : comment dire à la macro de consolider tout les
*.xls contenus dans le dossier x dans les plages fixées. Est-ce que j'en
demande trop là !?

Exemple avec une consolidation de 3 fichiers:

Selection.Consolidate Sources:=Array("'C:xc1.xls'!R1C1:R15C2", _
"'C:xc2.xls'!R1C1:R15C2", "'C:xc3.xls'!R1C1:R15C2"),
Function: > _

xlCount, TopRow:=True, LeftColumn:úlse, CreateLinks:=True

Hum...si quelqu'un peu m'aider.
+
Victor




Avatar
victor
Tu peut reprendres cette liste avec ListFile Array(Range("a1:a12").Value)


Comment ?

Victor

Avatar
victor
J'ai trouvé une solution du type :

Range("A2").Select
Selection.Consolidate Sources:="'e:patht[*.xls]Feuil1'!R1C1:R15C2",
Function:=xlCount _
, TopRow:úlse, LeftColumn:úlse, CreateLinks:=True

elle a l'air de fonctionner.

merci pour ta réponse précedente Denis.

Victor