Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Formatage de nombre VBA

2 réponses
Avatar
Fred
Bonjour,

Sur un document dont le code est ci-dessou, je souhaiterais avoir le format
de nombre : 10,00 au lieu de 10,000 comme c'est le cas actuellement.
Pour moi, il me semble que la chaîne à modifier est : str_mot =
Mid(str_chaine, position_mot, InStr(position_mot, str_chaine, "*X*") -
position_mot)
Mais je sèche sur les options de format ainsi que sur l'endroit où les
positionner...

Si quelqu'un avait une petite idée cela m'arrangerait pas mal...
Merci.

FRED.





'Declare Function GetTickCount Lib "Kernel32" () As Long
Sub macro_item()
Dim str_item As String
Dim str_mot As String
Dim position_item As Double
Dim position_mot As Double
Dim champ As Field

For Each champ In ActiveDocument.Fields
If InStr(1, str_chaine, "ITEM") = 0 Then
Exit For
End If

If InStr(1, champ, "MACROBUTTON SAT") <> 0 Then
str_item = Trim(Mid(champ.Code, Len(" MACROBUTTON SAT ") + 1))
position_item = InStr(1, str_chaine, str_item)

If position_item > 0 Then
position_mot = InStr(position_item, str_chaine, "*X*") + 3
str_mot = Mid(str_chaine, position_mot, InStr(position_mot,
str_chaine, "*X*") - position_mot)
If str_mot = "" Then
champ.Delete
Else
champ.Select
Selection.Text = RTrim(LTrim(str_mot))

End If
str_chaine = Mid(str_chaine, 1, position_item - 1) &
Mid(str_chaine, position_mot + Len(str_mot) + 3)
End If
End If
Next

str_chaine = ""
Selection.GoTo what:=wdGoToLine, Which:=wdGoToFirst, Count:=1, Name:=""


' MsgBox "Temp execution" & GetTickCount - X & " ms"
End Sub

2 réponses

Avatar
Lotre
bonjour,

Euh ... ce n'est pas très clair tout ça...

1. Comme on ne sait pas trop ce que contiennent les valeurs lues
dans les champs ni ce que ce code veut en faire , il est délicat d'y
modifier qqchose...


2. Il existe en VBA une fonction prévue pour formater en texte
les nombres ou les dates :

Chaine = Format(ValeurNumérique,ChaineDuFormat)


Seul détail :
En VBA il faut utiliser le "." comme séparateur décimal
mais la chaine retournée utilisera les paramètres locaux



par exemple
MsgBox Format(12.5 / Sqr(2), "# ###.00")

affiche 8,84

et
MsgBox Format(12.5 / Sqr(2), "# ###.000")

affiche 8,839


Cordialement;

HB
Avatar
Fred
Bonjour,

Effectivement, ma demande n'était pas très claire.
Je l'ai précisée avec Géo sur le NG de Word.

Merci pour votre réponse.

FRED.

"Lotre" a écrit dans le message de
news:
bonjour,

Euh ... ce n'est pas très clair tout ça...

1. Comme on ne sait pas trop ce que contiennent les valeurs lues
dans les champs ni ce que ce code veut en faire , il est délicat d'y
modifier qqchose...


2. Il existe en VBA une fonction prévue pour formater en texte
les nombres ou les dates :

Chaine = Format(ValeurNumérique,ChaineDuFormat)


Seul détail :
En VBA il faut utiliser le "." comme séparateur décimal
mais la chaine retournée utilisera les paramètres locaux



par exemple
MsgBox Format(12.5 / Sqr(2), "# ###.00")

affiche 8,84

et
MsgBox Format(12.5 / Sqr(2), "# ###.000")

affiche 8,839


Cordialement;

HB