Compréhension d'une macro

Bonjour, j'ai du mal à saisir exactement ce que fait les Resize pour moi le premier copie 2 ligne mais le 2ème j'ai du mal à comprendre exactement ce qu'il fait

wsc.Cells(ligne, "C").Resize(dl, 2).Value = ws.Cells(22, 3).Resize(dl, 2).Value

Voici la macro complète :

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(22, 3).Resize(dl, 2).Value 'copie colonnes C et D
            wsc.Cells(ligne, "I").Resize(dl, 4).Value = ws.Cells(22, 24).Resize(dl, 4).Value 'copie colonnes 22 à 24
            With wsc.Cells(ligne, "G").Resize(dl, 1)
                .Formula = "=sum('[" & ws.Parent.Name & "]" & ws.Name & "'!s22:v22)" 'Rajoute non échu
                .Value = .Value
            End With
            With wsc.Cells(ligne, "E").Resize(dl, 1)
                .Formula = "=('[" & ws.Parent.Name & "]" & ws.Name & "'!ac22)" 'Rajoute group (direction commerciale)
                .Value = .Value
            End With
            With wsc.Cells(ligne, "H").Resize(dl, 1)
                .Formula = "=sum('[" & ws.Parent.Name & "]" & ws.Name & "'!x22:aa22)" '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
            With wsc.Cells(ligne, "M").Resize(dl, 1) 'Calcule %Echu
                .FormulaR1C1 = "=rc[-5]/rc[-7]"
                .Value = .Value
                .NumberFormat = "0.00%"
            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

Merci pour votre aide,

Cordialement;
Parrish

P.S : Sur cette ligne que signifie le -21 pourquoi ce chiffre ?

dl = wb.Sheets(1).Cells(Rows.Count, "D").End(xlUp).Row - 21

Corriger moi j'ai tord

Le 1er est l'endroit ou va se copier mes donnes donc ici Cellule C sur 2 colonne
Le 2ème est la donnée copié de l'autre fichier sur la cellule 22, colonne 3 et copie 2 colonne

bonjour,

l'instruction resize permet de définir une plage de cellules à partir d'une cellule qui sert de référence (celle en haut à gauche de la plage).

resize(nombre de lignes, nombre de colonnes)

range("B1").resize(3,4) définit une plage B1:F3 on définit une plage de 3 lignes et 4 colonnes à partir de B1.

Pourquoi dl-21 ? Pour avoir le nombre de données qui t'intéresse, on prend le numéro de la dernière ligne utilisée dans la colonne de référence et on enlève le nombre de lignes d'entêtes qui ne contiennent pas de données. Dans ton classeur, tes données commencent en ligne 22, le numéro de la dernière ligne utile est 100, le nombre de lignes avec des données est 100-21.

C'est noté merci beaucoup ^^
La commande Resize est donc top à utiliser et à adapter

Rechercher des sujets similaires à "comprehension macro"