Appliquer une macro à plusieurs fichiers
Re
Pour le point 1 oui c'est ok.
Pour le reste, j'ai du mal m'exprimer car ce n'est pas tout à fait cela.
je vais essayer d'imager avec un exemple ( je te copie
J'ai 2 classeurs ( 1 et 2) avec les onglets suivants sur chacun d'eux :
Je souhaite créer des nouveaux onglets sur ces 2 classeurs à l'aide d'une macro, la création est en fait une "duplication" d'un onglet déjà existant et sur lequel nous modifierons ensuite quelques informations. (nom onglet et valeur cellule C3)
1 ) J'ouvre donc mon fichier "macro pour création d'onglet"
Deux hypothèses se présentes a moi :
1.a Pas de données pour créer l'onglet
1.b Données présentes pour créer le ou les onglets
Cela signifie que je souhaite la création de 2 nouveaux onglets "032025" et "062025" sur mes 2 classeurs ( Classeur 1 et Classeur)
2) Je lance donc la macro en appuyant sur le bouton
3)La macro doit donc effectuer les traitements ci-dessous :
3.a Pour la création des nouveaux onglets, je dois me servir d'un onglet déjà existant ( comme vu plus haut) donc je demande quel onglet servira de base de copie. D'où le message box : "Quel onglet voulez vous copier ?" pour notre exemple : je choisi 122021
si l'onglet choisi n'existe pas alors message a l'utilisateur et la macro passe a l'autre classeur etcc
3.b Puis ensuite les onglets se créent , se renomment (en fonction de la colonne onglet) et la valeur de la cellule C3 est modifiée (en fonction de la colonne Date arrêté), les fichiers sont fermés et enregistrés et ce pour les 2 classeurs.
Résultat final après traitement :
J'espère être plus claire, et si ce n'est pas le cas je m'en excuse d'avance.
J'ai imaginé cette façon de faire, mais peux être qu'il y a plus simple. (les comptables peuvent être compliqués parfois )
je te remercie une nouvelle fois
...
Ok donc, pour le 1er point !
Pour la suite...
- A supposer que les onglets à créer sont renseignés, tu veux créer dans "classeur 1", "classeur 2"... "classeur n" les onglets précisés ?
- A supposer que tu cliques sur le bouton [Créer l'onglet] (cf ton point 3), tu veux te servir d'un onglet déjà existant ! Mais dans quel classeur doit-il exister ?
Nous verrons la suite date arrêtée, plus tard... Soyons déjà certains que nous sommes d'accord sur ces 1er points !
- A supposer que les onglets à créer sont renseignés, tu veux créer dans "classeur 1", "classeur 2"... "classeur n" les onglets précisés ? OUI tout a fait
- A supposer que tu cliques sur le bouton [Créer l'onglet] (cf ton point 3), tu veux te servir d'un onglet déjà existant ! Mais dans quel classeur doit-il exister ? dans celui ou tu créer le nouveau cad "classeur 1", "classeur 2"... "classeur n"
...
Ok ! ?
Mais tu vas donc être potentiellement, recevoir la même question à chaque "demande de création d'onglets"... Bref !
Essayons d'avancer un peu... Cela implique donc :
- Cela implique donc :Que sur chaque "classeur 1", "classeur 2"... "classeur n" nous devons proposer la liste des onglets pour te permettre de choisir celui que tu veux prendre comme modèle à copier ?
- Que faisons-nous lors de cette copie ? En particulier si l'onglet contient déjà des données ? Effacer les anciennes données ou laisser tel quel ?
Mais tu vas donc être potentiellement, recevoir la même question à chaque "demande de création d'onglets"... oui je sais c’est pas terrible je l’avoue. Idée : est ce possible de choisir un nom d’onglet une fois pour tout les classeurs ?
- Cela implique donc :Que sur chaque "classeur 1", "classeur 2"... "classeur n" nous devons proposer la liste des onglets pour te permettre de choisir celui que tu veux prendre comme modèle à copier ? non pas besoin juste une boîte qui s’ouvre ou l’on viendra nous meme mettre le nom de l’onglet ( si possible)
- Que faisons-nous lors de cette copie ? En particulier si l'onglet contient déjà des données ? Effacer les anciennes données ou laisser tel
...
Mais tu vas donc être potentiellement, recevoir la même question à chaque "demande de création d'onglets"...
Tu réponds : oui je sais c’est pas terrible je l’avoue. Idée : est ce possible de choisir un nom d’onglet une fois pour tout les classeurs ?
La réponse à ta question n'est pas facile (pour un informaticien) !
- Oui ! Mais seulement si nous sommes certain d'avoir toujours "ce nom d'onglet" dans chaque classeur !
- Non ! Parce que si une seule fois dans l'un des classeurs "il" n'existe pas, il faut de toute façon, poser la question !
Pour la suite des choses, je ne comprends toujours pas, la logique de la démarche, du processus (long, très long) que tu envisages.
- Tu vas te retrouver très vite, avec des classeurs avec un tas d'onglets (4 trimestres/an = 4 onglets/an), l'année prochaine à nouveau (4/an) = 8, sans compter ceux qui existent déjà !
- Lorsque tu vas devoir "choisir" l'onglet à copier tu devras donc parcourir une liste d'onglets de plus en plus longue ! Et surtout ne pas te tromper d'onglet !
Quel est le but réel de ce que tu cherches à faire ?
- Préparer pour tes collègues, dans leurs propres (edit/
casseursclasseurs, pardon), les onglets pour l'année à venir ? - En fonction de quel(s) critère(s) tu décides la copie d'un onglet plutôt qu'un autre, éventuellement dans tel ou tel classeur ?
La réponse à ta question n'est pas facile (pour un informaticien) !
- Oui ! Mais seulement si nous sommes certain d'avoir toujours "ce nom d'onglet" dans chaque classeur !
- Non ! Parce que si une seule fois dans l'un des classeurs "il" n'existe pas, il faut de toute façon, poser la question !
c’est pour cela qu’au début je voulais choisir les classeurs sur lesquels appliquer la macro et non le faire sur tout les classeurs d’un dossier.
Sinon normalement (je sais cela ne veut pas dire oui) l’onglet existera toujours car je l’aurais créé si tout va bien 😉
- Préparer pour tes collègues, dans leurs propres casseurs, les onglets pour l'année à venir ? c’est tout à fait cela
- En fonction de quel(s) critère(s) tu décides la copie d'un onglet plutôt qu'un autre, éventuellement dans tel ou tel classeur ? Ma logique est d’effectuer les copiers à partir du dernier trimestre N-1 pour créer les trimestres N
...
Ok ! Donc j'avais bien compris !
Et ces classeurs "préparés" par toi. Tes collègues en font quoi ?
- Ils remplissent je suppose, les données comptables du trimestre que tu as préparé pour eux...
- Et après ? Je suppose que tu récupères (par un moyen ou un autre) l'ensemble des classeurs, de l'ensemble de tes collègues... pour faire une sorte de compilation, de récapitulation, de bilan ? (je ne sais comment vous nommez ça dans votre jargon, je ne suis qu'informaticien)
Est-ce qu'il ne serait pas plus logique :
- De créer dans chaque classeur de tes collègues, une macro qui permet de valider chaque trimestre ? De ce fait d'une part chaque collègue peut t'envoyer le trimestre courant, une fois toute saisie utile effectuée et d'autre part de préparer (lui-même individuellement) le prochain trimestre ?
- Ensuite et pour ne pas surcharger les classeurs de tes collègues, de "vider" de temps en temps (année par année, année -2) les onglets inutiles puisque de toute façon, TU as une copie (au cas où) ?
Pardon si j'insiste, mais je pense que la meilleure solution est là... d'autant plus qu'elle te libère du temps passé sur ton PC, à répondre à de bêtes questions de choix d'onglets ! Non ?
Et ces classeurs "préparés" par toi. Tes collègues en font quoi ?
- Ils remplissent je suppose, les données comptables du trimestre que tu as préparé pour eux... toujours exact
- Et après ? Je suppose que tu récupères (par un moyen ou un autre) l'ensemble des classeurs, de l'ensemble de tes collègues... pour faire une sorte de compilation, de récapitulation, de bilan ? (je ne sais comment vous nommez ça dans votre jargon, je ne suis qu'informaticien) ensuite nous sommes plusieurs à travailler avec ces classeurs ( moi je récupère certaines données en fonction du nom de l’onglet par une formule Excel sur un suivi d’activités ) d’autres collègues utilise un logiciel ou tous les classeurs sont importés automatiquement ( et je ne sais pas si le format xlsm serait possible)
Est-ce qu'il ne serait pas plus logique
- De créer dans chaque classeur de tes collègues, une macro qui permet de valider chaque trimestre ? De ce fait d'une part chaque collègue peut t'envoyer le trimestre courant, une fois toute saisie utile effectuée et d'autre part de préparer (lui-même individuellement) le prochain trimestre ? alors j’y avais pensé effectivement , mais il faut voir les impacts sur tous les autres tâches faites à partir de ses classeurs vu que l’extension ( si je ne dis pas de bêtise va passer de xslx à xlsm)
- Ensuite et pour ne pas surcharger les classeurs de tes collègues, de "vider" de temps en temps (année par année, année -2) les onglets inutiles puisque de toute façon, TU as une copie (au cas où) ? Non nous n’avons pas de copie mais pourquoi pas propose un purge d’onglets au bout de quelques années bonne idée
je reviens sur le :
En fait j'ai créer une petite macro que je peux copier sur chacun des classeurs et qui créer l'onglet voulu.
La je cherche un moyen de pouvoir effectuer le traitement sur plusieurs fichiers en mêmes temps, ce qui évite d'avoir a ouvrir chaque classeur un a un.
Quel est l'intérêt me diras tu , étant donné que l'utilisateur devra quoi qu'il arrive ouvrir le classeur pour mettre a jour les données ? c'est juste un "léger" gain de temps en LUI permettant ( s'il peux choisir uniquement ses propres classeurs) ou ME permettant ( si nous ne pouvons pas choisir les classeurs) de faire la manipulation en une seule fois.