Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 fonction

  • Initiateur de la discussion Initiateur de la discussion khodr
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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

Dernière édition:
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é
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
182
  • Question Question
Microsoft 365 Power Query
Réponses
2
Affichages
209
Réponses
5
Affichages
193
Réponses
38
Affichages
938
Réponses
12
Affichages
377
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…