Résolu XL 2016 Division fichier .xslx (multi-onglets) en plusieurs classeurs (multi-onglets)

gregomex

XLDnaute Nouveau
Bonjour à tous,

J'ai fait le tour des forum sans réellement trouver de solution à cette problématique : enregistrer un fichier "sous" en incluant tous les onglets du classeur et les formules associées (TCD principalement)

Je m'explique :
  • Mon fichier contient un onglet "bdd" et plusieurs onglets de TCD.
  • L'objectif est de créer autant de fichiers que de valeurs uniques trouvées en colonne "xxx" situées dans mon onglet "bdd" (filtrer en fonction de la valeur)
  • valeur = "bernard" --> filtrer sur "bernard" et enregistrer le fichier sous "bernard".xlsx.
Ce que j'ai pu voir jusqu'à présent, ce sont des macros qui effectivement créent des fichiers mais jamais ne reprennent les onglets attachés au fichier de base.
Ce que je cherche finalement, c'est :
  • créer un fichier en fonction de ces critères
  • actualiser les données
  • enregistrer le fichier
  • boucler
Merci par avance pour votre contribution !

Greg
 
Ce fil a été résolu! Aller à la solution…

gregomex

XLDnaute Nouveau
Bonjour Laurent,
Voici le modèle de fichier (anonymisé et simplifié).
Onglet BDD, colonne 1, les variables (A, B, D, E, G).
Le fichier contient également 2 autres onglets qui sont ni plus ni moins des TCD dépendants des valeurs de BDD.
Merci !
 

Fichiers joints

laurent3372

XLDnaute Occasionnel
Supporter XLD
Voici un fichier xlsm contenant une macro qui fait le travail demandé.
Il faut inscrire en B1 de la feuille Param le nom du fichier xlsx que l'on veut traiter.
Ce fichier doit contenir une feuille nommée "Bdd" contenant un tableau structuré dont on filtre les lignes en fonction du contenu de la 1ère colonne..
Tous les fichiers (y compris les fichiers générés) sont dans le même répertoire.
Les fichiers résultants sont écrasés à chaque exécution.
Je recommande de créer un repertoire propre à l'application où on retrouvera tous les fichiers.
 

Fichiers joints

gregomex

XLDnaute Nouveau
Bonjour Laurent,

Je viens de tester le script.
Ce que j'ai fait au préalable : créer un répertoire spécifique, dans lequel je loge :
  • le fichier ventilation.xlsm
  • le fichier excel_download.xlsx de ce ticket
    • ce dernier comprend bien un onglet "Bdd" dans lequel il existe une table structurée
Quand je déroule la macro,
  • l'étape Set wbBdd = openWb(fParam.[nombdd]) appelle la fonction associée.
  • La Msgbox est déclenchée : "Le fichier non trouvé".
  • La fonction est terminée; la procédure se poursuit et plante à : Set wsBdd = wbBdd.Worksheets("Bdd")
Aurais-je omis quelque chose ?

Merci !
 

gregomex

XLDnaute Nouveau
Bonjour Laurent,

J'ai repassé la macro pas à pas, tout à l'air de fonctionner sauf au moment de créer les fichiers ("A.xlsx", "B.xlsx", ect...).
La procédure ne plante pas mais la ligne 38 (wbBdd.SaveAs Filename:=rngE.Value, FileFormat:=xlWorkbookDefault) ne créé pas de fichier.
Merci à toi !
 

gregomex

XLDnaute Nouveau
Laurent, c'est parfait ! L'exécution peut être longue quand le nombre de lignes devient conséquent.
Un grand merci pour ton aide. Je vais garder la procédure précieusement.
 

gregomex

XLDnaute Nouveau
Bonjour,
Existe-t-il une possibilité d'améliorer le code pour traitement plus rapide ?
J'ai en effet un fichier de 20 000 lignes et le code vérifie ligne par ligne si la suppression doit avoir lieu.
J'ai fait tourner ma macro toute une nuit. (+- 7 heures d'exécution).
Merci,
 

gregomex

XLDnaute Nouveau
Re bonjour,

Effectivement, c'est beaucoup plus rapide.
Néanmoins, les fichiers créés ne contiennent plus les autres onglets sur lesquels il existe de multiples TCD dépendants de l'onglet Bdd.
Et c'est bien là la clef de voûte de mon besoin.
Merci à toi !
 

gregomex

XLDnaute Nouveau
Bonjour,
Le code s'arrête à pt.ChangePivotCache pcNew.
De plus, la source de données à laquelle font référence les tcd est la Bdd du fichier source et non la Bdd de chaque fichier nouvellement créé.
Merci !
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas