Application.ScreenUpdating = False
 'déclaration des variables
    Dim message As String, title As String
    Dim nblg As Byte
    Dim I As Long
 
    I = ActiveCell.Row
  'on prépare les infos pour le message box
    message = "Entrez le nombre de lignes"
    title = "Insérer lignes"
    'demande le nombre de lignes à insérer
    nblg = Application.InputBox(message, title, Type:=1)
    'test pour sortir au cas ou l'utilisateur rentre 0 ligne
    If nblg = 0 Then MsgBox "Le nombre de lignes est à zéro": End
 
    'copie de la dernière ligne remplie
    Rows(I).Copy
 
    Rows(I).Resize(nblg, 1).Insert Shift:=xlShiftDown 'Insertion par copie des nouvelles lignes
    Rows(I + 1).Resize(nblg).ClearContents 'on efface le contenu des lignes copiées pour avoir des lignes vierges
 L = Range("U" & nblg)
    LD = nblg + 1
    LF = nblg + L - 1
     NPF = 1
            LD = LD - 1
               LF = LF
            For m = LD To nblg
                Range("AG" & m) = NPF
                NPF = NPF + 1
         Next m
        nblg = nblg + L
    Range("B" & nblg & ":D" & nblg).Copy Range("B" & LD & ":D" & LF)
    Range("L" & nblg & ":M" & nblg).Copy Range("L" & LD & ":M" & LF)