Bonjour le forum,
j'ai un tableau de suivi avec : en colonne F le Mois en cours (certaines cellules contiennent des formules) et déterminé par la cellule J1
Colonnes A à D, les 5 mois précédents
Lors d'un changement de mois, je décale mes valeurs vers la gauche (en supprimant les données de la colonne A après les avoir archiver) et je modifie ma date en J1.
J'ai réaliser une macro pour effectuer ces opérations, dont voici le code :
Sub Décalage()
Application.ScreenUpdating = False
maDate = Range("J1").Value
ajout = 1
If MsgBox("Avez-vous reporté la Plage_1?", vbYesNo + vbExclamation, "Confirmation de report") = vbYes Then
Range("Plage_1").ClearContents
Range("Plage_2").Copy
Range("Plage_2").Offset(0, -1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("Plage_2").ClearContents
Range("Plage_3").Copy
Range("Plage_3").Offset(0, -1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("Plage_3").ClearContents
Range("Plage_4").Copy
Range("Plage_4").Offset(0, -1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("Plage_4").ClearContents
Range("Plage_5").Copy
Range("Plage_5").Offset(0, -1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("Plage_5").ClearContents
Range("Plage_6").Copy
Range("Plage_6").Offset(0, -1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("F4").ClearContents
Range("J1") = DateAdd("m", ajout, maDate)
End If
End Sub
Première question : y a-t-il une façon de simplifier ce code?
Deuxième question : j'aimerais qu'au moment d'afficher la MsgBox, la plage_1 se mette en évidence (et qu'évidemment, à la fin de la macro, elle reprennent sa mise en forme initiale)
J'ai essayé d'insérer
Range ("Plage_1").Interior.Color =
en début de code mais cela me modifie la couleur après la validation de la MsgBox.
Ci-joint un fichier avec le code (les valeurs ne sont évidemment pas représentatives)
Merci d'avance à ceux qui sauront m'aiguiller.
Cordialement,