XL 2013 fonction

khodr

XLDnaute Nouveau
bonjour a tous le monde
je veux une fonction pour transforme l'heure en lettre par exp 11:30 onze heure et trente minute
 

Phil69970

XLDnaute Barbatruc
Bonjour à tous

@Gégé-45550 pour la Ferrari il ne me reste plus qu'une bleu avec des petits pois rouge.

Ah trop tard on me dit dans l'oreillette qu'elle vient de partir o_O

Autrement il me reste celle ci avec la bonne couleur ;)
1680939096633.png

Disponible le lendemain du 31/04/2034 à10h00 ;)

@Phil69970
 

Gégé-45550

XLDnaute Accro
bonjour a tous le monde
je veux une fonction pour transforme l'heure en lettre par exp 11:30 onze heure et trente minute
Bon allez, parce que tu as été sage !
[EDIT] 10:07 Fichier corrigé pour compter heure, minute et seconde comme "une" et non "un" plus suppression d'un espace inutile.
 

Pièces jointes

  • Format heure en texte.xlsm
    31.3 KB · Affichages: 9
Dernière édition:

Gégé-45550

XLDnaute Accro

patricktoulon

XLDnaute Barbatruc
bonjour à tous
comme d'habitude j'arrive comme un cheveux sur la soupe
pas mal ton adaptation @Gégé-45550
cela dit si on cherche on trouve
comme par exemple aller chercher le moteur de <<BASE>> de toutes mes fonction nombre en lettre

le reste après n’était qu'a faire une fonction intermediaire de rien du tout
je fait donc une fonction intermédiaire qui utilisera ma fonction nombre en lettre de base
VB:
Function Heure_En_Lettre(d)
    If d = "" Then Heure_En_Lettre = "": Exit Function
    Dim TbUnit, tbl, t$
    t = Hour(d) & "," & Minute(d) & "," & Second(d)
    TbUnit = Array(" Heure", " Minute", " Seconde")
    tbl = Split(NombreEnLettre(t), ",")
    For i = 0 To UBound(tbl)
        TbUnit(i) = TbUnit(i) & String(Abs(Trim(tbl(i)) <> "une" And Trim(tbl(i)) <> ""), "s") & " "
        If tbl(i) <> "" Then q = q & tbl(i) & TbUnit(i)
    Next
    Heure_En_Lettre = q
End Function

je met dans le module donc ma fonction de base
VB:
'***************************************************************************************************************************
'**********************************************************************************
' __        _____  ___   .  ___         _____  ___             ___
'|__|  /\     |   |   |  | |     | /      |   |   | |   | |   |   | |\  |
'|    /__\    |   |---   | |     |/\      |   |   | |   | |   |   | | \ |
'|   /    \   |   |   \  | |___  |  \     |   |___| |___| |__ |___| |  \|
'
'***********************************************************************************
'
'*************************************************
'*MOTEUR DE BASE POUR FONCTION NOMBRE EN LETTRE
'*NEW VERSION :3.1
'*DATE VERSION :04/2019
'*AUTEUR:patricktoulon
'*************************************************
'***************************************************************************************************************************
Function NombreEnLettre(chain As String, Optional decimale As Long = 0) As String
    Dim t, dixx&, dix&, cxx&, u&, uL
    uL = Array("", "une", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf", "cent ")
    Diz = Array("", "dix", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante-dix", "quatre-vingt", "quatre-vingt-dix", "cent")
    ms = Array("", " decilliard", " decillion", " nonilliard", " nonillion", " octillard", " octillion", " septilliard", " septillion", " sextilliard", " sextillion", " quintilliard ", " Quintillion", " quadrilliard", " quadrillion", " trilliard", " trillion", " Billiard", " billion", " milliard", " million", " mille", "")
    x = UBound(ms)
    t = Split(chain, ",")
    For c = 0 To UBound(t)
        chaine = "00" & t(c)
        If c = 1 And decimale <> 0 Then chaine = Right("00" & Left(Val(chaine), 2), 3)
        Z = 0
        For i = Len(chaine) - 2 To 1 Step -3
            Z = Z + 1: seg = Mid(chaine, i, 3)
            cxx = Left(seg, 1): dixx = Right(seg, 2): dix = Mid(seg, 2, 1): u = Right(seg, 1)
            If cxx = 1 Then cxx = 20: cc = "" Else cc = IIf(cxx > 0, "-cents ", "")
            If dix = 9 Or dix = 7 And u >= 1 Then dix = dix - 1: u = u + 10
            If dixx > 9 And dixx < 20 Then dix = 0: u = u + 10
            If dix >= 2 And dix <= 7 And (u = 1 Or u = 11) Then et = " et " Else et = IIf(dix <> 0, IIf(u <> 0, "-", " "), " ")
            If Val(seg) = 0 Then ms(UBound(ms) - Z + 1) = ""
            If Z = 2 And Val(seg) = 1 Then uL(1) = ""
            If c = 0 Then entier = Application.Trim(Application.Trim(uL(cxx) & cc & Diz(dix) & et & uL(u)) & " " & ms(x) & IIf(Val(seg) > 1 And Z > 2, "s", "") & " " & entier)
            uL(1) = "un"
            If c > 0 Then dec = dec & "," & Application.Trim(Application.Trim(uL(cxx) & cc & Diz(dix) & et & uL(u)))
            x = x - 1
        Next
    Next
    NombreEnLettre = Replace(entier & dec, " ", "-")
End Function

ben... il ne me reste plus qu'a mettre dans la cellule
=Heure_En_Lettre(A1)
et voilà terminé
demo.gif
 

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 325
Membres
111 102
dernier inscrit
driss touzi