Bonjour, Salut à tous !
J'ai eu l'impression que tu n'avais pas clairement capté mes propos d'hier... ce qui m'a paru se confirmer avec dans ton modèle de classeur des feuillets mois déjà préparés... Et comme je pense que c'est un aspect important j'y reviens donc.
Si tu as un classeur de travail qui fonctionne bien, réagit rapidement et de façon fluide aux diverses manipulations que tu peux lui faire subir, qui reste d'un poids raisonnable, etc., il ne t'échappera pas qu'en ventilant tes données selon les mois, tu multiplies par deux le poids des données de ton classeur en plus du poids de 12 feuilles supplémentaires... S'agissant d'un ajout superflu puisque tu as déjà ces données dans ta base, laquelle demeure indispensable pour tous travaux. Il convenait donc d'une part de pouvoir créer ces états mensuels (et pas la peine de prévoir des feuilles à l'avance, on peut les ajouter en même temps...), mais aussi de pouvoir les supprimer, ou le cas échéant de les exporter dans un autre classeur...
J'ai donc travaillé dans cette direction pour illustrer de façon plus concrète mon point de vue, qui se concrétise dans ton classeur par 4 boutons de commande :
- Générer mois : il m'a semblé qu'après tout il pouvait être utile de choisir un mois, plusieurs ou tous, donc cette commande lance un Userform dans lequel figurent des CheckBox pour chaque mois, tu peux donc les sélectionner individuellement, j'en ai ajouté 2 qui permettent de sélectionner et désélectionner globalement chacun un semestre, et un dernier qui fait la même chose pour l'année entière. Ces 3 derniers sont en triplestate, c'est à dire qu'il peuvent prendre une valeur ni vrai ni faux, ce qui se manifeste à l'apparence par une coche grisée, valeur prise quand des mois de leur groupe sont retenus mais pas tous.
Je dois avouer que je me suis un peu amusé sur ce point mais pas uniquement, la méthode de passage des infos repose sur un cumul de puissances de 2 successives : de 1 à 12 chaque mois est représenté par une valeur de 2^0 à 2^11 (soit de 1 à 2048), on cumule les valeurs des mois sélectionnés (quand un mois est sélectionnée, sa valeur est ajoutée à une variable, quand il est désélectionné elle en est retranchée). Je me demandais si au fil de manipulations successives générant chacune une opération d'ajout ou retrait, on aurait bien à la fin un résultat représentant la sélection faite... mais il semble bien que oui : on récupère le total à la fin sans aucun contrôle préalable, pour en extraire les mois sélectionnés (l'intérêt est que ce type d'extraction est particulièrement rapide).
On va donc parcourir en boucle la liste de mois et pour chaque mois sélectionné à extraire, une procédure d'extraction est lancée, qui extrait les lignes de la base où une intervention a eu lieu dans le mois considéré. Pour une telle opération, la question centrale étant toujours la rapidité (qu'on ne pourra évaluer qu'à partir de tests sur des bases un peu plus conséquentes que le modèle), ce qui peut prendre du temps est toujours la mise en forme finale (bordures, ligne d'en-tête, largeurs de colonne, formats de date), la création de la feuille, et le double-test sur les dates. On le compense par travail sur tableau, affectation de valeurs, mais aussi la technique de récupération des valeurs transférées par lignes entières dans un tableau unidimensionnel, qui s'affecte ensuite par une double transposition (je continue de roder cette méthode depuis que je l'ai comprise... )
Si tu veux générer des mois déjà présents, ça génèrerait normalement des erreurs, Excel ne supportant pas deux fois le même nom de feuille... On a donc prévu que pour chaque feuille générée la procédure qui génère supprime juste avant la feuille si elle existe déjà. (C'est une adaptation de la proc de suppression pour qu'elle puisse la lancer feuille par feuille, de façon à ne pas détruire les feuilles qu'elle ne crée pas à ce moment).
Elle lance aussi une porcédure de tri pour remettre les feuilles mensuelles dans l'ordre.
- Supprimer mois : c'est le 2e bouton... D'un seul coup d'un seul, on supprime toutes les feuilles ! J'y tenais parce que c'est important ! C'est bien de les créer mais ça peut être vital de pouvoir s'en débarrasser...
- Exporter mois : 3e bouton, si ça gêne de les supprimer brutalement, on les expédie dans un autre classeur... Il faudra sans doute ajuster le nom du classeur, etc. Mais pour le classeur origine, même résultat que pour la suppression puisqu'on les déplace.
- Tri mois : Comme en principe le tri est refait à chaque ajout on ne devrait pas avoir besoin de la lancer indépendamment, mais sait-on jamais !
Cordialement.