user_mobilelogo

Dans un article précédent, j'explique comment convertir des chiffres en lettres via les champs.

Ce système est parfait pour un publipostage. En revanche, si vous voulez rapidement convertir, dans n'importe quel document, des montants € en chiffres vers des montants Euros en lettres, la méthode des champs est trop complexe et l'on ira plus vite à le faire manuellement.

Voici donc une macro à mettre dans le normal.dotm ou, de préférence, dans un complément, afin d'y avoir accès depuis n'importe quel document. Il faudra lui affecter un raccourci clavier ou bien l'installer sur la barre d'outils Accès rapide.

Cette macro utilise aussi les champs. En voici les limites :

  • Valable pour les montants inférieurs ou égaux à 999 999,99.
  • La macro ne traite que deux chiffres après la virgule ; au-delà, le montant sera arrondi.
  • Sélectionnez le chiffre à convertir avant de lancer la macro.
  • Les espaces dans le montant, insécables ou non, sont autorisées

 

Sub conversion_lettres()
'macro écrite par m@rina
Dim Nombre As String, entier As String, reste As String
Dim virgule As Byte

If IsNumeric(Selection) = False Then GoTo fin2
Nombre = Trim(Selection.Text)

If Val(Nombre) > 999999 Then GoTo fin
virgule = InStr(1, Nombre, ",")
    If virgule = 0 Then
        Selection.Fields.Add Range:=Selection.Range, _
          Type:=wdFieldEmpty, Text:="= " + Nombre + " \* CardText", _
          PreserveFormatting:=True
        Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
        Selection.Fields.Unlink
        Selection.MoveRight Unit:=wdWord, Count:=1
        Selection.TypeText Text:=" Euros"
    Else:
        entier = Int(Nombre)
        reste = Format(CDbl(Nombre) - entier, "0.00"* 100
        Selection.Fields.Add Range:=Selection.Range, _
          Type:=wdFieldEmpty, Text:="= " + entier + " \* CardText", _
          PreserveFormatting:=True
        Selection.TypeText Text:=" Euros et "
        Selection.Fields.Add Range:=Selection.Range, _
          Type:=wdFieldEmpty, Text:="= " + reste + " \* CardText", _
          PreserveFormatting:=True
          Selection.TypeText Text:=" centimes "
        Selection.MoveLeft Unit:=wdWord, Count:=5, Extend:=wdExtend
        Selection.Fields.Unlink
    End If
Exit Sub
fin:
   MsgBox "Le chiffre est trop grand, ne dépassez pas 999 999,99", vbOKOnly
   Exit Sub
fin2:
   MsgBox "Veuillez sélectionner un nombre.", vbOKOnly
End Sub

 

Statistiques

Aujourd'hui126
Hier2668
Cette semaine14510
Ce mois62507
Total depuis 200412420492

5
visiteurs actuellement en ligne

26 septembre 2020