VBA : pb boucle de dossiers excel

vbauser92 Messages postés 2 Statut Membre -  
LePierre Messages postés 249 Statut Membre -
Bonjour,

Je suis en train de faire un bout de code pour récupérer dans un même classeur des reportings individuels saisis pour chacun dans un classeur différent (dans le sous-répertoire Reportings). Et j'ai visiblement des problèmes avec l'ouverture ou l'activation avec les arborescence précisées. Pouvez-vous me dépanner ? Je pense qu'il y a un problème dû au fait que le classeur de consolidation (Détail_Pilotage_CONSO.xlms)est dans un autre répertoire, mais je ne m'en sors pas.

' Placement dans le répertoire des reportings individuels
ChDir "G:\Missions\Reporting DIR\Reportings"
ClasseurPersonnel = Dir("G:\Missions\Reporting DIR\Reportings\*.xlsx")
While Len(ClasseurPersonnel) > 0
Workbooks.Open ClasseurPersonnel
DerniereLigne = ActiveSheet.UsedRange.Rows.Count
ActiveSheet.Range("A7:AB" & DerniereLigne).Copy
Workbooks("G:\Missions\Reporting DIR\Détail_Pilotage_CONSO.xlsm").Activate
DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
ActiveSheet.Range("A" & ActiveSheet.UsedRange.Rows.Count + 1).Select
ActiveSheet.Paste
Range("AC" & DebutNomFichier & ":AC" & ActiveSheet.UsedRange.Rows.Count) = ClasseurPersonnel
Workbooks(ClasseurPersonnel).Close
ClasseurPersonnel = Dir
Wend


Merci d'avance

3 réponses

  1. LePierre Messages postés 249 Statut Membre 338
     
    Bonjour

    Ajoute :

    ChDrive "G:\"
    avant ton Chdir ...
    Bonne soirée
    0
  2. vbauser92 Messages postés 2 Statut Membre
     
    @LePierre

    Merci. Malheureusement ça ne marche pas mieux
    0
  3. LePierre Messages postés 249 Statut Membre 338
     
    Bonjour
    Essaye ceci :
    Sub Essai_vbauser92()
        ChDrive "G:\"
        Workbooks.Open "G:\Missions\Reporting DIR\Détail_Pilotage_CONSO.xlsm"
        ChDir "G:\Missions\Reporting DIR\Reportings"
        ClasseurPersonnel = Dir("G:\Missions\Reporting DIR\Reportings\*.xlsx")
        While Len(ClasseurPersonnel) > 0
            If ClasseurPersonnel <> "Détail_Pilotage_CONSO.xlsm" Then
                Workbooks.Open ClasseurPersonnel
                DerniereLigne = ActiveSheet.UsedRange.Rows.Count
                ActiveSheet.Range("A7:AB" & DerniereLigne).Copy
                Windows("Détail_Pilotage_CONSO.xls").Activate
                DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
                ActiveSheet.Range("A" & ActiveSheet.UsedRange.Rows.Count + 1).Select
                ActiveSheet.Paste
                Range("AC" & DebutNomFichier & ":AC" & ActiveSheet.UsedRange.Rows.Count) = ClasseurPersonnel
                Workbooks(ClasseurPersonnel).Close
                ClasseurPersonnel = Dir
            End If
        Wend
    End Sub
    

    à plus
    0
    1. LePierre Messages postés 249 Statut Membre 338
       
      Bonjour

      Voici une nouvelle version testée et fonctionnelle :
      Sub Essai_vbauser92_2()
          ClasseurPrincipal = ActiveWorkbook.Name ' "Détail_Pilotage_CONSO.xlsm"
          Chemin = "G:\Missions\Reporting DIR\Reportings\"
          
          Application.ScreenUpdating = False
          ClasseurPersonnel = Dir(Chemin & "*.xls?")
          While Len(ClasseurPersonnel) > 0
              If ClasseurPersonnel <> ClasseurPrincipal Then
                  Workbooks.Open ClasseurPersonnel
                  DerniereLigne = ActiveSheet.Range("A65536").End(xlUp).Row
                  ActiveSheet.Range("A7:AB" & DerniereLigne).Copy
                  Windows(ClasseurPrincipal).Activate
                  DerLig = ActiveSheet.Range("A65536").End(xlUp).Row
                  Cells(DerLig + 1, 1).Value = ClasseurPersonnel
                  Cells(DerLig + 2, 1).Select
                  ActiveSheet.Paste
                  Application.CutCopyMode = False
                  'Application.DisplayAlerts = False
                  Workbooks(ClasseurPersonnel).Close
                  'Application.DisplayAlerts = True
              End If
              ClasseurPersonnel = Dir
          Wend
          Cells(1, 1).Select
          Application.ScreenUpdating = True
      End Sub

      j'espère que cela te conviendra.
      à plus
      0