élucubrations ??

Modeste geedee

XLDnaute Barbatruc
Bonsour®

en A1 une année documentée à l'aide d'un "SCROLL BAR formulaire (0- 4000)
en B1 un n° de mois (SB idem 1 à 12)
en C1 un n° de jour ( SB idem 1-31)
en E2 :
=date(A1;B1;C1)
format cellule jjjj j mmmm aaaa
en G2:
=année( E2)
en I2 :
=E2
format standard

1681768865830.png


pour les années > 1900 RAS cela parait éminemment correct et rationnel

par inadvertance je suis tombé sur ceci :
année choisie : 1789
1681769009773.png

je m'attendais à une erreur (date inférieure à 1900 !!! N° série <1 )
l'erreur est devenue flagrante : le 14 juillet 1789 était un mardi
de plus même l'année restituée est fausse (3689 ???)

en poursuivant mes tests :
année choisie : 3689
1681769561693.png

restitution identique à la précédente ... ???

le doute s'installe ...
la fonction DATE ne retournerait donc pas un numéro de série séquentiel !!! (+30 ans de pratique !!!)


Aucun VBA, pas de fonction perso, pas de calendrier 1904
Rassurez-moi ...
mon neurone qui fatigue ??
c'est l'âge ?
Alzheimer ?
un virus ???
autres investigations à venir :
utilisation de la fonction FORMAT en VBA
versus : Application.WorksheetFunction.TEXT(une date, format perso)
versus : Activecell.NumberFormat :=format perso
utilisation des préfixes LcIds dans les 3 cas ci-dessus
1681771759323.png
1681771942505.png
1681772220154.png

Summum :
un calendrier Lunaire natif dans EXCEL !!!
1681771687614.png

vos retours bienvenus ...
 

Cousinhub

XLDnaute Barbatruc
Hello,
Pour ajouter de l'eau à ton moulin (au risque de le noyer....)
En travaillant cette date avec Power Query, on obtient ceci :

1681814632310.png


Pour ce faire, j'ai mis la date en A2 (transformée automatiquement en texte), et charger dans PQ.
En transformant en Date, on voit donc que PQ l'accepte, et donne même le nom du jour...
En chargeant cette requête dans la feuille, on voit même la date inverse en nombre...
En ajoutant 400 ans (je sais que ce n'est pas forcément exact), si on fait 14/07/2189 ôté de 01/01/2300, on arrive à 40347
CQFD, on "peut" travailler les dates antérieures à 1900 avec PQ...
Fin de l'eau...
 

Pièces jointes

  • 1681814613971.png
    1681814613971.png
    61.5 KB · Affichages: 18

Cousinhub

XLDnaute Barbatruc
Re-,
Tu rigoles, tu rigoles... 🤣

1900 + 1789 = ????? (j'ai pas Excel pour calculer, scuse....)
Donc, j'opterai pour :
année choisie : 1789

je m'attendais à une erreur (date inférieure à 1900 !!! N° série <1 )
l'erreur est devenue flagrante : le 14 juillet 1789 était un mardi
de plus même l'année restituée est fausse (3689 ???)

en poursuivant mes tests :
année choisie : 3689

Aucun VBA, pas de fonction perso, pas de calendrier 1904
Rassurez-moi ...
mon neurone qui fatigue ??
c'est l'âge ?

Alzheimer ?
un virus ???
- Pénultième?
- ou plutôt "Antépénultième"....

♿
 

Modeste geedee

XLDnaute Barbatruc
Re-,
Tu rigoles, tu rigoles... 🤣
Non j'oublie ...
ayant été très très impliqué dans mon activité passée dans la prévention du Bug Y2k,
certaines entreprises ou sociétés de services n'ont appliqué que des rustines ou emplâtres
... Chrosoft fait partie de celles-ci ☹️

à propos de date EXCEL : Coexistence de 2 notions de numéro de série

en Formule feuille de calcul :
  • numéro de série > 0 à 2958465
  • samedi 0 janvier 1900 à 31 décembre 9999
  • le jour 1 est le dimanche 1er janvier 1900 (* cherchez l'erreur)
  • le jour 45035 est le mercredi 19 avril 2023
  • les noms de jou r associés inferieurs au 1 mars 1900 sont faux !!!! (61 jours)
  • il n'a pas existé de 29 février 1900 !!!
  • 1900 n'etait pas bissextile !!!
DATE (DATE, fonction) - Support Office Fonction Date(année, mois, jour)
Si l’année est comprise entre 0 (zéro) et 1899 (incluse), Excel ajoute cette valeur à 1900 pour calculer l’année. Par exemple, DATE(108;1;2) renvoie 2 janvier 2008 (1900+108).
Si l’année est comprise entre 1900 et 9999 (incluse), Excel utilise cette valeur. Par exemple, DATE(2008;1;2) renvoie 2 janvier 2008.
Si l’année est inférieure à 0, ou est égale ou supérieure à 10000, Excel renvoie la valeur d’erreur #NOMBRE!. renvoie la valeur d’erreur.

en function VBA :
numero de serie : -657434 à 2958465
dateserial(year, month,day)
  • Les années à deux chiffres pour l’argument year sont interprétées en fonction des paramètres définis par l’utilisateur sur son ordinateur.
  • year Entier.
  • Nombre compris entre 100 et 9999, inclus, ou une expression numérique.
  • les paramètres (year) par défaut, qui sont les valeurs comprises entre 0 et 29, inclus, sont interprétées en tant qu'années 2000 à 2029. Les valeurs par défaut comprises entre 30 et 99 sont interprétées en tant qu'années 1930 à 1999.
le jour 1 est le dimanche 31 décembre 1899 (* cherchez l'erreur)
le jour 45035 est le mercredi 19 avril 2023
le jour -40345 est le mardi 14 juillet 1789

l'utilisation concomitante de fonctions de calcul et de fonctions VBA est à manipuler avec circonspection
😰
à vos risques et périls:cool:
 

Cousinhub

XLDnaute Barbatruc
Hi,
Comme je l'ai précisé dans mon fil, PQ semble avoir bien mieux intégré les dates...
1681924483786.png

Donc, mon choix semble être fait...
Mais je précise que je n'ai jamais vraiment (même du tout...) travaillé sur ces dates
Bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 173
dernier inscrit
Cerba95