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

Plusieurs chiffres

4 réponses
Avatar
machantal
Bonjour,

Dans Excel 2003, je dois diviser 2470170000467279 par 7. Sauf que lorsque
j'inscris la première valeur le chiffre 9 de la fin se transforme
automatiquement en 0...! Avez-vous une idée du pourquoi de la chose? Et ce
peu importe le format de cellule qui est utilisé?

Je vous remercie grandement :-))

4 réponses

Avatar
Daniel.C
Bonjour.
La précision de calcul est de 15 chiffres maximum. Regarde la rubrique
"limites" dans l'aide Excel.
Cordialement.
Daniel
"machantal" a écrit dans le message de
news:
Bonjour,

Dans Excel 2003, je dois diviser 2470170000467279 par 7. Sauf que lorsque
j'inscris la première valeur le chiffre 9 de la fin se transforme
automatiquement en 0...! Avez-vous une idée du pourquoi de la chose? Et ce
peu importe le format de cellule qui est utilisé?

Je vous remercie grandement :-))



Avatar
PMO
Bonjour,

Il s'agit d'un dépassement de capacité et Excel transforme
votre nombre pour pouvoir le traiter comme il peut.

Voici une piste pour contourner ce problème :

1) copiez le code ci-dessous dans un module standard

******************
Function DIVISEgdNombre _
(Tres_grand_nombre As String, Diviseur As Double) As String
Dim A$
Dim var
A$ = Tres_grand_nombre
If Left(A$, 1) <> "µ" Then
MsgBox prompt:="Veuillez mettre un µ devant le nombre" & _
vbCrLf & "Exemple : 2470170000467279 devient" & _
vbCrLf & " µ2470170000467279", _
Title:="Traitez le nombre comme du texte en mettant µ devant"
Exit Function
End If
A$ = Mid(Tres_grand_nombre, 2)
var = CDec(A$)
var = var / Diviseur
DIVISEgdNombre = "µ" & CStr(var)
End Function
******************

2) dans la cellule A1 (par exemple) tapez
µ2470170000467279
Faites bien attention de faire précéder le nombre d'un "µ"
Le nombre va être traité comme du texte
3) en B1 tapez votre diviseur 7
4) en C1 tapez la formule
=DIVISEgdNombre(A1;B1)
le résultat doit être
µ352881428638182.71428571428571

RESTRICTION
Tout est traitée comme du texte, aussi bien le nombre
lui-même que le résultat obtenu. On ne peut pas les
faire intervenir dans les fonctions numériques classiques.

Cordialement.

PMO
Patrick Morange
Avatar
Nicolas B.
Bonjour,

Faut quand même pas les nombres soient trop grand avec ta fonction :-)

Pour des entiers, on peut poser la division "à la main" :

Function Division(a As String, b As Long)

Dim r As Integer, q As String

While Len(a) > 0
r = 10 * r + Left(a, 1)
a = Mid(a, 2, Len(a))
q = q & Int(r / b)
r = r Mod b
Wend

MsgBox q & " ; " & r

End Function

Sub Test()
Division "2470170000467279", 7
End Sub

La fonction revoie le quotient et le reste.

Apparemment limité à des nombres à diviser de quelques 2 milliards de
chiffres d'après l'aide sur le type String. (J'ai pas vérifié que ça
marchait jusque là...)


Nicolas

Bonjour,

Il s'agit d'un dépassement de capacité et Excel transforme
votre nombre pour pouvoir le traiter comme il peut.

Voici une piste pour contourner ce problème :

1) copiez le code ci-dessous dans un module standard

******************
Function DIVISEgdNombre _
(Tres_grand_nombre As String, Diviseur As Double) As String
Dim A$
Dim var
A$ = Tres_grand_nombre
If Left(A$, 1) <> "µ" Then
MsgBox prompt:="Veuillez mettre un µ devant le nombre" & _
vbCrLf & "Exemple : 2470170000467279 devient" & _
vbCrLf & " µ2470170000467279", _
Title:="Traitez le nombre comme du texte en mettant µ devant"
Exit Function
End If
A$ = Mid(Tres_grand_nombre, 2)
var = CDec(A$)
var = var / Diviseur
DIVISEgdNombre = "µ" & CStr(var)
End Function
******************

2) dans la cellule A1 (par exemple) tapez
µ2470170000467279
Faites bien attention de faire précéder le nombre d'un "µ"
Le nombre va être traité comme du texte
3) en B1 tapez votre diviseur 7
4) en C1 tapez la formule
=DIVISEgdNombre(A1;B1)
le résultat doit être
µ352881428638182.71428571428571

RESTRICTION
Tout est traitée comme du texte, aussi bien le nombre
lui-même que le résultat obtenu. On ne peut pas les
faire intervenir dans les fonctions numériques classiques.

Cordialement.

PMO
Patrick Morange




Avatar
Péhemme
Bonsoir à tous,

La réponse de notre ami Patrick m'a intéressé.
Bien que cela ne serve certainement à rien, j'ai monté la petite machine à
calculer les grands nombres que vous trouverez chez :

http://www.cijoint.fr/cjlink.php?file=cj200805/cijTtOeJZw.xls.

La mise en forme des nombres est "bourrin", mais je n'ai pas su faire
autrement.
Merci de vos avis et conseils éclairés.
Michel



"PMO" <patrickPOINTmorangeAROBASElapostePOINTnet> a écrit dans le message de
news:
Bonjour,

Il s'agit d'un dépassement de capacité et Excel transforme
votre nombre pour pouvoir le traiter comme il peut.

Voici une piste pour contourner ce problème :

1) copiez le code ci-dessous dans un module standard

******************
Function DIVISEgdNombre _
(Tres_grand_nombre As String, Diviseur As Double) As String
Dim A$
Dim var
A$ = Tres_grand_nombre
If Left(A$, 1) <> "µ" Then
MsgBox prompt:="Veuillez mettre un µ devant le nombre" & _
vbCrLf & "Exemple : 2470170000467279 devient" & _
vbCrLf & " µ2470170000467279", _
Title:="Traitez le nombre comme du texte en mettant µ devant"
Exit Function
End If
A$ = Mid(Tres_grand_nombre, 2)
var = CDec(A$)
var = var / Diviseur
DIVISEgdNombre = "µ" & CStr(var)
End Function
******************

2) dans la cellule A1 (par exemple) tapez
µ2470170000467279
Faites bien attention de faire précéder le nombre d'un "µ"
Le nombre va être traité comme du texte
3) en B1 tapez votre diviseur 7
4) en C1 tapez la formule
=DIVISEgdNombre(A1;B1)
le résultat doit être
µ352881428638182.71428571428571

RESTRICTION
Tout est traitée comme du texte, aussi bien le nombre
lui-même que le résultat obtenu. On ne peut pas les
faire intervenir dans les fonctions numériques classiques.

Cordialement.

PMO
Patrick Morange