Comment scinder un fichier en plusieurs à chaque changement de données

  • Initiateur de la discussion Initiateur de la discussion j67
  • Date de début Date de début

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 !

J

j67

Guest
Bonjour,

Je ne suis pas expert en Excel et J'aimerai avoir de l'aide sur un petit probleme.

Régulierement j'ai dois de retraiter certaines informations commerciales pour toute la France.
Je reçoi alors un fichiers d'environ 70 000 lignes. Et J'ai besoin d'un fichier par département.
Je perds un temps fou à le faire manuellement!!

Je ne sais pas si c'est possible mais j'aurai besoin d'une macro qui m'enregistre automatiquement à chaque changement de département un nouveau fichier sous le nom ou le numéro du département.

Je ne sais pas si j'ai été assez clair!!!
Voici le genre de doc que je reçoi!
Je vous remerci d'avance!!
 

Pièces jointes

Re : Comment scinder un fichier en plusieurs à chaque changement de données

bonjour j67 et bienvenue sur le forum,

essaye avec cette macro :
Code:
Sub test()

Dim newWbk As Workbook
Dim dossierSauvegarde As String, colonneDepartement As String
Dim i As Long, ligneDebutCopie As Long, ligneFinCopie As Long

'dossier où seraont créés les fichiers (à la racine du classeur dans l'exemple)
dossierSauvegarde = ThisWorkbook.Path

colonneDepartement = "J"

With ThisWorkbook.Sheets("Feuil1")
    'trier les données de la feuille par département
    .Range(.Range("A2"), .Range("A2").End(xlToRight).End(xlDown)).Sort key1:=.Range(colonneDepartement & "2"), order1:=xlAscending
    
    'boucler sur chaque entrée
    For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
        'récupérer la ligne de la première valeur du "département traité"
        ligneDebutCopie = i
        'tant que la ligne suivant concerne le département traité
        While .Range(colonneDepartement & i).Text = .Range(colonneDepartement & i + 1).Text
            'incrémenter i (passer à la ligne suivante)
            i = i + 1
        Wend
        'récupérer la ligne de la dernière valeur du "département traité"
        ligneFinCopie = i
        
        'créer un nouveau classeur avec une seule feuille
        Set newWbk = Application.Workbooks.Add(xlWBATWorksheet)
        
        'copier la ligne de titre
        .Rows(1).Copy newWbk.Sheets(1).Range("A1")
        
        'copier les valeurs du "département traité"
        .Rows(ligneDebutCopie & ":" & ligneFinCopie).Copy newWbk.Sheets(1).Range("A2")
        
        'sauver le nouveau classeur
        newWbk.SaveAs dossierSauvegarde & "\" & .Range(colonneDepartement & i).Text
        
        'fermer le nouveau classeur
        newWbk.Close True
    Next i
End With
End Sub

a+
 
Re : Comment scinder un fichier en plusieurs à chaque changement de données

mERCI BCP POUR cette réponse!! J'ai just un petit souci!! (je vous avez dit que je n'étais pas trés doué!!)
Quand je lance la macro il m'affiche un méssage : erreur de compilation : erreur de synthaxe.

Il me surligne Sub test ()
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour