Sub Auto_forecast()
' Cette macro permet de compléter l'onglet "2. ForecastedExp" de manière automatisée
' La commande peut être lancée dans une plage cible limitée et s'applique uniquement à la ligne active suivant des conditions spécifiques
' Définition des variables :
' "x" renvoie à la ligne active
' "t" renvoie à la celulle à l'intersection de la ligne active et de la colonne "7"
' "PlageRef" renvoie à une plage fixe (masquée) qui comporte les formules à copier vers la ligne active
' "PlageCible" renvoie à la plage de la ligne active vers laquelle sera copiée "PlageRef"
Dim x As Long
Dim t As String
Dim PlageRef As Range
Dim PlageCible As Range
x = ActiveCell.Row
t = Cells(x, 7)
Set PlageRef = Range("N11,Q11,T11,W11,Z11,AC11,AF11,AI11,AL11,AO11,AR11,AU11")
Set PlageCible = Range("N" & x, "Q" & x, "T" & x, "W" & x, "Z" & x, "AC" & x, "AF" & x, "AI" & x, "AL" & x, "AO" & x, "AR" & x, "AU" & x)
' Prevents screen refreshing.
Application.ScreenUpdating = False
' Plutôt que de définir une zone cible, nous avons recours à une condition pour autoriser ou non l'éxécution de la macro.
If Not (t = "Auto") Then
Exit Sub
End If
' Une fois la conditions validée, la commande est lancée
' Déprotection de la feuille dont le mot de passe est "msfbfu"
ActiveSheet.Unprotect Password:="msfbfu"
'PlageRef.Copy Destination:=PlageCible
PlageRef.Select
For Each cel In Selection
cel.Copy
PlageCible.Select
ActiveSheet.Paste
Next cel
' Protection de la feuille dont le mot de passe est "msfbfu"
ActiveSheet.Protect UserInterfaceOnly:=True, Password:="msfbfu", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True, AllowFormattingCells:=False, AllowFormattingColumns:=False, _
AllowFormattingRows:=False
' Enables figures and allows screen refreshing
Calculate
Application.ScreenUpdating = True
End Sub