Repartir données filtrées de plusieurs onglets dans un nouveau classeur

nickos2406

XLDnaute Junior
Bonjour,

Je reprends la suite de cette discussion sur la macro de découpage de fichier:
https://www.excel-downloads.com/threads/macro-pour-decouper-un-fichier-excel.103527/

J'ai attaché le fichier test modifié ici...

Maintenant je cherche à filtrer la région sur la feuille 1, puis la coller dans un nouveau fichier... ensuite, c'est de filtrer sur la même région dans la feuille 2 et le coller dans un nouvel onglet de ce nouveau fichier créé, etc... pour l'ensemble des onglets présents dans le fichier d'origine...
Ce qui facilite la "tâche", on va dire, c'est que tous les onglets ont les mêmes colonnes, donc, le filtre s'applique sur la même colonne. Pas contre le nombre d'onglets varie d'un mois à l'autre, et je n'ai pas systématiquement 3 onglets. Je peux me retrouver avec 2 ou plus...
Bref, c'est là un gros travail, sur lequel j'ai commencé à bosser... Et si vous avez des pistes, je suis grandement preneur et reconnaissant.

Pour l'onglet compil, c'est en fait un onglet comme les autres, la logique reste la même, il faut filtrer copier-coller dans le nouveau fichier...

Merci d'avance, je continue ma recherche en parallèle, mais la tache s'annonce ardue.

Nickos
 

Pièces jointes

  • TEST.xlsm
    86.6 KB · Affichages: 53
  • TEST.xlsm
    86.6 KB · Affichages: 54
  • TEST.xlsm
    86.6 KB · Affichages: 52
Dernière édition:

nickos2406

XLDnaute Junior
Re : Repartir données filtrées de plusieurs onglets dans un nouveau classeur

Bonjour,

Désolé pour ce message tardif... Merci déjà pour la réponse, et je vois que ça n'a pas chaumé :) ! Cependant, je n'ai pas du correctement expliquer le problème... En effet, ce que je cherche à faire c'est de filtrer une donnée sur chacun des onglets du fichier, et recopier dans un nouveau document les données par onglet...
donc le principe est le suivant (par rapport au fichier test envoyé):
1- sur la feuille1, filtrer la donnée x sur la colonne C
2- coller l'ensemble des données filtrées trouvées dans un nouveau document excel
3-revenir dans le fichier originel, et passer sur l"onglet suivant, puis filtrer sur la même donnée dans la meme colonne C, et coller dans un nouvel onglet du document créé en 2
4- revenir dans le fichier originel, et passer à l'onglet suivant, filtrez et copier coller... Etc jusqu'à la fin des onglets disponibles dans le fichier originel...

Dans le fichier TEST.xlsm, j'ai déjà un code vba qui permet de faire le 1 (c'est à dire filtrer et coller le tableau filtré dans un nouveau document). Là où je bloque maintenant c'est de savoir comment rebasculer dans le fichier originel et faire un filtre sur l'onglet suivant et coller dans un nouvel onglet du fichier nouvellement créé... et le tout sachant que le nombre d'onglets du fichier originel varie dans le temps, et que les noms des onglets aussi :)...

Voilà, j'ai à vrai dire un peu de mal, puisque ça dépasse beaucoup mes connaissances en vba...

Merci encore pour votre aide...

Nickos
 
Dernière édition:

gosselien

XLDnaute Barbatruc
Re : Repartir données filtrées de plusieurs onglets dans un nouveau classeur

re,

je ne saurai pas, par manque de temps cette semaine, m'occuper de ça, mais il devrait y avoir l'un ou l'autre grand chef ici pour s'en occuper.

Bonne suite, j'ai une semaine de ouf à remplir et bon courage!
Si malgré tout, je trouve un moment, je t'en ferai part ici.

ps: si tu filtres sur la même donnée de la colonne "C" de tous les onglets du premier fichier, pourquoi ne pas d'abord tout réunir sur le 1er onglet de ce fichier de base et puis splitter ?

P.
 
Dernière édition:

nickos2406

XLDnaute Junior
Re : Repartir données filtrées de plusieurs onglets dans un nouveau classeur

Bonsoir,

En effet, je dois conserver les données sur tous les onglets existants, et impossible de tout réunir sur un seul et unique onglet...

Merci de votre aide... je regarde toujours de mon coté, et j'ai des bribes de codes que j'agrège, sans pour autant que ce soit super efficace... Je butte toujours sur le va et vient entre le fichier source et un fichier créé lors de macro pas encore enregistré... Il ne le retrouve jamais...

Merci encore.
Nickos
 

nickos2406

XLDnaute Junior
Re : Repartir données filtrées de plusieurs onglets dans un nouveau classeur

Bonjour,

Je reviens à la charge, car je patine un peu (euphémisme...).

voilà, j'ai modifié la macro VBA, mais j'ai toujours des problèmes pour la faire fonctionner...

Pour récapituler les manips que je veux faire:
1-un fichier reçu régulièrement, avec un nombre d'onglets qui s'ajoute d'un envoi à l'autre
2-je veux découper chacun des onglets en fonction d'un filtre appliqué sur la même colonne pour tous les onglets
3-je veux conserver le nombre d'onglets dans les fichiers de destination

J'ai donc créé une macro qui permet:
- de filtrer une des colonnes (la D) pour récupérer les données de ce filtre,
- copier ces données filtrée de cet onglet dans un nouveau fichier,
- sauvegarder dans le même dossier le fichier ainsi créé.
- revenir dans le fichier originel, puis passer sur l'onglet suivant, filtrer sur le même critère et copier-coller dans le fichier nouvellement créé
- refaire la manip par autant de filtre qu'il trouve et autant d'onglets qu'il y a...

Malheureusement, déjà j'ai un bug dans l'écriture de la macro VBA, qui ne reconnait pas le "For" du "Next"...
Ensuite, j'espère avec cette macro que je pourrai parvenir à mes fins... Mais si vous avez des idées d'optimisation, je suis preneur...

Merci d'avance pour votre aide... Je ne suis pas novice en VBA, mais je suis loin (très très loin) d'être un expert :D

Nickos
 

Pièces jointes

  • TESTV2.xlsm
    85.7 KB · Affichages: 36
  • TESTV2.xlsm
    85.7 KB · Affichages: 47
  • TESTV2.xlsm
    85.7 KB · Affichages: 44

gosselien

XLDnaute Barbatruc
Re : Repartir données filtrées de plusieurs onglets dans un nouveau classeur

Bonjour,

je ne fais que passer mais sois plus clair sur ton filtre ... Tu le fais sur la colonne D mais sur quel critère ? les "1" ? les "2" ?
quand tu copies dans un nouveau classeur ton premier onglet de départ, est ce que tu copies le même filtre du 2e onglet de départ à la suite ou dans un second onglet du nouveau classeur ? onglet1 depart = onglet1 nouveau / onglet2 depart = onglet2 nouveau ou à la suite de onglet1 nouveau ?
Dans le premier post tu parlais de la colonne C et à présent c'est la colonne D !
Tu n'es pas clair dans ta demande, les gens n'ont pas de boule de cristal ici :)
 

nickos2406

XLDnaute Junior
Re : Repartir données filtrées de plusieurs onglets dans un nouveau classeur

bonjour,

En effet je filtre sous toutes les valeurs...
Donc, j'explicite... je filtre d'abord sur 1 dans le 1er onglet, puis dans le 2ème onglet etc... et chaque onglet filtré doit être transféré dans un nouveau classeur, que je nomme par le filtre "1", pour le filtre de la zone 1, puis 2 pour le filtre de la zone 2. Dans chacun des fichiers, je trouverai ainsi tous les onglets avec uniquement les lignes de la zone 1 pour le fichier 1, et les lignes de la zone 2 pour le fichier 2, etc...

Nickos
 

nickos2406

XLDnaute Junior
Re : Repartir données filtrées de plusieurs onglets dans un nouveau classeur

Bonjour,

J'avance à petits pas sur ma macro, et je butte désormais sur un problème...

Voilà la macro réalisée:
Sub Traitement()

Dim CollMag As New Collection
Dim Plage As Range
Dim Nom_fichier As String
Dim L As Long, L2 As Long, Lmax As Long
Dim WS_Count As Integer
Dim Onglet As Integer

' Application.ScreenUpdating = False

Nom_fichier = ActiveWorkbook.Name
WS_Count = ActiveWorkbook.Worksheets.Count

' Onglet = 1
' With Sheets(1) 'A adapter !

' Lmax = .Cells(Application.Rows.Count, 1).End(xlUp).Row

' On Error Resume Next
' For L = 2 To Lmax
' CollMag.Add .Cells(L, 4).text, .Cells(L, 4).text
' Next L
' On Error GoTo 0
'Création des classeurs
' Onglet = 1
For L = 1 To CollMag.Count 'avant 2
For Onglet = 1 To WS_Count
With Sheets(Onglet)

Lmax = .Cells(Application.Rows.Count, 1).End(xlUp).Row
For Lf = 2 To Lmax
CollMag.Add .Cells(Lf, 4).text, .Cells(Lf, 4).text
Next Lf

'Copie de l'onglet
.Copy
'Epurage des données par magasin
With ActiveSheet
Set Plage = .Rows(Application.Rows.Count)
For L2 = 2 To Lmax
If .Cells(L2, 4).text <> CollMag(L) Then
Set Plage = Union(Plage, .Rows(L2))
End If
Next L2
Plage.Delete
End With
With ActiveWindow
.SplitColumn = 0
.SplitRow = 1
End With
ActiveWindow.FreezePanes = True
Range("A1").Select
' Onglet = Onglet + 1
Next Onglet

'Sauvegarde classeur "magasin X"
With ActiveWorkbook
.SaveAs ThisWorkbook.Path & "\xxxxx" & CollMag(L) & ".xls"
.Close
End With
Next L

End With
Application.ScreenUpdating = True
MsgBox CollMag.Count & " classeurs créés"
End Sub


Il butte sur "Next Onglet", en indiquant que le For n'est pas identifié, alors que je l'ai inclus en début... Ensuite, lorsque j'aurai valider ce point, je voudrais lancer ma macro pour être sûr qu'elle suit le process que j'ai défini...

Mais déjà sauriez vous pourquoi la macro bute sur le "Next Onglet"?

Merci d'avance
Nickos
 

nickos2406

XLDnaute Junior
Re : Repartir données filtrées de plusieurs onglets dans un nouveau classeur

Rebonjour,

J'en suis à ma 3ième version, et je pense être près du bout de ce que je veux faire, mais je suis confronté à un nouveau soucis...

Je n'arrive pas à enregistrer tous mes fichiers...

Je joins le fichier test en exemple. Il arrive à créer mes fichiers, mais certains se ferme, d'autres non... Et il faut les enregistrer en plus... Tout en sachant que ce n'est certainement pas très bien optimisé :)...

Si quelqu'un peut m'aider?

Merci d'avance
Nickos
 

Pièces jointes

  • TESTV3.xlsm
    90.8 KB · Affichages: 38

Discussions similaires

Statistiques des forums

Discussions
312 108
Messages
2 085 363
Membres
102 874
dernier inscrit
Petro2611