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.
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.
Dernière édition: