Boucle macro

Bonjour à tous,

Etant débutant j’ai essayé de construire une boucle qui s’applique sur 2 TCD.

Je souhaite que ma macro sélectionne mes 2 TCD avec le même filtre et qu’elle enregistre ensuite les données dans un fichier individuel autant de fois qu’il y a de filtre (180 filtres dans le fichier).

J’ai construit ma macro (en bidouillant), elle fonctionne à première vue. Toutefois quand je regarde le total des fichiers crées j’en compte uniquement 166 alors que je devrais en avoir 180.

Je ne comprends pas mon erreur. J'aurai besoin d'une sacrée aide.

Ci-dessous ma macro :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Pt As PivotTable

If Target.Address <> "$B$2" Then Exit Sub

For Each Pt In PivotTables

If Pt.Name <> "Tableau croisé dynamique_0" Then

With Pt.PivotFields("Dpers")

' .ClearAllFilters

.CurrentPage = Target.Value

End With

End If

Next Pt

End Sub

Sub Création_Fichiers()

Dim TCD As PivotTable, TCD2 As PivotTable

Dim strFld As String

Dim Itm As PivotItem

Dim FeSyn As Worksheet

Dim ClNew As Workbook

Dim LienFichier As String

Application.ScreenUpdating = False

LienFichier = ThisWorkbook.Path & "\Pièces jointes\"

Set FeSyn = ThisWorkbook.Sheets("TCD")

Set TCD = FeSyn.PivotTables("Tableau croisé dynamique1")

Set TCD2 = FeSyn.PivotTables("Tableau croisé dynamique2")

strFld = "Dpers"

Application.DisplayAlerts = False

For Each Itm In TCD.PivotFields(strFld).PivotItems

On Error Resume Next

TCD.PivotFields(strFld).CurrentPage = Itm.Name

TCD2.PivotFields(strFld).CurrentPage = Itm.Name

If Err <> 0 Then GoTo Suivant

With ThisWorkbook.Sheets("Trame")

.Copy

Set ClNew = ActiveWorkbook

With ClNew

With .Sheets(1)

.Range("a1:w100").Copy

.Range("a1").PasteSpecial xlValues

.Range("a1").Select

End With

.SaveAs LienFichier & Itm.Name & " " & Cells(4, 2) & " Données OSR" & ".xlsx"

.Close False

End With

End With

Suivant:

Next Itm

Application.DisplayAlerts = True

End Sub

Merci beaucoup,

Cordialement,

bonjour

je déconseille formellement de créer plus de 3 ou 4 fichiers pour des applications très complexes (pour les simples, un seul suffit)

alors 180...

ça sert à quoi ?

quel est ton BUT ?

il est plus que probable qu'il n'y ait aucun besoin de macros

Bonjour jmd,

Désolé du retard...

Sur ma feuille excel, j'ai plusieurs tcd qui font appel à des fichiers excel différents. Tous ces fichiers ont un identifiant commun, la colonne "Dpers". On retrouve cette colonne donc dans l'ensemble des fichiers excel et par conséquent dans tous les tcd. J'ai mis donc en filtre de mes tcd les données "Dpers".

Je souhaite qu'excel fasse une boucle sur l'ensemble des filtres "Dpers", c'est-à-dire qu'il sélectionne le même "Dpers" sur tous les tcd de la feuille, qu'il fasse un copier/coller des données, qu'il enregistre les données, et ensuite qu'il passe à la prochaine données Dpers.

Le souci avec ma macro, c'est que c'est s'il y a une donnée "Dpers" en plus ou en moins dans l'une des bases, cela créé un décalage. Je pense qu'il faudrait plutôt faire appel à une plage de donnée dans laquelle j'indiquerai les Dpers à sélectionner. Qu'en pensez-vous ? Comment faire appel à une plage de donnée dans la boucle ?

Merci beaucoup, et n'hésitez pas si je ne suis pas clair,

re

quel est le BUT du sytème de fichiers ?

pourquoi tant de fichiers de départ ? leur origine ?

pourquoi tant de fichiers de sortie ? à qui seront-ils distribués ?

quel est le BUT du sytème de fichiers ?

le but est de compiler des informations provenant de plusieurs fichiers excel sur un seul

pourquoi tant de fichiers de départ ? leur origine ?

Il a plusieurs fichiers car se sont des données différentes que je reçois des équipes commerciales et que je dois analyser.

pourquoi tant de fichiers de sortie ? à qui seront-ils distribués ?

L'idée est d'ouvrir un fichier avec uniquement les données relatives au Dpers. Au lieu d'ouvrir les 5 fichiers excel pour récupérer les données, ma macro me permettrait d'avoir toutes ces données sur un un seul. Et en cas de souci, je pourrai envoyer ce fichier auprès des équipes commerciales pour analyse.

re

bon alors on va faire de l'Excel

fais ceci

https://www.microsoft.com/fr-FR/download/details.aspx?id=39379

https://www.youtube.com/watch?v=gwW2CDdvUUs

à la condition que les fichiers de départ aient la même structure (sinon ça reste possible mais c'est plus compliqué)

mets TOUS les fichiers de départ dans un unique dossier, disons "TOTO". Tu peux avoir des milliers de fichiers !

ouvre un nouveau classeur

Selon ton Excel, menu Données ou menu Power Query, Obtenir ou Récupérer, à partir d'un dossier (selon ton Excel, les mots seront différents)

navigue pour chercher TOTO

Charger

il concatène tous les fichiers sur une unique feuille

ensuite tu fais un TCD pour visualiser des synthèses ou des extractions

encore plus simple : parfois un simple tri sur la page suffit

avec un TCD, tu filtres selon le nom de la personne ou de l'équipe

as-tu 180 équipes ?

si tu en as 5, fais 5 fois un filtre et 5 fois des pdf ou des copier coller spécial valeur

le top pour analyser des milliers d'infos (je traite actuellement 30 fichiers et j'ai 300 000 lignes) c'est Power BI Desktop gratuit

note que si ton métier consiste à anymer une équipe commerciale ou à faire des bilans (toutes sortes de bilans, toutes sortes de datas de provenances diverses), tu DOIS apprendre Power Query et Power BI (ou un concurrent de Power BI mais ils sont payants)

si ton prof ne connaît pas, apprends-lui !

les programmes d'enseignement en France retardent de 5 ans. En informatique c'est trop vieux.

bon travail

Merci beaucoup. c'est top !!

Rechercher des sujets similaires à "boucle macro"