Microsoft 365 date calendrier, obtenir année - mois et jour

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
Je vous souhaite un bon dimanche :)

Me revoilà en ce dimanche "pluvieux" en Tunisie.
Je bute sur une ch'tite formule de rien qui fonctionne pourtant habituellement :mad:

La date en "J" est générée par le calendrier et c'est certainement la raison du problème :
Pour info : la colonne O est juste un essai de formule. Elle n'existe pas dans mon fichier de travail.


En colonnes "P - Q - R", Je n'arrive pas à obtenir
Je n'arrive pas à obtenir : l'ANNEE de J - le MOIS de J - le JOUR de J
Auriez-vous la solution ?
Je joins le fichier test.
Avec mes remerciement,
Amicalement,
lionel,
 

Pièces jointes

  • tri_dates.xlsm
    104 KB · Affichages: 24
Dernière édition:
Solution
Bonjour Lionel, ChTi160, le fil,

jean marie a écrit : «
FormatDateUserSurCell est une constante qui a pour valeur False
soit
Private Const FormatDateUserSurCell = False

If FormatDateUserSurCell Then ActiveCell.NumberFormat = FormatDateUser$
»

comme FormatDateUserSurCell est toujours FAUX, le test sera toujours FAUX
➯ ce qui est à droite de Then ne sera JAMAIS exécuté ➯ on mettra JAMAIS
le format de nombre indiqué par FormatDateUser.

AUSSI, on POURRAIT très bien SUPPRIMER cette ligne de code INUTILE !

MAIS vous n'avez pas bien lu ce qui...

ChTi160

XLDnaute Barbatruc
Re
Je viens de regarder et je me demande pourquoi cette Ligne dans la procédure?
VB:
If FormatDateUserSurCell Then ActiveCell.NumberFormat = FormatDateUser$
alors que
VB:
FormatDateUserSurCell  est une constante  qui a pour valeur False
soit 
Private Const FormatDateUserSurCell = False
jean marie
 

ChTi160

XLDnaute Barbatruc
Re
Ok il y a surement une bonne raison ! Lol
Car lorsque l'on utilise un Calendrier fait pour un certain fichier son utilisation n'est pas forcément la même dans un autre fichier d'où ces différences (Ici , ca ne gène pas , mais ca ne te sert pas non plus Lol !
Bonne journée
jean marie
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Lionel, ChTi160, le fil,

jean marie a écrit : «
FormatDateUserSurCell est une constante qui a pour valeur False
soit
Private Const FormatDateUserSurCell = False

If FormatDateUserSurCell Then ActiveCell.NumberFormat = FormatDateUser$
»

comme FormatDateUserSurCell est toujours FAUX, le test sera toujours FAUX
➯ ce qui est à droite de Then ne sera JAMAIS exécuté ➯ on mettra JAMAIS
le format de nombre indiqué par FormatDateUser.

AUSSI, on POURRAIT très bien SUPPRIMER cette ligne de code INUTILE !

MAIS vous n'avez pas bien lu ce qui est en commentaire !

VB:
Private Const FormatDateUserSurCell = False  ' True)format ci-dessous appliqué sur cellule  False)Non
Private Const FormatDateUser$ = "dd/mm/yyyy" ' "dd/mm/yyyy" ou "yyyy/mm/dd"

ça indique clairement que SI le programmeur qui utilise le calendrier veut appliquer le format de date de FormatDateUser, il lui suffit de remplacer False par True :

Private Const FormatDateUserSurCell = True

dès lors, le test sera toujours VRAI ➯ ce qui est à droite de Then sera TOUJOURS exécuté ➯ le format de nombre indiqué par FormatDateUser sera TOUJOURS appliqué.

le format de nombre actuel de FormatDateUser est : "dd/mm/yyyy" ➯ jour/mois/an.
un Anglo-Saxon pourra mettre à la place : "yyyy/mm/dd" ➯ an/mois/jour​

(noter que l'année est sur 4 chiffres, ce qui est préférable pour distinguer les années 1900 des années 2000)



conclusion : la constante FormatDateUserSurCell joue le rôle d'un « interrupteur » :

* FALSEPAS d'application du format de date

* VRAIAPPLICATION du format de date

on peut dire aussi que FormatDateUserSurCell joue le rôle d'une option générale de la mini-application Calendrier, de la même façon qu'il y a des options générales pour Excel (ainsi que des options avancées) ; ceci à un détail près : les options d'Excel sont choisies par l'utilisateur ; alors qu'ici, c'est plus le programmeur que l'utilisateur qui choisit les options, puisque l'utilisateur n'est pas censé « trifouiller » dans le code VBA !

oh le vilain ! 😝 ne pas hésiter à prendre une règle pour lui taper sur les doigts s'il l'a quand même fait ! et toi, Lionel, si jamais tu surprends ta secrétaire à modifier ton code VBA, tu as mon autorisation pour l'envoyer au coin. 😜 avec un bonnet d'âne sur la tête, non mais ! 😁 ça lui apprendra, à farfouiller dans tes dossiers ! comment ? ta secrétaire est aussi ta femme ? aïe ! oui, effectivement, ça pose un problème : si tu la mets au coin, elle risque de se mettre en grève, et de ne plus vouloir te faire la popote ! malédiction ! quel cruel dilemme ! punir ou ne pas punir, telle est la question ! 😁 🤪 🤣



petite info complémentaire : dans la ligne du test, le signe dollar « $ » est inutile, même pour un très riche américain, et à fortiori pour Donald Trump et l'oncle Sam (Joe Biden) ! 😁 :rolleyes: on peut mettre :

If FormatDateUserSurCell Then ActiveCell.NumberFormat = FormatDateUser

remarque : j'ai reçu un twitt de Donald Trump qui me confirme qu'il est bien milliardaire, mais que ça l'empêche pas d'être l'objet d'une procédure d'impeachment (je traduis pour les lecteurs francophones : empêchement procédure de destitution).



voilà, ma thèse est terminée ! 😊 j'ai droit à quelle note ? avec une mention aussi ? 😜

et j'ai droit à un bonus, pour vous avoir évité de déranger Roland ?


je ne connais pas ce Roland ; j'espère que ce n'est pas le preux chevalier Roland, sinon, messires, allez vite lui prêter main forte ! je l'entend sonner de l'olifant (du cor), depuis l'arrière-garde ! le pauvre doit être en grand danger de succomber sous les attaques de ces traîtres de Sarrasins ! 😭

soan
 

Discussions similaires