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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| Sub MAJPROGRAMME()
'
' MAJPROGRAMME Macro
Dim Plage As Range, C As Range, Ligne As Variant
Dim Reponse As Long
Reponse = MsgBox("Voulez vous lancer la mise à jour du programme ?", vbQuestion + vbYesNo)
If Reponse = vbYes Then
With Sheets("PIVOT")
'on définit "Plage" comme la plage des cellules de la colonne A
Set Plage = .Range(.[A3], .Cells(.Rows.Count, 1).End(xlUp))
End With
With Sheets("PROGRAMME 4R21")
'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, .[A:A], 0)
'si on trouve cette ligne, c'est une modification
If IsNumeric(Ligne) Then
'c'est une modification; on remplace la ligne
.Cells(Ligne, 1).Resize(, 42).Value = C.Offset(, 0).Resize(, 42).Value
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(, 42)" représente les 42 cellules où
' vont être copiées les cellules à additionner
' On met la première ligne vide en vert
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, 42).Interior.ColorIndex = 4
'Puis on y met les valeurs
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, 42).Value = _
C.Offset(, 0).Resize(, 42).Value
End If
Next C
End With
With Sheets("PROGRAMME 4R21")
'on définit "Plage" comme la plage des cellules de la colonne A
Set Plage = .Range(.[A3], .Cells(.Rows.Count, 1).End(xlUp))
End With
With Sheets("PIVOT")
'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, .[A:A], 0)
' Recherche une Range C de la feuille Programme n'ayant pas de correspondance avec une Range de la feuille Pivot
If IsNumeric(Ligne) = False Then
'si on ne trouve pas d'égalité, on met va sur la feuille Programme, mettre la Range C en rouge
C.Interior.ColorIndex = 3
End If
Next C
End With
MsgBox "Le programme a été mise à jour", vbInformation
Else
MsgBox "Mise à jour du programme annulée", vbInformation
End If
End Sub |
Partager