OVH Cloud OVH Cloud

Format feuille et format VBA

5 réponses
Avatar
garnote
Bonsoir,

J'entre, par exemple, 12,11 en A1 et 12,112 en A2.
En C1 : la formule = A1-B1. C1 affiche -0,002.
En C2 : la formule = TEXTE(C1;"Standard") & "x"
me permet d'afficher -0,002x.
Ainsi, le nombre précédent le x s'affiche "automatiquement"
avec le même nombre de décimales que le nombre affiché en C1.
Mais comment obtenir la même chose avec une fonction personnalisée ?

Function essai(p1 As Range, p2 As Range)
n1 = p1.Value
n2 = p2.Value
essai = (n1 - n2) & "x" ' Trop de décimales
'Est-ce possible sans passer par
'essai = Format(n1 - n2, "0.0000") & "x" ?
'Il faut que les décimales s'ajustent automatiquement,
'comme sur ma feuille de calcul.
End Function

Merci,
Serge

5 réponses

Avatar
garnote
Remplacer :
J'entre, par exemple, 12,11 en A1 et 12,112 en A2.
par :
J'entre, par exemple, 12,11 en A1 et 12,112 en B1.


Bonsoir,
J'entre, par exemple, 12,11 en A1 et 12,112 en A2.
En C1 : la formule = A1-B1. C1 affiche -0,002.
En C2 : la formule = TEXTE(C1;"Standard") & "x"
me permet d'afficher -0,002x.
Ainsi, le nombre précédent le x s'affiche "automatiquement"
avec le même nombre de décimales que le nombre affiché en C1.
Mais comment obtenir la même chose avec une fonction personnalisée ?

Function essai(p1 As Range, p2 As Range)
n1 = p1.Value
n2 = p2.Value
essai = (n1 - n2) & "x" ' Trop de décimales
'Est-ce possible sans passer par
'essai = Format(n1 - n2, "0.0000") & "x" ?
'Il faut que les décimales s'ajustent automatiquement,
'comme sur ma feuille de calcul.
End Function

Merci,
Serge



Avatar
LSteph
Bonsoir Serge,

Function essai(p1 As Range, p2 As Range)

essai = CStr(Round(p1 - p2, 3)) & "x"

End Function

'lSteph

Bonsoir,

J'entre, par exemple, 12,11 en A1 et 12,112 en A2.
En C1 : la formule = A1-B1. C1 affiche -0,002.
En C2 : la formule = TEXTE(C1;"Standard") & "x"
me permet d'afficher -0,002x.
Ainsi, le nombre précédent le x s'affiche "automatiquement"
avec le même nombre de décimales que le nombre affiché en C1.
Mais comment obtenir la même chose avec une fonction personnalisée ?

Function essai(p1 As Range, p2 As Range)
n1 = p1.Value
n2 = p2.Value
essai = (n1 - n2) & "x" ' Trop de décimales
'Est-ce possible sans passer par
'essai = Format(n1 - n2, "0.0000") & "x" ?
'Il faut que les décimales s'ajustent automatiquement,
'comme sur ma feuille de calcul.
End Function

Merci,
Serge




Avatar
garnote
Bonsoir Stéphane,

Yep!
Je suis enfin libéré de mon obsession !
Et je remplace le 3 par un 5 en avertissant
l'utilisateur qu'il doit entrer des nombres
contenant au maximum cinq décimales.
Je vais essayer d'intégrer ce truc à ma
fonction qui permet d'évaluer des expressions
comme :
2,2x-y+3,5x+54y-12,67+0,8z-4+z
Résultat :
5,7x+53y+1,8z-16,67
Défi lancé par un de mes ex-collègues ;-)

Function essai(p1 As Range, p2 As Range)
essai = CStr(Round(p1 - p2, 5)) & "x"
End Function

Serge


"LSteph" a écrit dans le message de news: OVjlx$
Bonsoir Serge,

Function essai(p1 As Range, p2 As Range)

essai = CStr(Round(p1 - p2, 3)) & "x"

End Function

'lSteph

Bonsoir,

J'entre, par exemple, 12,11 en A1 et 12,112 en A2.
En C1 : la formule = A1-B1. C1 affiche -0,002.
En C2 : la formule = TEXTE(C1;"Standard") & "x"
me permet d'afficher -0,002x.
Ainsi, le nombre précédent le x s'affiche "automatiquement"
avec le même nombre de décimales que le nombre affiché en C1.
Mais comment obtenir la même chose avec une fonction personnalisée ?

Function essai(p1 As Range, p2 As Range)
n1 = p1.Value
n2 = p2.Value
essai = (n1 - n2) & "x" ' Trop de décimales
'Est-ce possible sans passer par
'essai = Format(n1 - n2, "0.0000") & "x" ?
'Il faut que les décimales s'ajustent automatiquement,
'comme sur ma feuille de calcul.
End Function

Merci,
Serge




Avatar
LSteph
...en fait, même sans utitliser CStr cela fonctionne

@+

lSteph

Bonsoir Stéphane,

Yep!
Je suis enfin libéré de mon obsession !
Et je remplace le 3 par un 5 en avertissant
l'utilisateur qu'il doit entrer des nombres
contenant au maximum cinq décimales.
Je vais essayer d'intégrer ce truc à ma
fonction qui permet d'évaluer des expressions
comme :
2,2x-y+3,5x+54y-12,67+0,8z-4+z
Résultat :
5,7x+53y+1,8z-16,67
Défi lancé par un de mes ex-collègues ;-)

Function essai(p1 As Range, p2 As Range)
essai = CStr(Round(p1 - p2, 5)) & "x"
End Function

Serge


"LSteph" a écrit dans le message de news: OVjlx$
Bonsoir Serge,

Function essai(p1 As Range, p2 As Range)

essai = CStr(Round(p1 - p2, 3)) & "x"

End Function

'lSteph

Bonsoir,

J'entre, par exemple, 12,11 en A1 et 12,112 en A2.
En C1 : la formule = A1-B1. C1 affiche -0,002.
En C2 : la formule = TEXTE(C1;"Standard") & "x"
me permet d'afficher -0,002x.
Ainsi, le nombre précédent le x s'affiche "automatiquement"
avec le même nombre de décimales que le nombre affiché en C1.
Mais comment obtenir la même chose avec une fonction personnalisée ?

Function essai(p1 As Range, p2 As Range)
n1 = p1.Value
n2 = p2.Value
essai = (n1 - n2) & "x" ' Trop de décimales
'Est-ce possible sans passer par
'essai = Format(n1 - n2, "0.0000") & "x" ?
'Il faut que les décimales s'ajustent automatiquement,
'comme sur ma feuille de calcul.
End Function

Merci,
Serge








Avatar
garnote
J'ai réussi à intégrer ton truc dans ma fonction personnalisée
qui évalue des expressions symboliques sans me retrouver
avec des nombres contenant 1000 décimales ou des folies
comme 0,9876542312E-3x + .... ;-)

Urgent petite cervoise

Encore merci,
Serge


"LSteph" a écrit dans le message de news: %
...en fait, même sans utitliser CStr cela fonctionne

@+

lSteph

Bonsoir Stéphane,

Yep!
Je suis enfin libéré de mon obsession !
Et je remplace le 3 par un 5 en avertissant
l'utilisateur qu'il doit entrer des nombres
contenant au maximum cinq décimales.
Je vais essayer d'intégrer ce truc à ma
fonction qui permet d'évaluer des expressions
comme :
2,2x-y+3,5x+54y-12,67+0,8z-4+z
Résultat :
5,7x+53y+1,8z-16,67
Défi lancé par un de mes ex-collègues ;-)

Function essai(p1 As Range, p2 As Range)
essai = CStr(Round(p1 - p2, 5)) & "x"
End Function

Serge


"LSteph" a écrit dans le message de news: OVjlx$
Bonsoir Serge,

Function essai(p1 As Range, p2 As Range)

essai = CStr(Round(p1 - p2, 3)) & "x"

End Function

'lSteph

Bonsoir,

J'entre, par exemple, 12,11 en A1 et 12,112 en A2.
En C1 : la formule = A1-B1. C1 affiche -0,002.
En C2 : la formule = TEXTE(C1;"Standard") & "x"
me permet d'afficher -0,002x.
Ainsi, le nombre précédent le x s'affiche "automatiquement"
avec le même nombre de décimales que le nombre affiché en C1.
Mais comment obtenir la même chose avec une fonction personnalisée ?

Function essai(p1 As Range, p2 As Range)
n1 = p1.Value
n2 = p2.Value
essai = (n1 - n2) & "x" ' Trop de décimales
'Est-ce possible sans passer par
'essai = Format(n1 - n2, "0.0000") & "x" ?
'Il faut que les décimales s'ajustent automatiquement,
'comme sur ma feuille de calcul.
End Function

Merci,
Serge