Flux rss
Collection CommentCaMarche.net

VB6/VBA Transformer nombre en texte

Publié par lermite222, dernière mise à jour le vendredi 13 juin 2008 à 05:47:07 par lermite222

VB6/VBA Transformer nombre en texte




Introduction


La fonction peut transformer des nombres de l'unité jusqu'à 999 tera.
Prend en compte la syntaxe pour le français de France, de Belgique et de Suisse.




Préliminaires VB6

  • 1 forme
  • 1 label : name = label1
  • OptionButton1 : name = OptionButton1 : Index = 0 : caption = "France"
  • OptionButton1 : name = OptionButton1 : Index = 1 : caption = "Belgique"
  • OptionButton1 : name = OptionButton1 : Index = 2 : caption = "Suisse"
  • 1 texteBox : name = TextBox1 : Text = ""
  • 1 CommandButton : Name = Command1 : Caption = "Envoyer"
  • 1 module : name = Module1

Dans le module de la forme


Private Sub Command1_Click()
    Label1.Caption = LesMilliers(Text1.Text)
End Sub

Private Sub Form_Load()
    IniteVar
    Label1.Caption = LesMilliers("162")
End Sub

Private Sub Option1_Click(Index As Integer)
    pays = Index
    IniteVar
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 13 Then
        Label1.Caption = LesMilliers(Text1.Text)
    End If
End Sub

Dans Module1


Public pays As Integer
Private Unite(19) As String 
Private Dixaines(2 To 9) As String 

Public Sub IniteVar()
Unite(0) = ""
Unite(1) = "un "
Unite(2) = "deux "
Unite(3) = "trois "
Unite(4) = "quatre "
Unite(5) = "cinq "
Unite(6) = "six "
Unite(7) = "sept "
Unite(8) = "huit "
Unite(9) = "neuf "
Unite(10) = "dix "
Unite(11) = "onze "
Unite(12) = "douze "
Unite(13) = "treize "
Unite(14) = "quatorze "
Unite(15) = "quinze "
Unite(16) = "seize "
Unite(17) = "dix-sept "
Unite(18) = "dix-huit "
Unite(19) = "dix-neuf "

Dixaines(2) = "vingt "
Dixaines(3) = "trente "
Dixaines(4) = "quarante "
Dixaines(5) = "cinquante "
Dixaines(6) = "soixante "

Select Case pays
Case 0 'France
    Dixaines(7) = "soixante-dix "
    Dixaines(8) = "quatre-vingts "
    Dixaines(9) = "quatre-vingts-dix "
Case 1 'Belge
    Dixaines(7) = "septante "
    Dixaines(8) = "quatre-vingts "
    Dixaines(9) = "nonante "
Case 2 'suisse
    Dixaines(7) = "septante "
    Dixaines(8) = "huitante "
    Dixaines(9) = "nonante "
End Select

End Sub
Function LesMilliers(Nombre As String) As String

Dim i As Integer, e As Integer, Txt As String
Dim ValNb(6) As Double
Dim strResultat(6) As String
Dim strTemp As String
Dim a As String

    If Val(Nombre) < 1 Then LesMilliers = "Zéro": Exit Function
reco:
    If Len(Nombre) / 3 <> Int(Len(Nombre) / 3) Then
        Nombre = "0" & Nombre
        GoTo reco
    End If
    e = (Len(Nombre) / 3)
    For i = 0 To e - 1
        Txt = Mid(Nombre, (i * 3) + 1, 3)
        ValNb(i) = Val(Txt)
        strResultat(i) = Centaine(Txt)
    Next i
    i = 0
    If e > 4 Then 'terra
        strTemp = strResultat(0) & "terra "
        i = i + 1
    End If
    If e > 3 Then 'milliard
        strTemp = strTemp & strResultat(i) & "milliard "
        i = i + 1
    End If
    If e > 2 Then 'million
        If ValNb(i) = 1 Then a = "million " Else a = "millions "
        strTemp = strTemp & strResultat(i) & a
        i = i + 1

    End If
    If e > 1 Then 'millier
        If ValNb(i) = 1 Then
            strTemp = strTemp & "mille "
        Else
            strTemp = strTemp & strResultat(i) & "mille "
        End If
        i = i + 1
    End If
    If e > 0 Then 'les unités
        strTemp = strTemp & strResultat(i)
    Else 'pas de donnée
        strTemp = "Zéro"
    End If
    LesMilliers = strTemp
End Function

Private Function Centaine(Nombre As String) As String
Dim i As Integer, e(3) As Integer, a As String
Dim strBuff As String
    For i = 3 To 1 Step -1
        e(i) = Val(Mid(Nombre, i, 1))
    Next i
    e(0) = Val(Right(Nombre, 2))
    
    If e(3) = 1 Then strBuff = "et un " Else strBuff = Unite(e(3))
    
    If e(0) < 20 Then
        strBuff = Unite(e(0))
    ElseIf e(0) < 70 Or (e(0) > 79 And e(0) < 90) Or pays <> 0 Then
        strBuff = Dixaines(e(2)) & strBuff
    Else
        If e(0) > 89 Then i = 80 Else i = 60
        strBuff = Dixaines(e(2) - 1) & Unite(e(0) - i)
    End If
    
    'Centaine
    If e(1) = 1 Then
        strBuff = "Cent " & strBuff
    ElseIf e(1) >= 1 Then
        If e(0) = 0 Then a = "cents " Else a = "cent "
        strBuff = Unite(e(1)) & a & strBuff
    End If
    Centaine = strBuff
End Function
Transformer un textBox en date (VB 2008) (Résolu) Bonjour, Je voudrais savoir si qqun connaissait un moyen de transformer un textbox en une date reutilisable pour faire une comparaison avec la date du jour. je m'explique. j ai une base de donnée access, et une application que je viens de faire... www.commentcamarche.net/forum/affich-6481914-transformer-un-textbox-en-date-vb-2008
Transformer un texte sous excel (Résolu) Bonjour, j'ai des listes de noms écrites comme suit : " nom" "prénoms" "date de naissance" lieu" "adresse" comment transformer ce texte sous un fichier excel 2003. Merci de m'aider dorotheejeanne www.commentcamarche.net/forum/affich-4894752-transformer-un-texte-sous-excel
Requete sql: majuscule/minuscule (Résolu) Bonjour à tous, je débute une auto-formation de SQL. Dans mon bouquin il est indiqué que pour transformer du texte en majuscule et minuscule les fonctions sont respectivement MAJUSCULE() et MINUSCULE() sous access. Et................ça ne fonctionne... www.commentcamarche.net/forum/affich-1731000-requete-sql-majuscule-minuscule
[VB6/VBA] Le contrôle CommonDialog.Les différentes fonctions du contrôle CommonDialog J'ai laissé toutes les constantes disponibles bien qu'elles ne sont pas toutes utilisées dans les fonctions proposées, elles permettront d'éventuelles recherches sur d'autres données... www.commentcamarche.net/faq/sujet-12535-vb6-vba-le-controle-commondialog
Compter les mots dans un document (OpenOffice.org ou Word)Il est parfois utile de pouvoir compter le nombre de mots ou de caractères dans un document. Les deux principales suites bureautiques permettent de le faire très simplement : Avec Word Avec OpenOffice.org Avec Word Ouvrez votre document... www.commentcamarche.net/faq/sujet-8735-compter-les-mots-dans-un-document-openoffice-org-ou-word
[VBA] Ecrire/lire une série de TextBox en une seule SubEn VBA, les TextBox ne disposent pas d'un index et dans la plupart des cas, pour entrer du texte, on procède par.. TextBox1.Text = Cells(2,1).value TextBox2.Text = Cells(2,2).value TextBox3.Text = Cells(2,3).value Et l'inverse pour lire les... www.commentcamarche.net/faq/sujet-12862-vba-ecrire-lire-une-serie-de-textbox-en-une-seule-sub
Macro VBA double condition (Résolu)Bonjour, Dans un userform, j'ai associé des commandes : Voici la structure Numéro = textbox11 (à saisir) Désignation article = textbox12 (alimenté automatiquement par textbox11) Nombre = textbox 13 (à saisir) Prix = textbox14 (alimenté par... www.commentcamarche.net/forum/affich-2880678-macro-vba-double-condition
Transcription de format de texte (Résolu)Bonjour à tous qui pourrait me dire comment transformer un texte ecrit avec open office en .sxw en format .txt de word pour pouvoir les envoyer par email et être lisible par tous Merci d'avance JP www.commentcamarche.net/forum/affich-1171562-transcription-de-format-de-texte
Télécharger Tux PaintTuxPaint Tux Paint est un logiciel de dessin libre conçu pour les jeunes enfants âgés de 3 ans et plus. Il possède une interface simple avec un assistant animé dont l'objectif est d'encourager les enfants à créer des dessins. Tux Paint propose... www.commentcamarche.net/telecharger/telecharger-34055046-tux-paint
Télécharger TextWranglerTextWrangler est un éditeur de texte évolué. Il propose de nombreuses fonctionnalités : recherche/remplacement simple ou sur plusieurs fichiers utilisation d'expressions rationnelles (regexp) comparaisons de fichiers presse-papiers... www.commentcamarche.net/telecharger/telecharger-34055075-textwrangler