Bonjour,
Le problème peut sembler assez simple, mais je bute sur le script à réaliser:
L'idée est de générer un calendrier annuel automatique (jusque là, je sais faire).
1) Il y a un onglet par mois baptisés du nom du mois.
2) Le premier jour du mois tombe sur la cellule B5. Les suivants étant incrémentés par
=DATE(ANNEE(B5);MOIS(B5);2) pour le deuxième jour puis =C5+1, D5=C5+1,...
3) Pour l'incrémentation par mois (par exemple février, j'ai mis =DATE(ANNEE(Janvier!$B$5);MOIS(Janvier!$B$5)+1;1)
4) Dans la ligne au dessus (ligne 4), j'affiche le jour sur trois lettre dont la première en majuscule par =NOMPROPRE(TEXTE(B5;"aaa"))
5) Dans la ligne encore au dessus (ligne 3), le n° de la semaine dans l'année par =CONCATENER(A43;" ";NO.SEMAINE(DATE(D3;1;1)))
(D3 étant une saisie manuelle de l'année souhaitée par l'utilisateur)
Tout cela fonctionne parfaitement et j'obtiens donc une grille mensuelle avec de haut en bas
- ligne 3 la semaine
- ligne 4 le jour de la semaine
- ligne 5 la date du jour (sans l'année)
C'est après que ça se "corse":
Dans la ligne 6 je veux afficher un "cycle" sur huit semaines du type 1/8 , 2/8 , 3/8, ... jusqu'à 8/8 puis recommencer à 1/8 ....
Sachant que, le 1er janvier primo, peut être n'importe quel jour de la semaine selon l'année et secundo a un cycle qui fait suite à l'année précédente et peut donc tout aussi bien être 1/8 que 5/8 ou même 8/8, il faut que les lundis qui suivent ce chiffre de cycle s'incrémentent seuls et ce, jusqu'à la fin de l'année.
j'avais d'abord tenté de le faire par calcul avec ceci:
=SI(C$5="";"";SI(JOURSEM(B$5;2)=7;SI(MAX($B$6:B$6)+1/8=8/8;REMPLACER(MAX($B$6:B$6)+1/8;1;3;"8/8");MAX($B$6:B$6)+1/8);""))
C'est très "barbare" et en plus je n'arrive pas à gérer le retour à 1/8 après le 8/8 car il "calcule" ça comme un nombre et traduit donc
4/8 par 0,5 et 8/8 par 1 (c'est mathématique)
Voilà, j'espère avoir été clair dans mes explications.
La solution passe peut-être par calcul ou par macro, mais j'avoue que c'est un casse tête pour moi.
Merci d'avance pour votre aide.