Bonne Nuit
@mastergate , bonne nuit les noctambules ...
La réponse à tes 2 questions est Oui, bonne nouvelle non ?
Ma démarche :
J'ai d'abord nommer tes boutons
Bt_Lundi,
Bt_Mardi, ... Ça se fait en sélectionnant le bouton et en tapant le nom dans la zone de nom, sans oublier de valider par ENTREE :
Regarde la pièce jointe 1127378
Ensuite j'ai créé une macro unique pour tous les jours, elle détecte le bouton qui l'a lancé grâce à la propriété
Application.Caller.
J'en déduis le jour à sauvegarder en supprimant le "Bt_".
Je calcule un
index correspondant au jour à l'aide de
WorksheetFunction.match (la fonction Excel
EQUIV)
Comme tu le faisais, je demande le N° de la semaine (j'ai bien compris que ce n'est pas forcément le N° de la semaine courante, sauf à faire le boulot le dimanche très tard).
J'ai repris le test de l'existence de la feuille correspondant au N°, si elle n'existe pas je la crée à l'aide d'une fonction (que j'appelle également pour la sauvegarde de la semaine complète).
Ce faisant je fige le N° de la semaine et l'année dans cette nouvelle feuille. (réponse à ta 2ème question)
Ensuite grâce à l'
index trouvé plus haut, je copie la bonne plage de données de la feuille Semaine vers la nouvelle feuille.
J'ai choisi de figer également l'année.
On peut le faire avec un copier-Collage spécial(Valeur) ;
Plage_Source.Copy
Plage_Cible.PasteSpecial xlPasteValues
Ou en utilisant la syntaxe
Plage_Cible.value=
Plage_Cible.value qui remplace les formules par les valeurs. (C'est ce que j'ai fait pour l'année.)
Par contre pour le N° de semaine, celui affiché, on l'a vue plus haut, n'est pas forcément celui de la semaine sauvegardée. Là je mets comme valeur le n° donné par l'utilisateur.
Voilà, j'ai restructuré le code, il n'y a plus que 4 modules dont celui de l'import de données auquel je n'ai pas touché.
Un module contient les constantes utilisées
- Nom de la feuille Semaine
- Préfixe pour les nouvelles feuille
- Adresse de la cellule qui contient l'année
- Adresse de la plage qui contient les données
Cette pratique facilite la maintenance (si tu insères des cellules qui décalent tes données, il n'y a qu'un seul endroit à modifier dans le code.
Un module qui contient les 2 sub pour enregistrer une semaine complète ou juste une journée.
Un module qui contient les fonctions.
A bientôt
Amicalement
Alain