[Excel] MaJ Caster en int (ex Manipulation liste déroulante)

Résolu/Fermé
Larkin - Modifié par Larkin le 22/09/2015 à 13:02
 Larkin - 22 sept. 2015 à 17:09
Bonjour à tous,

Je suis plus preneur d'une solution excel que vba, ou alors si il existe un moyen de lancer une macro automatiquement dès qu'une certaine cellule est modifiée...

J'ai une liste déroulante qui reprend le nom des semaine de l'année (de S1 à S53), et j'aimerais pouvoir selectionner la semaine précédant celle selectionné dans cette liste.

Imaginons que l'utilisateur choisisse "S37" dans la liste, je voudrais pouvoir trouver "S36" de façon automatique.



Merci à tous pour votre aide !


Maj :

Je m'en suis plus ou moi sorti via une fonction un peu dégueux dont je ne suis pas très fier (B2 est la cellule reprenant le jour de la semaine) :

=SI(NBCAR($B$2)>2 ; "S"&DROITE($B$2;2)-1;SI(DROITE($B$2;1)>2 ; "S"&DROITE($B$2;1)-1 ; SI(DROITE($B$2;1) = "2" ; "S"&DROITE($B$2;1)-1 ; SI(DROITE($B$2 ; 1) = "1" ; SI(MOD(DROITE(TEXTE(AUJOURDHUI();"aaaa") ; 2) ; 4)=0 ;"S53";"S52") ;""))))

La fonction avec le mod sert à savoir si l'année est bissextile (=savoir si l'on doit renvoyer S53 ou S52 dans le cas ou la semaine en cours est la S1)

le PB : SI(DROITE($B$2;1)>2 renvoit toujours Vrai, car la fonction renvoit un int, et la comparaison Int>2 renvoit toujours Vrai

Merci à ceux qui prendront le temps de se pencher sur le pb un peu délicat :)

A voir également:

2 réponses

Petit Up suite à l'Edit :)
0
Voici la solution finale :

=SI(NBCAR($B$3)>2;"S"&DROITE($B$3;2)-1;SI(CNUM(DROITE($B$3;1))>2;"S"&DROITE($B$3;1)-1;SI(DROITE($B$3;1)="2";"S"&DROITE($B$3;1)-1;SI(DROITE($B$3;1)="1";SI(MOD(DROITE(TEXTE(AUJOURDHUI();"aaaa");2);4)=0;"S53";"S52");""))))

ce code est censé fonctioner jusqu'à 2020 qui sera une année à 53 semaine non detecté par le code

Ciao
0