Date en lettres

emilepetit31 Messages postés 6 Date d'inscription vendredi 14 mai 2021 Statut Membre Dernière intervention 5 septembre 2024 - 31 juil. 2024 à 23:43
Whismeril Messages postés 19143 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 31 août 2024 - 26 août 2024 à 21:47

Bonjour, je n'arrive pas à afficher une date de naissance en toutes lettres dans Windev (25)

MaDate est une Date= SAI_Entrer_une_date
// Conversion de la date en lettres
DateEnLettres est une chaîne = DateVersJour(MaDate) + " " + DateVersMoisEnLettre(MaDate) + " " + MaDate.Année

// Affichage du résultat dans un champ de texte (par exemple TXT_Resultat)
LIB_resultat = DateEnLettres
Affiche 07 juin 2024 par exemple, ce n'est pas bon pour moi, j'aurais préféré "sept juin deux mille vingt quatre"

Merci de m'aider

3 réponses

Whismeril Messages postés 19143 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 31 août 2024 919
1 août 2024 à 07:29

Bonjour

je ne connais pas windev, mais comme ce langage est très peu utilisé, tu risques de ne jamais avoir de réponse d'un spécialiste.

On va donc jouer à la déduction 

MaDate est une Date= SAI_Entrer_une_date
// Conversion de la date en lettres
DateEnLettres est une chaîne = DateVersJour(MaDate) + " " + DateVersMoisEnLettre(MaDate) + " " + MaDate.Année

//Et ton exemple de résultat est 07 juin 2024.

Donc
    DateVersJour(MaDate //extrait le jour comme son nom l'indique
    DateVersMoisEnLettre(MaDate) // extrait le mois et le convertit en lettres, comme son nom l'indique aussi
    MaDate.Année // est la partie Année de la date, comme dans tous les types de datation que je connais donc un nombre, d'ailleurs je suppose que MaDate.Jour te donnerait 7.

En gros la fonction DateVersMoisEnLettre, extrait le mois (genre avec MaDate.Mois) puis fait correspondre le nom du mois par soit

  • Une cascade de if
  • Un switch case (je ne sais pas comment ça s'appelle en windev "selon le cas" peut-être)
  • Un tableau ou une liste dont l'indice est le numéro du mois

Tu pourrais faire pareil avec les jour, il n'y en aurait que 31 à écrire. Mais pour les années selon l'intervalle que tu as à couvrir ça peut vite être long.

La vraie solution est de trouver (ou d'écrire toi même) une fonction qui écrit un nombre en lettres. Et de l'appliquer au jour et à l'année.


0
emilepetit31 Messages postés 6 Date d'inscription vendredi 14 mai 2021 Statut Membre Dernière intervention 5 septembre 2024
26 août 2024 à 20:45

Bonjour 

Merci beaucoup mais j'ai pu solutionner avec ce code:

MaDate            est une Date        = ChaîneVersDate(LIB_Date_mariage1)
JOURS            est un entier        = MaDate..Jour
Mois            est entier            = MaDate..Mois
Années            est un entier        = MaDate..Année
JourEnText        est une chaîne        = NombreEnLettres(JOURS)
AnnéeEnText        est une chaîne        =  NombreEnLettres(Années)

LIB_Date_mariage1=  JourEnText + ...
    " " + DateVersMoisEnLettre(MaDate) +" " + AnnéeEnText

0
Whismeril Messages postés 19143 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 31 août 2024 919
26 août 2024 à 21:47

Tant mieux


0