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

Comparer 2 nombres à 18 chiffres

7 réponses
Avatar
Joël
Bonjour,

Dans VBA, 2 nombres étudiés sous forme de texte contenant 18 chiffres dont
les 2 derniers sont différents sont considérés comme égaux !

ex :
5434567890123456700 (N1 sous forme de texte)
et
5434567890123456799 (N2 sous forme de texte)

par quelle méthode pourrais-je déterminer le plus grand des 2 ?

La procédure suivante considère que N1 = N2, ce qui n'est pas vrai.

if cdbl(N1) >= cdbl(N2) then
msgbox erreur
endif

Voius remerciant de vos lumières...

Bien cordialement,

Joël GARBE
www.joelgarbe.fr

7 réponses

Avatar
Raymond [mvp]
Bonjour Joël.

tu dépasses les limites maxi d'un double :
aide access:
Les variables de type Double (à virgule flottante en double précision) sont
stockées sous la forme de nombres à virgule flottante de 64 bits (8 octets)
IEEE dont la valeur est comprise entre -1,79769313486231E308
et -4,94065645841247E-324 pour les nombres négatifs et entre
4,94065645841247E-324 et 1,79769313486231E308 pour les positifs. Le
caractère de déclaration de type Double est le signe #.

j'espère que ce n'est pas le solde de ton compte en suisse ? tu fais quoi
avec ce montant ?

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://www.mpfa.info/ pour débuter sur le forum.
Inscrivez-vous à la Newsletter TechNet.
http://www.microsoft.com/france/technet/presentation/flash/default.mspx


"Joël" a écrit dans le message de news:
443caba0$0$20182$
| Bonjour,
|
| Dans VBA, 2 nombres étudiés sous forme de texte contenant 18 chiffres dont
| les 2 derniers sont différents sont considérés comme égaux !
|
| ex :
| 5434567890123456700 (N1 sous forme de texte)
| et
| 5434567890123456799 (N2 sous forme de texte)
|
| par quelle méthode pourrais-je déterminer le plus grand des 2 ?
|
| La procédure suivante considère que N1 = N2, ce qui n'est pas vrai.
|
| if cdbl(N1) >= cdbl(N2) then
| msgbox erreur
| endif
|
| Voius remerciant de vos lumières...
|
| Bien cordialement,
|
| Joël GARBE
| www.joelgarbe.fr
|
|
Avatar
Joël
Merci Raymond pour cette réponse.

Pour information, il ne s'agit pas de montants (ce n'est pas le solde de mon
compte en Suisse hélas... quoi que), mais 2 numéros de téléphone au format
international que je dois comparer.

Dans la mesure où ces numéros me sont envoyés par l'application au format
texte, je me suis résigné à écrire une procédure comparant un à un les
différents chiffres composant ces numéros, me donnant le plus grand des
deux.

Encore merci, et bon courage...
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message
de news:
Bonjour Joël.

tu dépasses les limites maxi d'un double :
aide access:
Les variables de type Double (à virgule flottante en double précision)
sont
stockées sous la forme de nombres à virgule flottante de 64 bits (8
octets)
IEEE dont la valeur est comprise entre -1,79769313486231E308
et -4,94065645841247E-324 pour les nombres négatifs et entre
4,94065645841247E-324 et 1,79769313486231E308 pour les positifs. Le
caractère de déclaration de type Double est le signe #.

j'espère que ce n'est pas le solde de ton compte en suisse ? tu fais quoi
avec ce montant ?

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://www.mpfa.info/ pour débuter sur le forum.
Inscrivez-vous à la Newsletter TechNet.
http://www.microsoft.com/france/technet/presentation/flash/default.mspx


"Joël" a écrit dans le message de news:
443caba0$0$20182$
| Bonjour,
|
| Dans VBA, 2 nombres étudiés sous forme de texte contenant 18 chiffres
dont
| les 2 derniers sont différents sont considérés comme égaux !
|
| ex :
| 5434567890123456700 (N1 sous forme de texte)
| et
| 5434567890123456799 (N2 sous forme de texte)
|
| par quelle méthode pourrais-je déterminer le plus grand des 2 ?
|
| La procédure suivante considère que N1 = N2, ce qui n'est pas vrai.
|
| if cdbl(N1) >= cdbl(N2) then
| msgbox erreur
| endif
|
| Voius remerciant de vos lumières...
|
| Bien cordialement,
|
| Joël GARBE
| www.joelgarbe.fr
|
|





Avatar
Raymond [mvp]
pourquoi ne pas comparer les deux champ texte tout simplement ?

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://www.mpfa.info/ pour débuter sur le forum.
Inscrivez-vous à la Newsletter TechNet.
http://www.microsoft.com/france/technet/presentation/flash/default.mspx


"Joël" a écrit dans le message de news:
443cb1ed$0$14117$
| Merci Raymond pour cette réponse.
|
| Pour information, il ne s'agit pas de montants (ce n'est pas le solde de
mon
| compte en Suisse hélas... quoi que), mais 2 numéros de téléphone au format
| international que je dois comparer.
|
| Dans la mesure où ces numéros me sont envoyés par l'application au format
| texte, je me suis résigné à écrire une procédure comparant un à un les
| différents chiffres composant ces numéros, me donnant le plus grand des
| deux.
|
| Encore merci, et bon courage...
| --
|
| Bien cordialement,
|
| Joël GARBE
Avatar
Joël
Il me semble que cela pourrait poser un problème si les 2 champs ne sont pas
de la même taille

63 serait plus grand que 2345 ? par exemple !

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message
de news:
pourquoi ne pas comparer les deux champ texte tout simplement ?

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://www.mpfa.info/ pour débuter sur le forum.
Inscrivez-vous à la Newsletter TechNet.
http://www.microsoft.com/france/technet/presentation/flash/default.mspx


"Joël" a écrit dans le message de news:
443cb1ed$0$14117$
| Merci Raymond pour cette réponse.
|
| Pour information, il ne s'agit pas de montants (ce n'est pas le solde de
mon
| compte en Suisse hélas... quoi que), mais 2 numéros de téléphone au
format
| international que je dois comparer.
|
| Dans la mesure où ces numéros me sont envoyés par l'application au
format
| texte, je me suis résigné à écrire une procédure comparant un à un les
| différents chiffres composant ces numéros, me donnant le plus grand des
| deux.
|
| Encore merci, et bon courage...
| --
|
| Bien cordialement,
|
| Joël GARBE




Avatar
Raymond [mvp]
bien sûr mais tu peux compléter par des espaces devant:
If (Space(18 - Len(N1)) & N1) > (Space(18 - Len(N2)) & N2) Then

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://www.mpfa.info/ pour débuter sur le forum.
Inscrivez-vous à la Newsletter TechNet.
http://www.microsoft.com/france/technet/presentation/flash/default.mspx


"Joël" a écrit dans le message de news:
443cbbe3$0$21286$
| Il me semble que cela pourrait poser un problème si les 2 champs ne sont
pas
| de la même taille
|
| 63 serait plus grand que 2345 ? par exemple !
|
| --
|
| Bien cordialement,
|
| Joël GARBE
Avatar
Joël
Excellente idée !

Grand merci Raymond...

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message
de news: O1c9e%
bien sûr mais tu peux compléter par des espaces devant:
If (Space(18 - Len(N1)) & N1) > (Space(18 - Len(N2)) & N2) Then

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://www.mpfa.info/ pour débuter sur le forum.
Inscrivez-vous à la Newsletter TechNet.
http://www.microsoft.com/france/technet/presentation/flash/default.mspx


"Joël" a écrit dans le message de news:
443cbbe3$0$21286$
| Il me semble que cela pourrait poser un problème si les 2 champs ne sont
pas
| de la même taille
|
| 63 serait plus grand que 2345 ? par exemple !
|
| --
|
| Bien cordialement,
|
| Joël GARBE




Avatar
AV
Si les nombres sont dans une cellule au format texte, il n'y a pas de souci de
limitation du nombre de chiffres :

http://cjoint.com/?emtAAb3FgV

AV [mvp]