Bonjour,
Je reviens vers vous encore une fois avec la fameuse macro de H2so4
Sub Consolidation()
Dim wsp As Worksheet, wsc As Worksheet, ws As Worksheet
Dim wb As Workbook
Dim dl As Long, ligne As Long, i As Long
Application.ScreenUpdating = False
Set wsp = Sheets("parametres") 'feuille contenant les fichiers à consolider et le nom à leur associer
Set wsc = Sheets("sheet1") 'feuille de consolidation
wsc.UsedRange.Offset(1, 1).Clear 'on efface le contenu de la feuille consolidation en gardant la ligne 1 et la colonne A
dl = wsp.Cells(Rows.Count, 1).End(xlUp).Row 'nombre de fichiers à consolider
ligne = 2 'ligne où placer la consolidation
For i = 1 To dl 'on traite les fichiers à consolider
Set wb = Workbooks.Open(wsp.Cells(i, 2)) 'ouverture du fichier
Set ws = wb.Sheets(1) ' feuille à consolider
dl = wb.Sheets(1).Cells(Rows.Count, "D").End(xlUp).Row - 21 'nombre de données à consolider
If dl > 0 Then 'si données
wsc.Cells(ligne, "B").Resize(dl, 1) = wsp.Cells(i, 1) 'nom de société associé au fichier
wsc.Cells(ligne, "C").Resize(dl, 2).Value = ws.Cells(25, 1).Resize(dl, 2).Value 'copie colonnes C et D
wsc.Cells(ligne, "G").Resize(dl, 1).Value = ws.Cells(25, 10).Resize(dl, 1).Value 'copie NE
wsc.Cells(ligne, "I").Resize(dl, 1).Value = ws.Cells(25, 9).Resize(dl, 1).Value 'copie 0-30
wsc.Cells(ligne, "J").Resize(dl, 1).Value = ws.Cells(25, 8).Resize(dl, 1).Value 'copie 31-60
wsc.Cells(ligne, "K").Resize(dl, 1).Value = ws.Cells(25, 7).Resize(dl, 1).Value 'copie 61-90
wsc.Cells(ligne, "L").Resize(dl, 1).Value = ws.Cells(25, 6).Resize(dl, 1).Value 'copie 90+
With wsc.Cells(ligne, "H").Resize(dl, 1)
.Formula = "=sum('[" & ws.Parent.Name & "]" & ws.Name & "'!F25:I25)" 'Rajoute Tot échu
.Value = .Value
End With
With wsc.Cells(ligne, "F").Resize(dl, 1) 'Calcule le Tot encours
.FormulaR1C1 = "=rc[1]+rc[2]"
.Value = .Value
End With
ligne = ligne + dl 'ligne où placer la consolidation suivante
End If
wb.Close 'fermer fichier à consolider
Next i 'fichier suivant
MsgBox "traitement terminé"
End Sub
J'ai adapter la macro à un autre type de fichier le problème est ici :
wsc.Cells(ligne, "G").Resize(dl, 1).Value = ws.Cells(25, 10).Resize(dl, 1).Value 'copie NE
Le "25" me permet de dire de prendre à partir de la ligne 25 dans mes fichiers.
Malheureusement certains de mes fichiers commence ligne 22 ou 29 par exemple comment pourrai-je adapter la macro pour qu'elle s'adapte automatiquement au point de départ du fichier ?
Merci d'avance pour vos réponses