Couper un fichier Excel en plusieurs fichiers

Re

je l'ai modifié c'est toujours la meme chose :

ma plage de données c'est de A JUSQU'AU R et le controle se fait sur la Branche (O) et il prend N aussi (N et O ) pr renommer les fichiers

Option Explicit

Sub creation_fichiers()
Dim i As Integer
Dim sh, Dlg, plg
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Set sh = Sheets(1)
Dlg = sh.Cells(Rows.Count, 1).End(xlUp).Row
Set plg = sh.Range("A5:R" & Dlg)
sh.Range("O6:O" & Dlg).Copy sh.[AA1]
sh.Range("N6:N" & Dlg).Copy sh.[AB1]
sh.[AA:AB].RemoveDuplicates Columns:=Array(2), Header:=xlYes
sh.[AC1] = sh.[O6]

For i = 2 To sh.Cells(Rows.Count, "AA").End(xlUp).Row
Workbooks.Add
sh.[AC2] = sh.Range("AA" & i)
plg.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=sh.Range("AC1:AC2"), CopyToRange:=ActiveWorkbook.Sheets(1).Range("A1:R1")

ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & sh.Range("AB" & i) & "-" & sh.Range("AA" & i) & ".xls", FileFormat:=xlExcel8

ActiveWorkbook.Close False
Next i
sh.[AA:AC].ClearContents
End Sub

Re

tu sais quoi...ça me gonfle....

dans ton premier fichier la tableau commençait ligne 6 dans le denier maintenant il commence ligne 5...

capture

branch était colonne T maintenant c'est N

le tableau allait jusqu’à U maintenant c'est R

sans redire ce que j'ai dit sur l’écrasement ou pas des nouveaux fichiers créés....

et Hormis le fait que tu me contact en plus par Message privé et par mail pour que je vienne résoudre le problème....

franchement ça me gonfle......

C'est le gros problème quand les personnes ne savent pas ce qu'elles veulent....

je vais remettre pour une dernière fois le code dans le bon ordre après c'est Tchao

mais pour l'instant je vais faire a diner a mes enfants

fred

Oui j'ai essayé de faire l'adaptation en suivant ton premier code ca marchait pas malheureusement

RE

voici donc la dernière version de ton fichier

petite nouveauté dans tes colonnes tu as :

branche : 8140

branch descr : FIN- ADM/Chief Fin.Off. (R-Up)

hors ces deux éléments font partis du nom du fichier créé

problème dans branch descr FIN- ADM/Chief Fin.Off. (R-Up) le/ est un des caractères interdits par windows dans les noms des fichiers d'ou le problème j'ai donc remplacer ce caractère pas une espace

bye

fred

Re ,

Merci Beaucoup Fred

Bonne soirée

Bonjour,

désolé d'exhumer le post mais le travail etant deja tellement bien fait !!

j'ai exactement la même problématique, j'essaie de l'adapter a mes besoins mais je ne comprends pas le code de la macro...

est ce qu'il est possible de le commenter un peu ? (pour que des noob comme moi puissions l'adapter sans venir déranger a chaque fois ?

Option Explicit

Sub creation_fichiers()

Dim i As Integer

Dim sh, Dlg, plg

Application.ScreenUpdating = False

ici on defini la variable sh comme etant la feuille1

Set sh = Sheets(1)

ici on defini la variable Dlg comme etant toutes les cellules de la feuille

Dlg = sh.Cells(Rows.Count, 1).End(xlUp).Row

ici la 1ere cellule du tableau jusqu'au numéro de colonne de la derniere cellule mais pourquoi faire un appel a Dlg ?

Set plg = sh.Range("A5:U" & Dlg)

ici la colonne qui sert de filtre a rupture avec la 1ere cellule, par contre a quoi correspond [AA1] ?

sh.Range("T5:T" & Dlg).Copy sh.[AA1]

ici a quoi correspond [AA:AA] ????

sh.[AA:AA].RemoveDuplicates Columns:=Array(1), Header:=xlYes

ici a quoi correspond [AB1

sh.[AB1] = sh.[T5]

ici y a une boucle qui se met en place ....

For i = 2 To sh.Cells(Rows.Count, "AA").End(xlUp).Row

Workbooks.Add

ici je comprends pas T_T

sh.[AB2] = sh.Range("AA" & i)

ici enregistrement du classeur en fonction du contenu de la cellule U

plg.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=sh.Range("AB1:AB2"), CopyToRange:=ActiveWorkbook.Sheets(1).Range("A1:U1")

If Dir(ThisWorkbook.Path & "\Branche " & sh.Range("AA" & i) & ".xls") = "" Then ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\Branche " & sh.Range("AA" & i) & ".xls", FileFormat:=xlExcel8

ActiveWorkbook.Close False

Next i

sh.[AA:AB].ClearContents

End Sub

hum ... donc je capte pas tout hélas ..

PS dans mon cas mon tableau a sa ligne d'entete en ligne 1 et les données en ligne 2 jusqu'au plusieurs milliers

le filtre se fait en fonction de la colonne o et le tableau va jusqu'a i

Merci du coup de pouce en tout cas !

Elf

Bonjour Elf

il aurait été préférable d'ouvrir ton propre sujet avec éventuellement un lien sur ce sujet...

Avant de commencer il faut connaitre le fonctionnement d'un filtrage avancé, est-ce le cas ???

et peut-etre aussi faire executer le code en mode pas à pas (touche F8) pour comprendre les différentes étapes

ici la 1ere cellule du tableau jusqu'au numéro de colonne de la derniere cellule mais pourquoi faire un appel a Dlg ?

Set plg = sh.Range("A5:U" & Dlg)

on défnit une variable de type range (une plage) qui va dans le premier fichier A5 à U1120 car le filtre élabore va se faire sur tout le tableau...d'ou la nécessite d'avoir la Dernière ligne => Dlg

la personne voulais faire un fichier par branche donc l'entete du filtre devra etre Branch cellule T5 et ensuite toutes les valeurs possible de cette colonne,pour pouvoir faire le filtre élaboré il faut quelque part temporairement (ici Ab1-AB2) deux cellules ou il y a l’entête de la colonne a traité AB1 qui sera égale a la valeur de T5

[quote]ici a quoi correspond [AB1

sh.[AB1] = sh.[T5][/quote]

+ un critère de recherche..en AB2 devra prendre toutes les valeurs possibles les une après les autres pour pouvoir faire les fichiers un par un.

pour ce faire j'utilise un autre colonne temporaire la colonne AA pour avoir le nom de toutes les banches possibles

donc je copie le cellules T5-T1120 dans la colonne AA a partir de la cellule AA1

sh.Range("T5:T" & Dlg).Copy sh.[AA1]

Je fais une extraction sans doublons sur la colonne AA mais qui contient une entête...

sh.[AA:AA].RemoveDuplicates Columns:=Array(1), Header:=xlYes

on a donc en AA la liste des branches possibles et en AB1-AB2 notre critère de filtrage

on va procéder à une boucle pour faire les filtrages les uns après les autres, on va donc mette en AB2 les différentes branches..... et donc faire les différents fichiers ...

fred

Si tu dis ceci :

PS dans mon cas mon tableau a sa ligne d'entete en ligne 1 et les données en ligne 2 jusqu'au plusieurs milliers

le filtre se fait en fonction de la colonne o et le tableau va jusqu'a i

pour moi cela n'est pas possible.... si le tableau va jusqu'a I tu ne peux pas filtré en O....a moins que je ne connaisse plus mon alphabet...

il vaut mieux ouvrir un nouveau poste avec un fichier exemple avec quelques lignes rendus anonymes si besoin et envenutellement mettre un lien avec ce post

Fred

Merci de ta réponse !

je connais les filtres avancés et j'avais essayé le pas a pas mais j'avais pas tilté que AB c'etait le nom de la colonne je ne voyais donc rien se faire maintenant ca va mieux et j'ai donc réussi a adapter ta macro a mon fichier, tu viens de me faire gagner un temps dingue (liste electorale, 20 000 lignes, 400 collectivités et il fallait que je decoupe en autant de fichiers que de collectivités, autant dire l'horreur !

j'ai même résussi a profiter de ta dernière version pour moi aussi supprimer les caractères interdits dans les noms des fichiers !!

donc a priori je laisse retomber ce post dans les limbes du forum...

par contre si tu es ok j'ai un autre classeur sur la meme thématique mais avec une difficulté supplémentaire... si tu es ok pour voir si tu trouve une astuce j'ouvre un autre fil

MErci encore

Bonjour

Content pour toi ....

Fred

Rechercher des sujets similaires à "couper fichier fichiers"