J'insère des données dans un document Word à partir d'une feuille de calcul Excel. Il y a une valeur qui a plus de 2 décimales. J'utilise le code suivant pour essayer de le convertir en deux décimales et le coller dans mon doc.
wdApp.Selection.GoTo what:=-1, Name:="Device_Avail"
''Referring to the total count column in the Device Availability worksheet.
Set devAvailRow = shDevAvail.Range("A:A").Find("Overall Totals:",
After:=Cells(1, 1), searchdirection:=xlPrevious)
''Actual piece to format value to 2 decimal places.
shDevAvail.Cells(devAvailRow.Row, 3).NumberFormat = "0.00"
devAvailPer = shDevAvail.Cells(devAvailRow.Row, 3)
wdApp.Selection.TypeText devAvailPer
La valeur n'affiche désormais que 2 décimales, mais la barre de formule en montre beaucoup plus.
Et ?Selection.Value
dans la fenêtre Immediate de la console VBA affiche également 89.43448051. Et cela est collé dans mon doc.
Pourquoi la fonction .NumberFormat
peut-elle la changer à 2 décimales? Que dois-je changer?
La propriété .NumberFormat
formate le texte rendu et ne modifie pas la valeur stockée dans la cellule. Vous pouvez utiliser 'Range.Text' pour obtenir la valeur affichée:
Range("A1") = 99.12345
Range("A1").NumberFormat = "0.00"
Debug.Print Range("A1").Text ' > 99.12
Debug.Print Range("A1").Value ' > 99.12345
Le format numérique modifie uniquement le format que vous voyez . La valeur sous-jacente est VARIANT malgré tout . Essayez d’utiliser la fonction ROUND () afin de vous assurer que vous n’importez que 2 décimales.