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
 

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 !
 

Pièces jointes

  • excel_download.xlsx
    88.5 KB · Affichages: 8

laurent3372

XLDnaute Impliqué
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.
 

Pièces jointes

  • ventilation.xlsm
    31.4 KB · Affichages: 7

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

Discussions similaires