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

non, c'est juste que je me suis trompé d'indice dans le ubound

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, 2)).NumberFormat = "dd/mm/yyyy"
        .Range("C2").Resize(UBound(Tabdata, 2)).NumberFormat = "General"
        .Range("E2").Resize(UBound(Tabdata, 2)).NumberFormat = "0000000000"
        .Range("G2").Resize(UBound(Tabdata, 2)).NumberFormat = "General"
        .Range("I2").Resize(UBound(Tabdata, 2), 2).NumberFormat = "0.00"
        .Range("M2").Resize(UBound(Tabdata, 2)).NumberFormat = "dd/mm/yyyy"
        .Name = MoisEnCours & "_" & AnnéeEnCours
    End With
    
    WbDest.SaveAs Filename:=NomFile, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    WbDest.Close
    
End Sub
 
non, c'est juste que je me suis trompé d'indice dans le ubound

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, 2)).NumberFormat = "dd/mm/yyyy"
        .Range("C2").Resize(UBound(Tabdata, 2)).NumberFormat = "General"
        .Range("E2").Resize(UBound(Tabdata, 2)).NumberFormat = "0000000000"
        .Range("G2").Resize(UBound(Tabdata, 2)).NumberFormat = "General"
        .Range("I2").Resize(UBound(Tabdata, 2), 2).NumberFormat = "0.00"
        .Range("M2").Resize(UBound(Tabdata, 2)).NumberFormat = "dd/mm/yyyy"
        .Name = MoisEnCours & "_" & AnnéeEnCours
    End With
   
    WbDest.SaveAs Filename:=NomFile, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    WbDest.Close
   
End Sub

Super génial, cela fonctionne
Un grand merci

J'aurai une dernière demande, si cela est possible,

Est ce possible, s'il te plait, de générer les fichiers en .csv avec un séparateur ; ?
 
Re,
Ou encore appliquer le format lors de la création de feuille.
Comme ça on respecte toujours le format même s'il a changé, avec :
VB:
Sheets(NomBDD).Range("A2:N2").Copy                                                  ' Copy du format dans la feuille de travail
Sheets("Work").Range("A:N").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
 

Pièces jointes

voir PJ
avec nouvelle macro pour exporter au format CSV

selon ce que tu souhaites voir dans le fichier de résultat, il faut choisir l'une des deux lignes suivantes
VB:
    WbDest.SaveAs Filename:=NomFile, FileFormat:=xlCSV, CreateBackup:=False 'fileformat à xlCSV fait que excel va bien ouvrir le fichier mais va reconnaitre le séparateur ; et tout mettre en colonnes
    'WbDest.SaveAs Filename:=NomFile, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 'fileformat à xlOpenXMLWorkbook fait que excel va bien ouvrir le fichier mais ne va PAS reconnaitre le séparateur ; et tout mettre sur UNE seule colonne
 

Pièces jointes

voir PJ
avec nouvelle macro pour exporter au format CSV

selon ce que tu souhaites voir dans le fichier de résultat, il faut choisir l'une des deux lignes suivantes
VB:
    WbDest.SaveAs Filename:=NomFile, FileFormat:=xlCSV, CreateBackup:=False 'fileformat à xlCSV fait que excel va bien ouvrir le fichier mais va reconnaitre le séparateur ; et tout mettre en colonnes
    'WbDest.SaveAs Filename:=NomFile, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 'fileformat à xlOpenXMLWorkbook fait que excel va bien ouvrir le fichier mais ne va PAS reconnaitre le séparateur ; et tout mettre sur UNE seule colonne

Super, merci beaucoup
 
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