Bradley a un document qui a, dans le texte, de nombreux chiffres romains. Il a besoin d’un moyen simple de changer ces milliers de chiffres romains en chiffres arabes.

Ce ne sont pas des domaines de quelque nature que ce soit; ils sont simplement saisis dans le texte en chiffres romains. Il se demande s’il existe un moyen de les changer facilement en leurs équivalents arabes.

Malheureusement, il n’y a aucune fonction dans Word qui convertira les chiffres romains en arabe. Vous pouvez, si vous le souhaitez, simplement utiliser Rechercher et remplacer pour rechercher des chiffres romains, mais vous devrez effectuer une recherche individuelle pour chacun d’eux. Vous pouvez utiliser une recherche par caractères génériques pour rechercher un mot composé entièrement de chiffres romains majuscules, ce qui rendrait la recherche un peu plus facile. Tout ce que vous avez à faire est de rechercher «<[CDILMVX] \ {1,}>» (sans les guillemets) et de vous assurer que la case Utiliser les caractères génériques est cochée. Lorsque vous cliquez sur Suivant, le chiffre romain suivant est localisé et vous pouvez ensuite le modifier manuellement en son équivalent arabe.

Une autre façon d’essayer de faire la conversion consiste à utiliser une macro. Vous pouvez créer une macro qui examine chaque mot de votre document et essaie de déterminer si elle est susceptible d’être composée de chiffres romains. Cependant, vous pouvez obtenir des faux positifs, en particulier si votre document contient des acronymes qui pourraient être confondus avec des chiffres romains. (Par exemple, si vous utilisez l’acronyme CC pour carte de crédit, cela pourrait être considéré comme le chiffre romain pour 200.)

L’ensemble de macros suivant parcourra chacun des mots d’un document et si le mot ne contient que des chiffres romains (I, V, X, L, C, D et M), il est demandé à l’utilisateur si la macro doit convertir le chiffres.

Sub ConvertRoman()

Dim wrdX     Dim wrd As String     Dim tstSW As Boolean     Dim J As Long

For Each wrdX In ActiveDocument.Words         wrd = UCase(Trim(wrdX))

If wrd = "" Or wrd = "I" Or wrd = vbCr Then             tstSW = False         Else             tstSW = True         End If         For J = 1 To Len(wrd)

If InStr("MDCLXVI",Mid(wrd, J, 1)) = 0 Then                 tstSW = False                 Exit For             End If         Next J

If tstSW Then             wrdX.Select             Selection.MoveLeft unit:=wdCharacter, _               Count:=Len(wrdX) - Len(wrd), _               Extend:=wdExtend             J = MsgBox("Convert " & wrd & " to Arabic", vbYesNoCancel)

If J = vbCancel Then Exit Sub             If J = vbYes Then Selection.TypeText Text:=RomanToArabic(wrd)

End If     Next wrdX End Sub
Function RomanToArabic(Rm As String) As String     Dim J As Long     Dim ab As Long     Dim cc As Long     Dim dd As Long

ab = 0     Rm = Trim(Rm)

J = 1     Do         cc = GetValue(Mid(Rm, J, 1))

dd = GetValue(Mid(Rm, J + 1, 1))

If cc < dd Then             ab = ab + dd - cc             J = J + 1         Else             ab = ab + cc         End If         J = J + 1     Loop Until J >= Len(Rm)

If J = Len(Rm) Then         ab = ab + GetValue(Mid(Rm, J, 1))

End If     RomanToArabic = Trim(Str(ab))

End Function
Function GetValue(ss As String) As Long     Dim Cde()

Dim Cvalue()

Dim J As Long

Cde = Array("M", "D", "C", "L", "X", "V", "I")

Cvalue = Array(1000, 500, 100, 50, 10, 5, 1)



For J = 0 To 6         If ss = Cde(J) Then             GetValue = Cvalue(J)

Exit Function         End If     Next J     GetValue = 999999 End Function

Étant donné qu’un I majuscule est un mot très courant dans le texte, les macros ne s’arrêteront pas sur chacune d’elles pour déterminer si une conversion doit être effectuée.

Cependant, si le I majuscule fait partie d’un mot plus long composé uniquement de chiffres romains (tels que XLVII), il est considéré comme un candidat à la conversion. Les macros supposent également que tous vos chiffres romains sont en majuscules.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites WordTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / wordribbon-WordTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

WordTips est votre source pour une formation Microsoft Word rentable.

(Microsoft Word est le logiciel de traitement de texte le plus populaire au monde.) Cette astuce (5943) s’applique à Microsoft Word 2007, 2010, 2013, 2016, 2019 et Word dans Office 365. Vous pouvez trouver une version de cette astuce pour le ancienne interface de menu de Word ici:

link: / word-Changing_Roman_Numerals_to_Arabic [Changement des chiffres romains en arabe].