Autres Problème calendrier 1904 vs 1900

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour tout le monde,
Dans un post ( Lien ) Clairette utilise le calendrier 1904 pour travailler avec des heures négatives.
Au cours du travail effectué, une anomalie est apparue que je n'explique pas.
Si on est en calendrier 1904, le VBA copie une cellule qui contient une date dans une autre cellule, alors le transfert s'effectue avec un décalage de 4 ans dans le futur. ( comme l'équivalent d'une date 1904 réactualisée en 1900)
Si on transfert cette date moins 1462 jours, pour retrouver la bonne date, on se retrouve avec la date décalée de 4 ans en arrière.
Si on transfert cette date moins 0, alors la date passe de calendrier 1904 au calendrier 1900 et c'est correct.
Une PJ pour expliquer le problème.

Quel esprit brillant aurait une explication ?
 

Pièces jointes

  • Calendrier 1904 vs 1900.xlsm
    14.1 KB · Affichages: 11

sousou

XLDnaute Barbatruc
Bonjour sylvanu,
en testant, je me suis aperçu qu'il n’interprète pas d7 comme une date.
Pour cela tu mets par exemple 23/32/2021, et ca ne le gène pas dans la première partie du code.
si tu mets cdate(d7) ça semble fonctionner, mais ça n'explique pas tout!
Excel à parfois du mal avec les dates
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Apparemment c'est un problème archi connu (que personnellement je ne me souviens pas avoir jamais rencontré), puisque l'an dernier quelqu'un voulait utiliser des heures négatives et je lui avais simplement dit de passer en "calendrier à partir de 1904", mais quelqu'un avait alors aussitôt répondu que ça risquait fort de provoquer un décalage de 4 ans en cas de copier/coller d'une date par macro, et qu'il fallait donc bien faire attention et gérer cet éventuel souci dans la macro.

Après, je ne me suis jamais penché plus que ça sur la chose...


ps : je n'ai pas compris tout ce que tu as écrit, mais je trouve bizarre que ça décale de 4 ans dans le futur plutôt que 4 ans dans le passé.
Mais bon... c'est comme le changement d'heure été/hiver, je ne sais jamais dans quel sens ça marche... lol
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Marcel,
Je viens de trouver une astuce un peu tordue. Si je fait :
VB:
[D10] = [D7]
alors la date est décalée de 4 ans dans le futur, mais si je fait :
Code:
a = [D7]
[D10] = a
alors c'est correct. Il suffit de le savoir : un copié collé ne marche pas mais en passant par une variable tampon alors c'est correct.
Après, je ne me suis jamais penché plus que ça sur la chose...
Moi non plus, c'est quand le problème arrive qu'on s'y intéresse. 😂
 

TooFatBoy

XLDnaute Barbatruc
Il suffit de le savoir : un copié collé ne marche pas mais en passant par une variable tampon alors c'est correct
Ah ben ça c'est pas banal ! 😮 Et surtout, ce n'est pas vraiment logique au premier abord...

Bonne astuce simple.👍


[edit]
Job75 à dit:
j'ai utilisé .Value2 mais ça va bien aussi avec .Value
Ça explique pourquoi, comme je le disais plus haut, je n'ai jamais rencontré ce problème.
[/edit]
 
Dernière édition:

Discussions similaires