Aide creation macro avec filtre et split de fichier.

Soleil11

XLDnaute Occasionnel
Bonjour le Forum,

J'aimerais de l'aide pour créer un script vba qui me permette de faire les différentes étapes décrites ci-dessous. Mon problème c'est de pouvoir faire une avec boucle avec monfichier.xlsx qui normalement celui-ci ne doit pas changer.

J'ai monfichier.xlsx avec deux onglets, la premier onglet serait les données que je vais traité directement et son nom serait "Data" et mon deuxième onglet serait une pivot.

Voilà ce que la macro devrait faire sequentiellement :

1. Ouvrir monfichier.xlsx qui se trouve sur mon c:data
2. selectionner feuille 1 qui s'appelle "data"
3. selectionner column 8 et filter tous les teams : "teams1, teams2, team3 etc"
4. Enlever le filtre sur "teams1"
5. Eliminer les lignes avec le filtre "teams2, teams3 etc".
6. Selectionner 2ème onglet Pivot et faire un refresh
7. Sauver le fichier sous C:data/Output/teams1 avec le nom du "teams1".

reprendre le fichier monfichier.xlsx mon fichier de base faire une boucle avec team2:

8. Ouvrir de nouveau monfichier.xlsx qui se trouve sur mon c:data
9. selectionner feuille 1 qui s'appelle "data"
10. selectionner column 8 et filter sur tous les teams "teams1, teams2, team3 etc"
11. Enlever le filtre sur "teams2"
12. Eliminer les lignes avec le filtre "teams1, teams3 etc".
13. Selectionner 2ème onglet Pivot et faire un refresh
14. Sauver le fichier sous C:data/Output/teams2 avec le nom du "team2".

faire une boucle avec le team3

15. même étapes que les précédantes simplement prendre le prochain team3.

Pour être plus claire j'aimerais splitter mon fichier par le nbre teams qui existe dans monfichier.xlsx et le copier sur mon c:data\output. J'espère que mes explications sont suffisantes.

Merci de votre aide.

Soleil11:confused:
 

Soleil11

XLDnaute Occasionnel
Re : Aide creation macro avec filtre et split de fichier.

Oui bien sûre, j'ai enlever beaucoup de données afin de le rendre plus léger.
 

Pièces jointes

  • Monfichier.xlsm
    15.1 KB · Affichages: 30
  • Monfichier.xlsm
    15.1 KB · Affichages: 34
  • Monfichier.xlsm
    15.1 KB · Affichages: 37

Robert

XLDnaute Barbatruc
Repose en paix
Re : Aide creation macro avec filtre et split de fichier.

Bonjour Soleil, bonjour le forum,

En pièce jointe un fichier Macro.xlsm qui contient la macro avec le code ci-dessous :
Code:
Sub Macro1()
Dim C As Workbook
Dim O As Object
Dim DL As Long
Dim PL As Range
Dim D As Object
Dim CEL As Range
Dim TMP As Variant
Dim I As Long
Dim PLV As Range
Dim P As Object

Set C = Workbooks.Open("C:\Data\monfichier.xlsm")
Set O = C.Sheets("Data")
DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row
Set PL = O.Range("A2:A" & DL)
Set D = CreateObject("Scripting.Dictionary")
For Each CEL In PL
    D(CEL.Offset(0, 7).Value) = ""
Next CEL
TMP = D.keys
C.Close SaveChanges:=False
For I = 0 To UBound(TMP)
    Set C = Workbooks.Open("C:\Data\monfichier.xlsm")
    Set O = C.Sheets("Data")
    DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row
    Set PL = O.Range("A2:A" & DL)
    O.Range("A1").AutoFilter Field:=8, Criteria1:="<>" & TMP(I)
    Set PLV = PL.SpecialCells(xlCellTypeVisible)
    PLV.EntireRow.Delete
    O.Range("A1").AutoFilter
    Set P = Sheets("Pivot")
    With P.PivotTables("PivotTable1").PivotFields("Teams")
        For J = 1 To .PivotItems.Count
            If .PivotItems(J) <> .PivotItems(TMP(I)) Then .PivotItems(J).Visible = False
        Next J
    End With
    C.SaveAs ("C:data/Output/" & TMP(I) & ".xlsm")
    C.Close
Next I
End Sub

D'habitude je commente toujours mes codes pour aider l'utilisateur à les comprendre mais là je n'ai pas eu le temps. Si tu as besoin des commentaire je te les ferai avec plaisir...
Ouvre ce fichier et lance la macro...
Le fichier :
 

Pièces jointes

  • Macro.xlsm
    17.3 KB · Affichages: 28
  • Macro.xlsm
    17.3 KB · Affichages: 31
  • Macro.xlsm
    17.3 KB · Affichages: 32

Discussions similaires

Statistiques des forums

Discussions
312 079
Messages
2 085 131
Membres
102 789
dernier inscrit
raoul6768