Bonjour,
A tester :
Nb : Le code ne prend pas en compte le changement de fichier avec le changement d'exercice dans les formules.
Option Explicit
Sub AjouterUneSemaine()
Dim ValeurSemaine As String
Dim DerniereLigne As Long, DerniereColonne As Long
Dim ShStock As Worksheet
Set ShStock = Sheets("Avant macro") ' A adapter
With ShStock
DerniereLigne = .Cells(.Rows.Count, "B").End(xlUp).Row
DerniereColonne = .Cells(3, .Columns.Count).End(xlToLeft).Column ' Au cas où les semaines seraient pré-remplies
ValeurSemaine = SemaineStock(.Cells(2, DerniereColonne))
Debug.Print .Cells(2, DerniereColonne)
.Range(.Cells(2, DerniereColonne), .Cells(DerniereLigne, DerniereColonne)).Copy .Cells(2, DerniereColonne + 1)
.Cells(2, DerniereColonne + 1) = ValeurSemaine
End With
Set ShStock = Nothing
End Sub
Function SemaineStock(ByVal DerniereSemaine As String) As String
Dim TabChaine As Variant
Dim SemaineMax As Integer
SemaineMax = WorksheetFunction.WeekNum(CDate("31/12/" & Left(DerniereSemaine, 4)), 21) ' Norme iso
SemaineStock = ""
TabChaine = Split(DerniereSemaine, "_S ")
If UBound(TabChaine) > 0 Then
If CInt(Trim(TabChaine(1))) = SemaineMax Then
SemaineStock = CInt(Left(DerniereSemaine, 4)) + 1 & "_S 01"
Else
SemaineStock = CInt(Left(DerniereSemaine, 4)) & "_S " & Format(CInt(Trim(TabChaine(1))) + 1, "00")
End If
End If
End Function