Sub Macro1()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim BE As Variant 'déclare la variable BE (Boîte d'Entrée)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set CS = ThisWorkbook 'définit le classeur source CS
Set OS = CS.Worksheets(1) 'définit l'onglet source OS (à adapter à ton cas)
CA = CS.Path & "\" 'définit le chemin d'accès CA
DL = OS.Cells(Application.Rows.Count, "A").End(xlUp).Row + 20 'définit la dernière ligne DL
For I = 1 To DL Step 30 'boucle sur toutes les lignes I de 1 à DL par pas de 30
Set CD = Workbooks.Add 'définit le classeur destination CD (en ouvrant un classeur vierge)
Set OD = CD.Worksheets(1) 'définit l'onglet destination OD
OS.Range(OS.Cells(I, 1), OS.Cells(I + 29, "G")).Copy OD.Range("A1") 'copy la plage de 30 lignes
OD.Rows(10).RowHeight = 167.5
OD.Rows(11).RowHeight = 60.25
OD.Rows(12).RowHeight = 258
ici: 'étiquette
BE = Application.InputBox("Taper le nom du fichier sans extension.", "NOM", Type:=2) 'définit la boîte d'entrée BE
If BE = False Then CD.Close False: GoTo suite 'si bouton [Annuler], ferme le classeur destination sans enregistrer, va à l'étiquette "suite"
If BE = "" Then 'condition : si BE n'est pas renseignée
MsgBox "Sans le nom le fichier se sera pas enregistrer !" 'message
GoTo ici 'va à l'étiquette "ici"
End If 'fin de la condition
CD.SaveAs CA & BE, 51 'sauve le classeur destination dans le dossier ayant CA comme chemin d'accès
CD.Close False 'ferme le classeur distination sans enregistrer
suite: 'étiquette
Next I 'prochain pack de 30 lignes
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub