Consolidation NDF en bouclant sur tous les onglets

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

GADENSEB

XLDnaute Impliqué
Bonjour le Forum
Je reprend l'excellent code dudumomo

http://www.excel-downloads.com/forum/234894-macro-consolidation-de-plusieurs-fichiers-en-une-seule-table-2.html#post1503910


Je gére des notes de frais de 12 salariés que je dois regrouper pour faire ensuite des analyses sur les dépenses.

Toutes les NDF sont construite de la mm méniére :
- 1 Onglet par mois (JANVIER à DECEMBRE)
- Les données sont dans les cellules A11 : J28
- Le titre des données en ligne 10 --> A10:J10

Du coup avec le code suivant que j'ai un peu modifié déjà, j'ai qq soucis,

Dans un premier temps :
- La récupération des données (sur l'onglet JANVIER) ne se fait pas correctement
Je m'explique :
Suivant la procédure je devrais récuperer les données des plages A11:J28

Cependant les données récupérée sont de A1:J28 !!!!

De ce que je comprends, le soucis viens de la ligne :
Code:
xdlgnsource = wbksource.Sheets("JANVIER").Range("A28").End(xlUp).Row: xnblgnsource = xdlgnsource - 2

Que faut-il modifier ?


Code:
Option Explicit
Dim wbk As Workbook, wbksource As Workbook, Fichierexistant As Range, Plagederecherche As Range
Dim Chemin As String, Nomfichier As String, Fichiersource As String, NomOnglet As String, xsrefn, xsdate
Dim xdlgn As Long, xdlgnsource As Long, xnblgnsource As Long, i As Long, j As Long, xlgn As Integer, xcol As Integer

Private Sub CommandButton1_Click()
  ' Lancer la consolidation
  ' Tous les fichiers doivent se trouver dans le même répertoire - extension xlsm -
  ' ainsi que le fichier RECAPITULATIF.xlsm
    Application.ScreenUpdating = False
    
  'Efface les données
    Range("a5:L5000").Select
    Selection.Value = ""
    

    Application.DisplayAlerts = False
    Chemin = ThisWorkbook.Path & "\"
    Set wbk = ActiveWorkbook
    Set Plagederecherche = wbk.Sheets(1).Columns(1)
    Nomfichier = Dir(Chemin & "\NDF*.xlsm")
  
    Do While Nomfichier <> ""
        ' Méthode Find
        Set Fichierexistant = Plagederecherche.Cells.Find(What:=Nomfichier, LookAt:=xlWhole)
        If Fichierexistant Is Nothing Then
            Set wbksource = Nothing
            Fichiersource = Chemin & Nomfichier
            Set wbksource = Workbooks.Open(Filename:=Fichiersource)
             xdlgnsource = wbksource.Sheets("JANVIER").Range("A28").End(xlUp).Row: xnblgnsource = xdlgnsource - 2
     '      NomOnglet = Workbooks.Sheets(1).Name
            
             ' Copie les données dans le fichier RECAPITULATIF
            
            With wbk.Sheets(1)
             
               xdlgn = .Range("A" & Rows.Count).End(xlUp).Row + 1
                xlgn = 5: xcol = 1: j = xdlgn
                    For i = xdlgn To xdlgn + xnblgnsource
                            wbk.Sheets(1).Cells(j, 1) = Nomfichier
                            wbk.Sheets(1).Cells(j, 2) = NomOnglet
                            wbk.Sheets(1).Cells(j, 3).Value = wbksource.Sheets("JANVIER").Cells(xlgn, 1).Value
                            wbk.Sheets(1).Cells(j, 4).Value = wbksource.Sheets("JANVIER").Cells(xlgn, 2).Value
                            wbk.Sheets(1).Cells(j, 5).Value = wbksource.Sheets("JANVIER").Cells(xlgn, 3).Value
                            wbk.Sheets(1).Cells(j, 6).Value = wbksource.Sheets("JANVIER").Cells(xlgn, 4).Value
                            wbk.Sheets(1).Cells(j, 7).Value = wbksource.Sheets("JANVIER").Cells(xlgn, 5).Value
                            wbk.Sheets(1).Cells(j, 8).Value = wbksource.Sheets("JANVIER").Cells(xlgn, 6).Value
                            wbk.Sheets(1).Cells(j, 9).Value = wbksource.Sheets("JANVIER").Cells(xlgn, 7).Value
                            wbk.Sheets(1).Cells(j, 10).Value = wbksource.Sheets("JANVIER").Cells(xlgn, 8).Value
                            wbk.Sheets(1).Cells(j, 11).Value = wbksource.Sheets("JANVIER").Cells(xlgn, 9).Value
                            wbk.Sheets(1).Cells(j, 12).Value = wbksource.Sheets("JANVIER").Cells(xlgn, 10).Value
                            j = j + 1
                        xlgn = xlgn + 1
                   Next i
            End With
            wbksource.Close
        End If
        Nomfichier = Dir
    Loop
    Set wbk = Nothing
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    MsgBox "Traitement terminé."
End Sub


QQn aurais une idée?


Bonne journée
Seb
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
45
Réponses
3
Affichages
569
Réponses
2
Affichages
371
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
481
Réponses
0
Affichages
367
Réponses
1
Affichages
452
Réponses
3
Affichages
485
Retour