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

Problème avec macro consolidant les feuilles de classeurs

1 réponse
Avatar
lus
Bonjour,
J'essaie d'appliquer la macro VBA excel ci-dessous.
Toutefois, elle ne rappatrie les données que d'un fichier au lieu de rappatrier toutes les plages de données de tous mes répertoires.
Voici le code utilisé:

Sub syntèseClasseursBD2()
sousRépertoire = "BD"
[A2].CurrentRegion.Offset(1, 0).Clear
Set maitre = ActiveWorkbook
Repertoire = ThisWorkbook.Path
nf = Dir(Repertoire & "\" & sousRépertoire & "\*.xls") ' premier fichier
Do While nf <> ""
Workbooks.Open Filename:=Repertoire & "\" & sousRépertoire & "\" & nf
n = [A1].CurrentRegion.Rows.Count - 1
[A1].CurrentRegion.Offset(1, 0).Copy _
maitre.Sheets(1).[A65000].End(xlUp).Offset(1, 0)
ActiveWorkbook.Close False
'-- nom onglet
[A1].End(xlDown).End(xlToRight).Offset(-n + 1, 1).Resize(n, 1) = Left(nf, Len(nf) - 4)
nf = Dir ' fichier suivant
Loop
End Sub


D'avance merci!

1 réponse

Avatar
LSteph
Bonjour,

Dir a faculté à passer au suivant qd on le rappelle s'agissant ici des
fichiers
Ca ne balaye pas les sous-répertoires,
je pense qu'il ne faudrait pas remettre le nom du répertoire dans le
dir
essaye ton code en réadaptant cette partie ainsi:
'...
monchemin=Repertoire & "" & sousRépertoire
chdir monchemin
nf=dir("*.xls")
Do while len(nf)>0
'...
nf=dir
loop

'lSteph
'ou alors c'est que ce sous-répertoire BD ne contiendrait qu'un
fichier

On 11 fév, 18:17, lus wrote:
Bonjour,
J'essaie d'appliquer la macro VBA excel ci-dessous.
Toutefois, elle ne rappatrie les données que d'un fichier au lieu de ra ppatrier
toutes les plages de données de tous mes répertoires.
Voici le code utilisé:

Sub syntèseClasseursBD2()
  sousRépertoire = "BD"
  [A2].CurrentRegion.Offset(1, 0).Clear
  Set maitre = ActiveWorkbook
  Repertoire = ThisWorkbook.Path
  nf = Dir(Repertoire & "" & sousRépertoire & "*.xls") ' premier fichier
  Do While nf <> ""
    Workbooks.Open Filename:=Repertoire & "" & sousRépertoire & "" & nf
    n = [A1].CurrentRegion.Rows.Count - 1
    [A1].CurrentRegion.Offset(1, 0).Copy _
    maitre.Sheets(1).[A65000].End(xlUp).Offset(1, 0)
    ActiveWorkbook.Close False
    '-- nom onglet
    [A1].End(xlDown).End(xlToRight).Offset(-n + 1, 1).Resize(n, 1) = Left(nf,
Len(nf) - 4)
    nf = Dir ' fichier suivant
  Loop
End Sub

D'avance merci!