Exporter les lignes d'un fichier Excel dans d'autr

Tazos27 Messages postés 72 Statut Membre -  
Tazos27 Messages postés 72 Statut Membre -
Bonjour,
je me permets de vous solliciter car j'ai un fichier Excel de 3800 lignes, et je souhaiterais le découper en plusieurs fichiers Excel de 50 lignes tout en gardant la première ligne sur chaque fichier.
Est-ce possible?

Merci par avance.

2 réponses

  1. Guillaumeys Messages postés 82 Statut Membre 12
     
    Bonjour à toi,

    Malheureusement, ce n'est pas possible, tu peux cepandant le faire manuellement
    0
    1. Pierr10 Messages postés 13836 Date d'inscription   Statut Modérateur Dernière intervention   5 843
       
      Et ça fait 76 fichiers ! Bon courage ...
      0
    2. Jauster Messages postés 142 Statut Membre 42
       
      Bonjour,
      C'est possible avec du VBA, mais il y aura beaucoup de fichier. Par contre on peut le split en différentes feuilles ?
      0
    3. Tazos27 Messages postés 72 Statut Membre 4
       
      Bonjour, merci pour vos réponses, s'il faut le split en plusieurs feuilles cela me va, après il faudra exporter les feuilles :)
      Comment split en plusieurs feuilles?
      0
  2. Jauster Messages postés 142 Statut Membre 42
     
    Bonjour,

    Testé sur 1000 lignes, a essayer sur votre document.

    ATTENTION : Le fichier source est découpé et donc détruit. Pensez à faire une sauvegarde de votre fichier avant de lancer la macro. Les nouveaux classeurs seront enregistrés dans le dossier où le fichier source est enregistré. Le format recommandé pour le fichier est .xlsx

    Sub AddSheets()
    Application.EnableEvents = False
    
    Dim wbNew As Workbook
    Dim wsSource As Worksheet
    Dim wb As Workbook
    Dim sheetCount As Integer
    Dim rowCount As Integer
    Dim splitlignes As Integer
    Dim strFilename As String
    
    
    Set wsSource = ActiveSheet
    Set wb = ActiveWorkbook
    
    splitlignes = 50
    rowCount = Application.CountA(Sheets(1).Range("A:A"))
    sheetCount = Round(rowCount / splitlignes, 0)
    
    Dim i As Integer
    
    For i = 1 To sheetCount - 1 Step 1
    With wb
        .Sheets.Add after:=.Sheets(.Sheets.Count)
    
         wsSource.Range("A1:Z1").EntireRow.Copy Destination:=Sheets(.Sheets.Count).Range("A1").End(xlUp)
    
        wsSource.Range("A" & (splitlignes + 2) & ":Z" & (2 * splitlignes + 1)).EntireRow.Cut Destination:=Sheets(.Sheets.Count).Range("A" & Rows.Count).End(xlUp).Offset(1)
        wsSource.Range("A" & (splitlignes + 2) & ":Z" & (2 * splitlignes + 1)).EntireRow.Delete
    
        ActiveSheet.Name = "Lignes " + CStr(((.Sheets.Count - 1) * splitlignes + 1)) & " - " & CStr((.Sheets.Count * splitlignes))
    End With
    
    Next
    
    wsSource.Name = "Lignes 1 - " & splitlignes
    
        For Each ws In wb.Worksheets
            strFilename = wb.Path & "/" & ws.Name
            ws.Copy
            Set wbNew = ActiveWorkbook
            wbNew.SaveAs strFilename
            wbNew.Close
        Next ws
    
    Application.EnableEvents = True
    
    End Sub
    


    Pour l'ajouter au fichier > Alt + F11 > clic droit dans ton projet dans l'arborescence à gauche > Insert > Module et copier le code. Il faut également être sur la feuille source avant de lancer la macro
    0
    1. Jauster Messages postés 142 Statut Membre 42
       
      PS : Changer la valeur de splitlignes pour augmenter ou diminuer le nombre de lignes
      0
    2. Tazos27 Messages postés 72 Statut Membre 4
       
      Jauster!!!! tu es mon Dieu!!! Merci c'est top j'ai changer le splitline en 49, par contre le premier fichier créé est en 71 lignes je ne sais pas pour quoi mai cela me va très bien comme çà merci beaucoup!!
      0
    3. Tazos27 Messages postés 72 Statut Membre 4
       
      Jauster, une dernière petite demande, est-ce possible que les fichiers créés s'enregistrent en version classeur excel 97-2003 plutôt que .xlsx?
      0
    4. Jauster Messages postés 142 Statut Membre 42
       
      Re,

      Oui il suffit de remplacer :
          For Each ws In wb.Worksheets
              strFilename = wb.Path & "/" & ws.Name
              ws.Copy
              Set wbNew = ActiveWorkbook
              wbNew.SaveAs strFilename
              wbNew.Close
          Next ws


      par :

          For Each ws In wb.Worksheets
              strFilename = wb.Path & "/" & ws.Name
              ws.Copy
              Set wbNew = ActiveWorkbook
              wbNew.SaveAs strFilename, FileFormat:=xlWorkbookNormal
              wbNew.Close
          Next ws
      0
    5. Tazos27 Messages postés 72 Statut Membre 4
       
      Un grand merci à toi Jauster, cela va me faciliter la vie ;)
      0