Je reformule mon problème :
J'ai une cellule contenant 0,0000001 et je souhaite obtenir 0.00000010 dans une autre, mais à la place j'obtiens 1e-007.0
Voici l'appel de ma fonction real :
$Book->Worksheets("param_SF08")->Cells(21,3)->{'value'} = &real($Book->Worksheets("SF08")->Cells(51,3)->{'Value'});
Mon programme est destiné à mettre à jour les cellules si jamais il y avait des modifications en amont, c'est pourquoi je dois utiliser ma fonction real au lieu de simplement corriger le problème à la main.
J'ai aussi essayé de recopier juste le contenu de ma cellule, sans utiliser la fonction, et en modifiant le format de la cellule (format nombre, 8 décimales) j'obtiens 0,00000010. Cela pourrait convenir, sauf que je veux un point à la place de la virgule, et cette méthode ne me parait pas non plus très rigoureuse.
La fonction codée à l'origine en Visual Basic, fonctionnelle, donne ça :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Function reel(nombre)
If Len(Abs(nombre) - Int(Abs(nombre))) > 1 Then
If Sgn(nombre) = -1 Then
reel = "-" & Int(Abs(nombre)) & "." & Right(Format(Abs(nombre) - Int(Abs(nombre)), "#0.00000000"), 8)
Else
reel = Int(Abs(nombre)) & "." & Right(Format(Abs(nombre) - Int(Abs(nombre)), "#0.00000000"), 8)
End If
Else
If Sgn(nombre) = -1 Then
reel = "-" & Int(Abs(nombre)) & ".0"
Else
reel = Int(Abs(nombre)) & ".0"
End If
End If
End Function |
J'ai toujours pas trouvé de solution rigoureuse à mon problème, et parmi les centaines de cellules utilisant ma fonction real, seule cette cellule me pose problème.
Merci pour votre aide!
Partager