comment adapter un bout de code VB en formule Excel ?

Roland_M

XLDnaute Barbatruc
bien le bonsoir à tous

ne suis pas très bon en formule aussi je fais appel à vous !
comment adapter un code VB en formule Excel ?
ou encore comment faire pour afficher le 29'jour de Fevrier (année bissextile)

ceci suite à une remarque pertinante de Hoerwind qui a remarqué cette erreur dans un classeur avec des formules que j'ai eu sur ce forum.

actuellement il y a ceci ( le 28'jour est en D28 et dessous pour le 29'jour !?)
=SI(MOD(Annee;4)=0;D29+1;"")
c'est évidemment incomplet !

en VB je me sers de ceci qui est correcte:
If Annee Mod 4 = 0 And (Annee Mod 100 <> 0 Or Annee Mod 400 = 0) Then Fevrier = 29 Else Fevrier = 28

alors comment compléter ma formule pour avoir le test du genre
SI Annee Mod 4 = 0 And (Annee Mod 100 <> 0 Or Annee Mod 400 = 0);D29+1 sinon ;""

ou une autre si vous avez !?
un grand merci d'avance.
 

Roland_M

XLDnaute Barbatruc
Re : comment adapter un bout de code VB en formule Excel ?

Re : bonsoir à tous,

je m'étais absenté mais je vois que le sujet est revenu !
personnellement j'en ai conclu ceci (avec 28 février en D29)
=SI(JOUR(D29+1)=29;D29+1;"") . . . (le plus court)

J'espère ne pas m'être trompé dans les cellules en recopiant !?
Mais c'est le principe qu'il faut retenir.

Avec le 28 février en D29

Formule Excel avec cellules AU Format Date
Colonne Date en D30 =SI(JOUR(D29+1)=29;D29+1;"")
Colonne Jour en E30 =SI(JOUR(D29+1)=29;STXT("lmmjvSD";JOURSEM(D30;2);1);"")

Formule Excel SANS Format Date (formule de ROGER2327)
Colonne Date en D30 =SI((MOD(Annee;4)=0)*(MOD(Annee;100)<>0)+(MOD(Annee;400)=0);D29+1;"")
Colonne Jour en E30 =SI((MOD(Annee;4)=0)*(MOD(Annee;100)<>0)+(MOD(Annee;400)=0);STXT("lmmjvSD";JOURSEM(D30;2);1);"")

en VB
Dim D As Date: D = 28 & " " & 2 & " " & An
Fev = Day(D + 1): If Fev <> 29 Then Fev = 28
ou: If An Mod 4 = 0 And (An Mod 100 <> 0 Or An Mod 400 = 0) Then Fev = 29 Else Fev = 28
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : comment adapter un bout de code VB en formule Excel ?

Re...
(...)
Avec le 28 février en D29

Formule Excel avec cellules AU Format Date
Colonne Date en D30 =SI(JOUR(D29+1)=29;D29+1;"")
Colonne Jour en E30 =SI(JOUR(D29+1)=29;STXT("lmmjvSD";JOURSEM(D30;2);1);"")
(...)
Pour avoir une formule générale, je dirais plutôt :
Code:
[COLOR="DarkSlateGray"][B]=SI((JOUR(D29+1)=29)[COLOR="Sienna"]*(ANNEE(D29)<>1900)[/COLOR];D29+1;"")[/B][/COLOR]
et
Code:
[COLOR="DarkSlateGray"][B]=SI((JOUR(D29+1)=29)[COLOR="Sienna"]*(ANNEE(D29)<>1900)[/COLOR];STXT("lmmjvSD";JOURSEM(E29;2);1 );"")[/B][/COLOR]
ROGER2327
#2513
 

ROGER2327

XLDnaute Barbatruc
Re : comment adapter un bout de code VB en formule Excel ?

Bonjour à tous
Petite digression à propos du calendrier grégorien.

Ce calendrier est solaire et, comme tout calendrier solaire, il tente de coïncider au plus près avec l'année tropique dont la durée était de 365.242190517 jours à l'époque 2000.0 (i.e. au début de l'an 2000). Je précise l'époque car la durée de l'année tropique n'est pas constante : elle tend actuellement à diminuer d’environ 0,53 s par siècle, soit environ 0,000014510907137 seconde par jour.
La coïncidence n'est pas parfaite car l'année grégorienne moyenne dure 365,2425 jours. La différence avec l'année tropique fait qu'au rythme actuel le décalage atteint presque trois jours en dix mille ans. Une correction s'imposera donc un jour.
Comme le dit fort justement jeanpierre, l'évitement du bissexte des années 4000, 8000, 12000, ... prévu par la définition du calendrier grégorien pourrait être une solution.
Mais au dernière nouvelle, aucune décision officielle n'a été prise en ce sens, et la durée de l'année grégorienne moyenne reste scandaleusement fixée à 365,2425 jours.
Compte tenu qu'il n'y pas urgence, je m'en tiens à la règle officielle, au moins jusqu'en 3999.
Toutefois les autorités compétentes n'étant pas pressées de se saisir de cette grave question, la vigilance s'impose, et il est peut-être du devoir des citoyens de rappeler gentiment, mais fermement, les gouvernants à leur devoir de gouverner.
Car gouverner, c'est prévoir.
Faute de quoi nous risquons fort de célébrer la fête nationale en plein hiver dans 600:000:ans_!

Ça ferait désordre, non ?

ROGER2327
#2518
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 520
dernier inscrit
Azise