Fractionner données d'une feuille Excel en feuilles Export (avec variable)

Bonsoir tout le monde,

Grâce à xorsankukai de ce forum, j'ai réussi à avancer sur mon projet.

Seulement je souhaiterais apporter une modification mais je bloque.

Pour résumé, j'ai des données en Feuil2. Je récupère ces données que je fractionne en plusieurs feuilles nommées Export... par bloc de 20 lignes.

Cependant, j'aimerais que le 1er bloc sur la feuille Export 1 ne comporte pas forcément 20 lignes mais dépende plutôt d'une variable X renseignée depuis une inputbox.

Sub test()
 Dim tb, sh As Worksheet
 Dim cp%, depart&, derlig&

 Application.ScreenUpdating = False

 '********************************************************************
  'efface les feuilles "Export"
 '*******************************************************************
 For Each sh In ThisWorkbook.Worksheets
  Application.DisplayAlerts = False
   If sh.Name Like "Export*" Then sh.Delete
  Application.DisplayAlerts = True
 Next sh
 '********************************************************************
X = InputBox("Renseignez un nombre svp :", "Excel")
 '********************************************************************

   derlig = Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row
   cp = 1: depart = 1
    Do While depart <= derlig
     tb = Sheets("Feuil2").Range("A" & depart).Resize(20, 4)
     Sheets.Add Count:=1, after:=Worksheets(Worksheets.Count)
      With ActiveSheet
      .Name = "Export" & cp
      .Range("A1").Resize(20, 4) = tb
      End With
     Erase tb
      'Sheets("Feuil2").Activate
      depart = depart + 20
      cp = cp + 1
   Loop
End Sub

Merci d'avance pour vos propositions :)

JB

12fractionner.xlsm (19.92 Ko)

Bonjour JB, bonjour le forum,

Essaie comme ça :

Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim BE As Variant 'déclare la variable BE (Boîte d'Entrée)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim CP As Integer 'déclare la variable CP (ComPteur)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set OS = Worksheets("Feuil2") 'définit l'onglet OS
Application.DisplayAlerts = False 'empêche les message d'Excel
For Each O In Worksheets 'boucle sur tous les onglets O du classeur
    If O.Name Like "Export*" Then O.Delete 'si le nom de l'onglet commence par "Export", supprime l'onglet
Next O 'prochain onglet de la boucle
Application.DisplayAlerts = True 'autorise les message d'Excel
BE = Application.InputBox("Renseignez un nombre svp.", Type:=1) 'definit la boîte d'entrée BE
If BE = False Then Exit Sub 'si bouton [Annuler] sort de la procédure
Worksheets.Add After:=Sheets(Sheets.Count) 'ajoute un onglet en dernière position
Set OD = ActiveSheet 'definit l'onglet de destination OD
OD.Name = "Export1" 'renomme l'onglet
OS.Rows(1 & ":" & BE).Copy OD.Range("A1") 'copy les lignes 1 à BE de l'onglet OS
DL = OS.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne DL de la colonne A de l'onglet OS
CP = 2 'définit le compteur CP
For I = BE + 1 To DL Step 20 'boucle des lignes BE + 1 à DL par pas de 20
    Worksheets.Add After:=Sheets(Sheets.Count) 'ajoute un onglet en dernière position
    Set OD = ActiveSheet 'définit l'onglet OD
    OD.Name = "Export" & CP 'renomme l'onglet
    OS.Rows(I & ":" & I + 19).Copy OD.Range("A1") 'copie les lignes I à I + 19 de l'onglet OS et les copie dans A1 de l'onglet OD
    CP = CP + 1 'incrémente CP
Next I 'prochaine ligne de la boucle
End Sub

Bonsoir ThauThème,

Un grand merci pour votre contribution, j'ai réussi à adapter votre code et celui de xorsankukai à mon projet ! Merci pour les commentaires dans le code, cela permet de mieux comprendre chaque étape, surtout pour les novices comme moi :)

Bonne fin de soirée à vous :)

JB

Vieux motard que j'aimais...

Rechercher des sujets similaires à "fractionner donnees feuille feuilles export variable"