Explication d'une macro

Bonjour,

Aidez-moi à comprendre le code macro suivant s'il vous plait:

Sub CopierCellules()

Dim f1 As Worksheet, f2 As Worksheet

Dim Derlig&

Application.ScreenUpdating = False

Set f1 = Sheets("Planning")

Set f2 = Sheets("Personnel")

With f2

Derlig = .Range("A1").CurrentRegion.Rows.Count + 1

.Range(Cells(Derlig, "A"), Cells(Derlig, "C")).Value = Array(f1.Range("B4").Value, f1.Range("B5").Value, f1.Range("B8").Value)

.Range(Cells(Derlig + 1, "C"), Cells(Derlig + 6, "C")).Value = Range(f1.Cells(10, "B"), f1.Cells(15, "B")).Value

Derlig = .Range("A1").CurrentRegion.Rows.Count + 1 'il faut recalculer la dernière ligne

.Range("A2:C" & Derlig).RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlNo

End With

'on refait le traçage des séparations des colonnes

With Range("A1:G1000")

.Borders(xlEdgeLeft).Weight = xlMedium

.Borders(xlEdgeRight).Weight = xlMedium

.Borders(xlInsideVertical).Weight = xlMedium

End With

'on libère la mémoire

Set f1 = Nothing

Set f2 = Nothing

End Sub

Edit modo : code à mettre entre balises avec le bouton </>

Merci d'avance

Bonjour,

Voici le code argumenté:

Sub CopierCellules()
    'déclaration des variables
    Dim f1 As Worksheet, f2 As Worksheet
    Dim Derlig&

    Application.ScreenUpdating = False 'figeage de l'écran, empêche les rafraîchiqssement de l'écran et augmente la vitesse d'exécution
    'attribution des variables à chaque feuille
    Set f1 = Sheets("Planning")
    Set f2 = Sheets("Personnel")
    With f2 'Sur la feuille "personnel"
        Derlig = .Range("A1").CurrentRegion.Rows.Count + 1 'recherche le N° de la dernière ligne auquel on ajoute 1, ce sera la prochaine ligne sur laquelle on pourra écrire
        .Range(Cells(Derlig, "A"), Cells(Derlig, "C")).Value = Array(f1.Range("B4").Value, f1.Range("B5").Value, f1.Range("B8").Value) 'on récupère les valeurs de B5, B6 et B8 de la feuille"Planning" que l'on copie en en colonnes A à C sur la prmière ligne libre de la feuille "personnel"
        .Range(Cells(Derlig + 1, "C"), Cells(Derlig + 6, "C")).Value = Range(f1.Cells(10, "B"), f1.Cells(15, "B")).Value ' on copie les  valeurs de B10 à B15 de la feuille"Planning" sur la feuille "Personnel" à partir de la première ligne libre
        Derlig = .Range("A1").CurrentRegion.Rows.Count + 1 'il faut recherche le nouveau N° de la dernière ligne libre
        .Range("A2:C" & Derlig).RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlNo 'on supprime les doublons
    End With
    'on refait le traçage des séparations des colonnes
    With Range("A1:G1000")
        .Borders(xlEdgeLeft).Weight = xlMedium
        .Borders(xlEdgeRight).Weight = xlMedium
        .Borders(xlInsideVertical).Weight = xlMedium
    End With
    'on libère la mémoire
    Set f1 = Nothing
    Set f2 = Nothing
End Sub

Cdlt

Merci beaucoup pour votre réponse

Rechercher des sujets similaires à "explication macro"