Raccourci formule =NumText

vorttex Messages postés 4 Statut Membre -  
vorttex Messages postés 4 Statut Membre -
Bonjour, TLM
Je souhaite avoir un racourci d'une formule excel sans l'ecrire ou passé par FONCTION
Exemple : =NumText(D3;"DA";"Cts";2;" et ") ===> (=ALT A)
Cordialement
A bientôt merci

2 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Bonjour,

    Toutes les explication ici (§ macros) :
    https://www.commentcamarche.net/contents/bureautique-871410403
    0
    1. vorttex Messages postés 4 Statut Membre
       
      merci beaucoup Patrice33740
      0
    2. vorttex Messages postés 4 Statut Membre
       
      jai cherche mais jai pas bien saisie SVP aidé moi je veux juste trouvé un raccourci pour exécute sans passé par fonction (f) jai la macro je veux juste un raccourci la voila :
      ( jai pas crée la macro juste copier coller )

      Option Explicit
      Function NumText(Nombre As Currency, Optional Unité As String, Optional no_chiffres As Integer, Optional SousUnité 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é & " " & 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
      0
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Bonjour,

    « Je souhaite avoir un racourci d'une formule » ???
    Il est difficile de deviner ce qui doit se passer lorsque tu appuies sur le raccourci (Crtl A) !!!!

    De plus, la syntaxe que tu souhaite, =NumText(D3;"DA";"Cts";2;" et "), ne correspond pas à la fonction ci-dessus, il y a un argument en trop et les autres ne sont pas dans le bon ordre.
    Je te propose d'utiliser =NumText(D3;"DA";2;"Cts")

    Dans tous les cas tu doit écrire une macro qui fait ce que tu désires et y affecter le raccourci.

    1ère supposition : Tu voudrais afficher le résultat de la fonction appliquée à la cellule active :
    Sub afficheNumText()
      MsgBox NumText(ActiveCell.Value, "DA", 2, "Cts")
    End Sub

    2ème supposition : Tu voudrais écrire le résultat de la fonction appliquée à la cellule active dans la cellule située à sa droite (i.e dans la colonne à coté) :
    Sub InsèreNumText()
      ActiveCell.Offset(0, 1).Value = NumText(ActiveCell.Value, "DA", 2, "Cts")
    End Sub
    

    PS : essaies d'être plus précis dans tes demandes.
    Cordialement
    Patrice
    0
    1. vorttex Messages postés 4 Statut Membre
       
      merci beaucoup Patrice33740
      0