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 !
Désolé j'ai trouvé plusieurs post un peu identique au miens mais j'ai l'impression que les macros proposées sont faites pour des fichiers spécifique... et j'arrive pas à les faire fonctionner avec mon fichier >>> donc nouveau post
Donc voilà j'ai un gros fichier excel de 120000 lignes et j'aimerais pouvoir le découper en plusieurs fichier de 500, 1000 ou 2000 lignes...
J'aimerais pouvoir choisir le nombre de ligne suivant le besoin et qu'il garde à chaque fois l’entête (la 1er ligne).
Il faut que les différents fichiers générés se retrouve dans le dossier ou est placé la macro, si il y a besoin d'un nom on peut appeler ce dossier "macro de découpe".
J'ai mis un exemple du fichier en PJ (volontairement réduit le nombre de ligne pour qu'il soit moins lourd).
Dans l’idéale j’aimerais que le bouton de la macro et la case ou on choisit le nombre de lignes par fichier soit mis en feuille 1, et les données à séparé en plusieurs fichier en feuille 2.
Aussi le fichier en exemple comporte 2 colonnes, si possible que la macro fonctionne quelques soit le nombre de colonnes.
Voila j’espère que j’ai assez détaillé ma demande, n’hésitez pas à me poser des questions autrement.
Oui! On pourrait avoir plusieurs séries de fichiers découpés dans le même répertoire. Après avoir fait une fusion sur une série de fichiers découpés, on pourrait vouloir faire une autre fusion avec une autre série (d'où la présence du bouton 'sélection par masque).
Les fichiers .xlsm joints à ce fil par ma pomme sont adaptés au cas spécifique des fichiers de youns33. La structure de vos fichiers à agréger (commandes Lyreco) n'a absolument aucun rapport avec celle pour laquelle les macros ont été conçues. Le fichier "youns33-Agréger-v1(commenté).xlsm" est donc inutilisable dans votre cas 🙁.
Il vaut donc mieux créer un nouveau fil de discussion. et bien décrire la structure des vos fichiers à agréger et la structure du fichier agrégé.
Les fichiers .xlsm joints à ce fil par ma pomme sont adaptés au cas spécifique des fichiers de youns33. La structure de vos fichiers à agréger (commandes Lyreco) n'a absolument aucun rapport avec celle pour laquelle les macros ont été conçues. Le fichier "youns33-Agréger-v1(commenté).xlsm" est donc inutilisable dans votre cas 🙁.
Bingo!
Oui comme ta première ligne est vide
dercol est égal à 1
c'est pour cela que la recopie ne prenait en compte qu'une seule colonne.
@mapomme
J'ai testé rapidement, il y a pas un petit MsgBox qui dit "Traitement terminé" ou un truc du genre?
Tu me diras, "JM, gros fainéant, tu n'as qu'à aller lire mon code commenté!!"
Et tu as bien raison.
Mais comme t'es connecté je préserve ma santé 😉 et mes jolis yeux.
Bingo!
Oui comme ta première ligne est vide
dercol est égal à 1
c'est pour cela que la recopie ne prenait en compte qu'une seule colonne.
@mapomme
J'ai testé rapidement, il y a pas un petit MsgBox qui dit "Traitement terminé" ou un truc du genre?
Tu me diras, "JM, gros fainéant, tu n'as qu'à aller lire mon code commenté!!"
Et tu as bien raison.
Mais comme t'es connecté je préserve ma santé 😉 et mes jolis yeux.
Staple1600
Ok et merci pour l'info.
J'ai enlevé la 1ère ligne de chaque fichier mais cela est toujours idem. Dans le nouveau fichier je n'ai qu'une seule colonne !
@Eval
Dans le fichier Test que tu as joins, il y avait cette macro
Macro que j'ai modifié pour qu'elle fasse ce que tu souhaites
Donc avant de tester, on met ses lunettes, on lit bien le code et ses commentaires
VB:
Sub GetSheets()
'Déclarations variable
Dim sheet As Worksheet, Path$
Path = "F:\aut\Il\Supprimer\Lhuile\DePalme\" 'ici mettre le bon chemin
' en n'oubliant pas le \ final
Application.ScreenUpdating = False
Filename = Dir(Path & "*.xlsx")' ici attention à l'extension
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each sheet In ActiveWorkbook.Sheets
sheet.UsedRange.Copy ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp)(1)
Application.CutCopyMode = False
Next sheet
Workbooks(Filename).Close False
Filename = Dir()
Loop
End Sub
@Eval
Dans le fichier Test que tu as joins, il y avait cette macro
Macro que j'ai modifié pour qu'elle fasse ce que tu souhaites
Donc avant de tester, on met ses lunettes, on lit bien le code et ses commentaires
VB:
Sub GetSheets()
'Déclarations variable
Dim sheet As Worksheet, Path$
Path = "F:\aut\Il\Supprimer\Lhuile\DePalme\" 'ici mettre le bon chemin
' en n'oubliant pas le \ final
Application.ScreenUpdating = False
Filename = Dir(Path & "*.xlsx")' ici attention à l'extension
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each sheet In ActiveWorkbook.Sheets
sheet.UsedRange.Copy ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp)(1)
Application.CutCopyMode = False
Next sheet
Workbooks(Filename).Close False
Filename = Dir()
Loop
End Sub
Staple1600
Merci pour votre aide mais comme déjà dit dans un message précédent, je n'y connais rien en macro, code, etc...
Puis-je vous demander s'il serait possible de me faire un petit fichier comme mapomme a fait ?
Fichier avec une possibilité de choisir le répertoire et les fichiers à fusionner ?
Encore merci pour votre aide.
[avis personnel]
Tu es inscrit depuis 2013
Donc tu ne peux pas prétendre n'y rien connaitre 😉
Il suffit simplement de mettre les mains dans le cambouis
(Tu es connecté sur le web, tu sais lire, il suffit de chercher les infos nécessaires 😉
mot-clés: copier une macro | lancer une macro etc....)
[/avis personnel]
Voici une adaptation d'un macro que j'ai posté dans une autre discussion
VB:
Sub Selection_Tout_Type_Fichier_XL_SpecialEVAL()
Dim Dossier$, Classeur$, wb As Workbook, sheet As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False: Application.EnableEvents = False: Application.Calculation = -4135
With Application.FileDialog(4)
.AllowMultiSelect = False
.Title = "Sélectionner le dossier de votre choix"
If .Show = -1 Then
Dossier = .SelectedItems(1)
End If
If Dossier = "" Then Exit Sub
End With
Classeur = Dir(Dossier & "\*.xls*")
Do While Classeur <> ""
Set wb = Workbooks.Open(Dossier & "\" & Classeur)
DoEvents
For Each sheet In wb.Sheets
sheet.UsedRange.Copy ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp)(1)
Next sheet
wb.Close True
DoEvents
Classeur = Dir
Loop
MsgBox "Tâche terminée!"
Application.EnableEvents = True: Application.Calculation = -4105: Application.ScreenUpdating = True
End Sub
PS: Depuis au moins 5 ans je ne poste plus aucun fichier Excel, cela dans le secret et fol espoir, de voir les padawans Exceliens s'impliquer un max dans la résolution de leur question.
Comme dirait Evelyne T. : C'est mon choix. 😉
[avis personnel]
Tu es inscrit depuis 2013
Donc tu ne peux pas prétendre n'y rien connaitre 😉
Il suffit simplement de mettre les mains dans le cambouis
(Tu es connecté sur le web, tu sais lire, il suffit de chercher les infos nécessaires 😉
mot-clés: copier une macro | lancer une macro etc....)
[/avis personnel]
Voici une adaptation d'un macro que j'ai posté dans une autre discussion
VB:
Sub Selection_Tout_Type_Fichier_XL_SpecialEVAL()
Dim Dossier$, Classeur$, wb As Workbook, sheet As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False: Application.EnableEvents = False: Application.Calculation = -4135
With Application.FileDialog(4)
.AllowMultiSelect = False
.Title = "Sélectionner le dossier de votre choix"
If .Show = -1 Then
Dossier = .SelectedItems(1)
End If
If Dossier = "" Then Exit Sub
End With
Classeur = Dir(Dossier & "\*.xls*")
Do While Classeur <> ""
Set wb = Workbooks.Open(Dossier & "\" & Classeur)
DoEvents
For Each sheet In wb.Sheets
sheet.UsedRange.Copy ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp)(1)
Next sheet
wb.Close True
DoEvents
Classeur = Dir
Loop
MsgBox "Tâche terminée!"
Application.EnableEvents = True: Application.Calculation = -4105: Application.ScreenUpdating = True
End Sub
PS: Depuis au moins 5 ans je ne poste plus aucun fichier Excel, cela dans le secret et fol espoir, de voir les padawans Exceliens s'impliquer un max dans la résolution de leur question.
Comme dirait Evelyne T. : C'est mon choix. 😉
Ce qui veut dire?
Que tu ne vas pas mettre les mains dans le cambouis?
Dommage car la macro que je propose fonctionne et recopie tous les bons de commande de tout les classeurs se situant dans le répertoire choisi.
(j'ai testé en faisant trois copies de ton fichier Test.xls que j'ai enregistré en Test1.xlsx puis copier en Test2.xls et Test3.xls
Résultat: la macro a tout recopié à la queue leu leu dans le classeur ou j'avais mis la macro)
*: à mon sens , le tout de même est de trop, camarade 😉
Ce qui veut dire?
Que tu ne vas pas mettre les mains dans le cambouis?
Dommage car la macro que je propose fonctionne et recopie tous les bons de commande de tout les classeurs se situant dans le répertoire choisi.
(j'ai testé en faisant trois copies de ton fichier Test.xls que j'ai enregistré en Test1.xlsx puis copier en Test2.xls et Test3.xls
Résultat: la macro a tout recopié à la queue leu leu dans le classeur ou j'avais mis la macro)
*: à mon sens , le tout de même est de trop, camarade 😉
Bonsoir Staple1600,
Je ne voulais certainement pas vous froisser avec ma réponse et si je l’ai fait, je m’en excuse car ce n’est n’etait pas voulu.
J’ai voulu simplement dire que j’etais un peu déçu de ne pas avoir éventuellement un petit fichier réalisé avec un code pour mon cas. Comme déjà dit, je n’y connais rien en macro, code, etc... En tout cas merci pour l’aide reçue et encore une fois mes plus sincères excuses. Bonne soirée à vous.
@Eval
N'y rien connaitre n'empêche nullement de tenter l'aventure.
Il existe sur le net moults tutoriels (avec copie d'écran ou video) qui explique comment intégrer une macro dans un classeur et comment l'éxécuter.
Il suffit donc d'utiliser le moteur de recherche de ton choix et de faire les recherches idoines.
Exemple: excel comment lancer une macro
renvoie ici dans le moteur de recherche https://support.office.com/fr-fr/article/Exécuter-une-macro-5e855fd2-02d1-45f5-90a3-50e645fe3155
@Eval
N'y rien connaitre n'empêche nullement de tenter l'aventure.
Il existe sur le net moults tutoriels (avec copie d'écran ou video) qui explique comment intégrer une macro dans un classeur et comment l'éxécuter.
Il suffit donc d'utiliser le moteur de recherche de ton choix et de faire les recherches idoines.
Exemple: excel comment lancer une macro
renvoie ici dans le moteur de recherche https://support.office.com/fr-fr/article/Exécuter-une-macro-5e855fd2-02d1-45f5-90a3-50e645fe3155
Bonjour Staple1600,
Ok et merci pour cette nouvelle aide.
Je vais voir ce lien et essayer de le faire.
Si soucis, puis je me permettre de vous demander encore de l’aide ?
Bonne journée et au plaisir.
- 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