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 !!