XL 2016 Code VBA pour éclater un fichier en x fichier par mois

  • Initiateur de la discussion Initiateur de la discussion J17
  • Date de début Date de début
  • Mots-clés Mots-clés
    vba

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J17

XLDnaute Nouveau
Bonjour,
Je souhaiterai votre aide pour avoir un code vba qui me découpe un fichier source en x fichiers (un nouveau fichier pour chaque mois).
Mes fichiers sources contiennent plus de 250 000 lignes d'écritures comptables sur plusieurs mois.
Pourriez vous, s'il vous plait, m'aider ?
Je vous mets en pièce jointe un fichier source comme exemple qui est moins volumineux
Je vous en remercie par avance
Bien cordialement
JC
 

Pièces jointes

avant de lancer la macro, supprimes tous les fichiers qui ont été générés précedemment
relance la macro==> si tu as encore le message, c'est que tes données ne sont pas triées
(c'est ce que je mettais dans un message précédent en réponse à Sylvanu==> ma macro suppose que la colonne A est triée en ordre croissant==> il te suffit donc de la trier avant de lancer la macro)
 
avant de lancer la macro, supprimes tous les fichiers qui ont été générés précedemment
relance la macro==> si tu as encore le message, c'est que tes données ne sont pas triées
(c'est ce que je mettais dans un message précédent en réponse à Sylvanu==> ma macro suppose que la colonne A est triée en ordre croissant==> il te suffit donc de la trier avant de lancer la macro)

Merci beaucoup pour ton analyse,
En effet, cela fonctionne très bien en faisant un tri avant de lancer la macro

Pourrais tu, s'il te plait, rajouter le tri des données sources dans ton code VBA ?

Dans les fichiers générés, les données sont un peu modifiées, exemple, si j'ai une référence 00000123 dans le fichier source, dans la copie, je retrouve 123.
Idem, dans le fichier source, j'ai des montants 0,00 et dans le fichier généré, le retrouve 0.

Serait il possible, s'il te plait, avoir les mêmes données dans les fichiers mensuels générés ?

Merci par avance

JC
 
En effet, cela fonctionne super bien

Dans les fichiers générés, les données sont un peu modifiées, exemple, si j'ai une référence 00000123 dans le fichier source, dans la copie, je retrouve 123.
Idem, dans le fichier source, j'ai des montants 0,00 et dans le fichier généré, le retrouve 0.

Serait il possible, s'il te plait, avoir les mêmes données dans les fichiers mensuels générés ?

Merci par avance
 
Oups ! 😡
Petit bug, un "-1" oublié.

Merci beaucoup cela fonctionne bien également

Cependant, dans les fichiers générés, les données sont un peu modifiées, exemple, si j'ai une référence 00000123 dans le fichier source, dans la copie, je retrouve 123.
Idem, dans le fichier source, j'ai des montants 0,00 et dans le fichier généré, le retrouve 0.

Serait il possible, s'il te plait, avoir toutes les mêmes données dans les fichiers mensuels générés ?

Merci par avance
 
pour reformater

VB:
Sub Export(Tabdata() As Variant, NomFile As String, MoisEnCours As Integer, AnnéeEnCours As Integer)
    Workbooks.Add
    Set WbDest = ActiveWorkbook
    With WbDest.Sheets("Feuil1")
        .Range("A1").Resize(UBound(Tabdata, 2), UBound(Tabdata, 1)) = Application.WorksheetFunction.Transpose(Tabdata) 'on colle le résultat
        
        'on reformate les données
        .Range("A2").Resize(UBound(Tabdata, 1)).NumberFormat = "dd/mm/yyyy"
        .Range("C2").Resize(UBound(Tabdata, 1)).NumberFormat = "General"
        .Range("E2").Resize(UBound(Tabdata, 1)).NumberFormat = "0000000000"
        .Range("G2").Resize(UBound(Tabdata, 1)).NumberFormat = "General"
        .Range("I2").Resize(UBound(Tabdata, 1), 2).NumberFormat = "0.00"
        .Range("M2").Resize(UBound(Tabdata, 1)).NumberFormat = "dd/mm/yyyy"
        .Name = MoisEnCours & "_" & AnnéeEnCours
    End With
    
    WbDest.SaveAs Filename:=NomFile, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    WbDest.Close
    
End Sub
 
pour reformater

VB:
Sub Export(Tabdata() As Variant, NomFile As String, MoisEnCours As Integer, AnnéeEnCours As Integer)
    Workbooks.Add
    Set WbDest = ActiveWorkbook
    With WbDest.Sheets("Feuil1")
        .Range("A1").Resize(UBound(Tabdata, 2), UBound(Tabdata, 1)) = Application.WorksheetFunction.Transpose(Tabdata) 'on colle le résultat
       
        'on reformate les données
        .Range("A2").Resize(UBound(Tabdata, 1)).NumberFormat = "dd/mm/yyyy"
        .Range("C2").Resize(UBound(Tabdata, 1)).NumberFormat = "General"
        .Range("E2").Resize(UBound(Tabdata, 1)).NumberFormat = "0000000000"
        .Range("G2").Resize(UBound(Tabdata, 1)).NumberFormat = "General"
        .Range("I2").Resize(UBound(Tabdata, 1), 2).NumberFormat = "0.00"
        .Range("M2").Resize(UBound(Tabdata, 1)).NumberFormat = "dd/mm/yyyy"
        .Name = MoisEnCours & "_" & AnnéeEnCours
    End With
   
    WbDest.SaveAs Filename:=NomFile, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    WbDest.Close
   
End Sub

Merci beaucoup pour ce code
A quel niveau dois je l'insérer ?
Merci par avance
 
Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
608
Réponses
32
Affichages
1 K
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
765
  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
355
Retour