Explication d'une macro
K
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 SubEdit modo : code à mettre entre balises avec le bouton </>
Merci d'avance
A
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 SubCdlt
K
Merci beaucoup pour votre réponse