comment transformer un nbre d'une cellule en lettres dans 1 autre

Le
alma0217
comment fait-on en excel pour transformer un nombre en chiffres d'une cellule
et en lettres dans une autre cellule
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #20566471
Bonjour,

Une façon de faire :

Tu copies cette fonction dans un module standard de ton classeur:
Pour ce faire, tu ouvres l'éditeur de code Raccourci clavier : Alt + F11
Barre de menu / insertion / Module
et dans la feuille qui s'ajoute, tu insères la fonction suivante :

Plus bas, tu as un exemple comment appeler cette fonction en VBA ou
à partir d'une cellule du classeur.

'---------------------------------------------------
Function NumText(Nombre As Currency, Optional Unité As String, _
Optional SousUnité As String, Optional no_chiffres As Integer, _
Optional Separateur As String) As String
Dim PartieEntière As Currency, PartieDécimal As Currency
Dim TxtEntier As String, TxtDécimal As String
PartieEntière = Int(Nombre)
TxtEntier = NumTextEntier(PartieEntière)
If no_chiffres > 0 Then
PartieDécimal = (Nombre - PartieEntière) * 10 ^ no_chiffres
TxtDécimal = Format(PartieDécimal, String(no_chiffres, "0"))
End If
NumText = TxtEntier & Unité & Separateur & TxtDécimal & " " & SousUnité
End Function

Function NumTextEntier(ByVal Entier As Currency) As String
Dim no_Classe As Integer, Classe As Integer
If Entier = 0 Then
NumTextEntier = "Zéro "
Else
While Entier > 0
Classe = Entier - Int(Entier / 1000) * 1000
NumTextEntier = TxtClasse(Classe, no_Classe) & NumTextEntier
no_Classe = no_Classe + 1
Entier = Int(Entier / 1000)
Wend
End If
End Function

Function TxtClasse(Classe As Integer, no_Classe As Integer) As String
Dim Centaine As Integer, Dizaine As Integer, Unité As Integer, Unités2Chiffres As
Integer
Dim TxtCentaines As String, TxtDizaines As String, TxtUnités As String
Dim TClasses As Variant, Tdizaines As Variant, TUnités As Variant
TClasses = Array("", "mille", "million", "milliard", "billion")
Tdizaines = Array("", "", "vingt", "trente", "quarante", "cinquante", "soixante",
"soixante", "quatre-vingt", "quatre-vingt")
TUnités = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit",
"neuf", _
"dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept",
"dix-huit", "dix-neuf")
If Classe = 0 Then Exit Function
' Pas de un pour mille
If Classe = 1 And no_Classe = 1 Then
TxtClasse = "mille "
Exit Function
End If

Centaine = Classe 100
Unités2Chiffres = Classe Mod 100
Dizaine = Unités2Chiffres 10
Unité = Unités2Chiffres Mod 10
' Les centaines -----
If Centaine = 1 Then
TxtCentaines = "cent "
ElseIf Centaine > 1 Then
TxtCentaines = TUnités(Centaine) & " cent" & IIf(Unités2Chiffres > 0, " ", "s ")
End If
' Les dizaines ------
TxtDizaines = Tdizaines(Dizaine)
If Unité = 1 And Dizaine > 1 And Dizaine < 8 Then
TxtDizaines = TxtDizaines & "-et"
End If
If Dizaine = 1 Or Dizaine = 7 Or Dizaine = 9 Then
Unité = Unité + 10: Dizaine = 0
End If
TxtDizaines = TxtDizaines & IIf(Unités2Chiffres = 80, "s", "")
If Unités2Chiffres > 19 And Unité > 0 Then
TxtDizaines = TxtDizaines & "-"
ElseIf Dizaine > 0 Then
TxtDizaines = TxtDizaines & " "
End If
' Les unités -------- Espace si unité > 0
TxtUnités = TUnités(Unité) & IIf(Unité > 0, " ", "")
' La classe --------- un s sauf pour mille
TxtClasse = TClasses(no_Classe) & IIf(no_Classe > 1 And Classe > 1, "s", "") &
IIf(no_Classe > 0, " ", "")
' Résultat ----------
TxtClasse = TxtCentaines & TxtDizaines & TxtUnités & TxtClasse
End Function

'---------------------------------------------------
Sub Exemple()

' "deux cent cinquante-six mille trois cent vingt-quatre"
MsgBox NumText(256324)

'"quatre cent trente francs et 50 centimes"
MsgBox NumText(1430569125.5, "Dollars", "cents", 2, " et ")

'
MsgBox NumText(430.5, "francs", "centimes", 2, " et ")

'"quatre cent trente francs 50 centimes"
MsgBox NumText(430.5, "francs", "centimes", 2, " ")

End Sub
'---------------------------------------------------
Dans une cellule : =NumText(B2;;;2;"et ")



"alma0217" discussion :
comment fait-on en excel pour transformer un nombre en chiffres d'une cellule
et en lettres dans une autre cellule
Jacquouille
Le #20566461
En A1, taper "Bonjour"
En A2, taper "SVP"
En A3, taper "Merci"
Et puis seulement, consulter l'excellent site de Misange, Excelabo.net
Bonne soirée.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"alma0217" news:
comment fait-on en excel pour transformer un nombre en chiffres d'une
cellule
et en lettres dans une autre cellule



Tschuß
Le #20567291
On 16 nov, 17:10, "michdenis"
Bonjour,

Une façon de faire :

Tu copies cette fonction dans un module standard de ton classeur:
Pour ce faire, tu ouvres l'éditeur de code  Raccourci clavier : Alt + F11
Barre de menu / insertion / Module
et dans la feuille qui s'ajoute, tu insères la fonction suivante :

Plus bas, tu as un exemple comment appeler cette fonction en VBA ou
à partir d'une cellule du classeur.

'---------------------------------------------------
Function NumText(Nombre As Currency, Optional Unité As String, _
            Optional SousUnité As String, Optional no_chiff res As Integer, _
            Optional Separateur As String) As String
    Dim PartieEntière As Currency, PartieDécimal As Currency
    Dim TxtEntier As String, TxtDécimal As String
    PartieEntière = Int(Nombre)
    TxtEntier = NumTextEntier(PartieEntière)
    If no_chiffres > 0 Then
        PartieDécimal = (Nombre - PartieEntière) * 10 ^ no_ chiffres
        TxtDécimal = Format(PartieDécimal, String(no_chiffr es, "0"))
    End If
    NumText = TxtEntier & Unité & Separateur & TxtDécimal & " " & SousUnité
End Function

Function NumTextEntier(ByVal Entier As Currency) As String
    Dim no_Classe As Integer, Classe As Integer
    If Entier = 0 Then
        NumTextEntier = "Zéro "
    Else
        While Entier > 0
            Classe = Entier - Int(Entier / 1000) * 1000
            NumTextEntier = TxtClasse(Classe, no_Classe) & NumTextEntier
            no_Classe = no_Classe + 1
            Entier = Int(Entier / 1000)
        Wend
    End If
End Function

Function TxtClasse(Classe As Integer, no_Classe As Integer) As String
    Dim Centaine As Integer, Dizaine As Integer, Unité As Integer, Unités2Chiffres As
Integer
    Dim TxtCentaines As String, TxtDizaines As String, TxtUnités As String
    Dim TClasses As Variant, Tdizaines As Variant, TUnités As Varia nt
    TClasses = Array("", "mille", "million", "milliard", "billion")
    Tdizaines = Array("", "", "vingt", "trente", "quarante", "cinqu ante", "soixante",
"soixante", "quatre-vingt", "quatre-vingt")
    TUnités = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit",
"neuf", _
        "dix", "onze", "douze", "treize", "quatorze", "quinze", " seize", "dix-sept",
"dix-huit", "dix-neuf")
    If Classe = 0 Then Exit Function
    ' Pas de un pour mille
    If Classe = 1 And no_Classe = 1 Then
        TxtClasse = "mille "
        Exit Function
    End If

    Centaine = Classe 100
    Unités2Chiffres = Classe Mod 100
    Dizaine = Unités2Chiffres 10
    Unité = Unités2Chiffres Mod 10
    ' Les centaines -----
    If Centaine = 1 Then
        TxtCentaines = "cent "
    ElseIf Centaine > 1 Then
        TxtCentaines = TUnités(Centaine) & " cent" & IIf(Unit és2Chiffres > 0, " ", "s ")
    End If
    ' Les dizaines ------
    TxtDizaines = Tdizaines(Dizaine)
    If Unité = 1 And Dizaine > 1 And Dizaine < 8 Then
        TxtDizaines = TxtDizaines & "-et"
    End If
    If Dizaine = 1 Or Dizaine = 7 Or Dizaine = 9 Then
        Unité = Unité + 10: Dizaine = 0
    End If
    TxtDizaines = TxtDizaines & IIf(Unités2Chiffres = 80, "s", "")
    If Unités2Chiffres > 19 And Unité > 0 Then
        TxtDizaines = TxtDizaines & "-"
    ElseIf Dizaine > 0 Then
        TxtDizaines = TxtDizaines & " "
    End If
    ' Les unités -------- Espace si unité > 0
    TxtUnités = TUnités(Unité) & IIf(Unité > 0, " ", "")
    ' La classe --------- un s sauf pour mille
    TxtClasse = TClasses(no_Classe) & IIf(no_Classe > 1 And Classe > 1, "s", "") &
IIf(no_Classe > 0, " ", "")
    ' Résultat ----------
    TxtClasse = TxtCentaines & TxtDizaines & TxtUnités & TxtClass e
End Function

'---------------------------------------------------
Sub Exemple()

' "deux cent cinquante-six mille trois cent vingt-quatre"
MsgBox NumText(256324)

'"quatre cent trente francs et 50 centimes"
MsgBox NumText(1430569125.5, "Dollars", "cents", 2, " et ")

'
MsgBox NumText(430.5, "francs", "centimes", 2, " et ")

'"quatre cent trente francs 50 centimes"
MsgBox NumText(430.5, "francs", "centimes", 2, " ")

End Sub
'---------------------------------------------------
Dans une cellule :  =NumText(B2;;;2;"et ")

"alma0217" discussion :
comment fait-on en excel pour transformer un nombre en chiffres d'une cel lule
et en lettres dans une autre cellule



il y a aussi cette fonction dans l'utilitaire (gratuit) morefunc
(recherche ce mot sur google par ex) développé par Laurent Longre
michdenis
Le #20567281
| il y a aussi cette fonction dans l'utilitaire (gratuit) morefunc
| (recherche ce mot sur google par ex) développé par Laurent Longre

Bien sûr, c'est un utilitaire bien connu dans ce groupe de discussion !
La question : Doit-on installer cet utilitaire sur chaque ordinateur où le
fichier sera ouvert ?

Tu peux donner l'adresse de son site internet d'où il est possible de
télécharger l'utilitaire + apprendre un tas de choses intéressantes sur Excel
à la lecture.

http://xcell05.free.fr/
Publicité
Poster une réponse
Anonyme