1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| Sub MAJ()
Dim Plage As Range, C As Range, Ligne As Variant
With Sheets("Modifications")
'on définit "Plage" comme la plage des cellules de la colonne E
Set Plage = .Range(.[E1], .Cells(.Rows.Count, 5).End(xlUp))
End With
With Sheets("Liste")
'boucle sur les cellules de "Plage"
For Each C In Plage
'recherche de la ligne correspondant à la ligne de C
'Equivalent de la fonction Excel EQUIV
Ligne = Application.Match(C.Value, .[E:E], 0)
'si on trouve cette ligne, c'est soit une modification soit une suppression
If IsNumeric(Ligne) Then
'si la valeur de la colonne AD (en minuscules) est "suppression"
If LCase(C.Offset(, 25)) = "suppression" Then
'suppression de la ligne
.Cells(Ligne, 1).EntireRow.Delete
Else
'sinon c'est une modification; on remplace la ligne
.Cells(Ligne, 1).Resize(, 31).Value = C.Offset(, -4).Resize(, 31).Value
End If
Else
'si on ne trouve pas d'égalité, c'est un ajout
'".Cells(.Rows.Count, 1).End(xlUp).Offset(1)" trouve la première cellule vide en dessous
'de la colonne A
'".Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, 31)" représente les 31 cellules où
' vont être copiées les cellules à additionner
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, 31).Value = _
C.Offset(, -4).Resize(, 31).Value
End If
Next C
End With
End Sub |
Partager