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 :
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 !
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.
Dans le classeur ventilation.xlsm, feuille Param, il faut inscrire en B1 le nom "excel-download.xlsx" puis enregistrer le classeur avant de lancer la macro.
J'ai fait quelques modifs pour mieux gérer les erreurs et forcer explicitement l'ouverture du classeur excel_download.xlsx dans le même répertoire que ventilation.xlsm.
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 !
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.
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,