Bonjour le fil, bonjour le forum,
Évidemment quand on passe derrière les balèzes on a l'air c**. Mais bon, ça ne me change pas tellement que ça... Alors j'y vais de ma proposition avec une événementielle Change :
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
If Target.Address <> "$C$3" Then Exit Sub 'si le changement a lieu ailleurs que dans la cellule C3, sort de la procédure
Dim N As Integer 'déclare la variable N (Nombre)
Dim PN As String 'déclare la variable PN (Premier Numéro)
Dim NC As Integer 'déclare la variable NC (Numéro de Carton)
Dim NF As Integer 'déclare la variable NF (Numéro de Feuille)
Dim NT As Integer 'déclare la variable NT (Numéro de Ticket)
Dim NNT As Integer 'déclare la variable NNT (Nouveau Numéro de Ticket)
Dim NNF As Integer 'déclare la variable NNF (Nouveau Numéro de Feuille
N = CInt(Range("C3").Value) 'de'finit le nombre N
PN = Range("C5").Value 'définit le premier numéro PN
NC = CInt(Split(PN, "-")(0)) 'récupère le numéro de carton NC
NF = CInt(Split(PN, "-")(1)) 'récupère le numéro de feuille NF
NT = CInt(Split(PN, "-")(2)) 'récupère le numéro de ticket NT
NNT = IIf((NT + N) Mod 8 = 1, 8, ((NT + N) Mod 8) - 1) 'définit le nouveau numéro de ticket NNT
NNF = IIf(N Mod 8 = 0, (NF - 1) + (N \ 8), NF + (N \ 8)) 'définit le nouveau numéro de feuille NNF
If NNF > 99 Then NNF = NNF - 999: NC = NC + 1 'si le nouveau numéro de feuille est supérieur à 999, redéfint NNF et NC
Range("C6").Value = Format(NC, "0000") & "-" & Format(NNF, "000") & "-" & NNT 'renvoie dans C6 le dernier numéro au bon format
End Sub