Private Sub Worksheet_Activate()
Dim num As Variant, w As Worksheet, n%, P As Range, i%
num = 1
On Error Resume Next
Do
num = Application.InputBox("Numéro de la feuille Objectif désirée :", "Feuille Objectif", num)
If num = False Then Exit Sub 'Annuler
Set w = Sheets("objectif " & num)
Loop While w Is Nothing
On Error GoTo 0
n = w.Cells(2, Columns.Count).End(xlToLeft).Column - 4 'nombre de nouvelles colonnes
Application.ScreenUpdating = False
Columns("BA").Resize(, Columns.Count - Columns("AZ").Column).Delete 'RAZ
Set P = Columns("AE:AZ") '1ère plage copiée
P.Replace "'*'", "'" & w.Name & "'", xlPart 'nouveau nom
If n = 0 Then Exit Sub
For i = 1 To n
P.Copy P.Offset(, P.Columns.Count) 'copier-coller
Set P = P.Offset(, P.Columns.Count)
P.Replace "!*$", "!" & Split(Columns(i + 3).Address(0, 0), ":")(0) & "$", xlPart 'MAJ des formules
Next
End Sub