Plusieurs chiffres

Le
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 :-))
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #6563991
Bonjour.
La précision de calcul est de 15 chiffres maximum. Regarde la rubrique
"limites" dans l'aide Excel.
Cordialement.
Daniel
"machantal" 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 :-))



PMO
Le #6564421
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
Nicolas B.
Le #6564381
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




Péhemme
Le #6602981
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




Publicité
Poster une réponse
Anonyme