OVH Cloud OVH Cloud

nombre entier

6 réponses
Avatar
Emcy
bonjour (et bonne année),

quel est la meilleur methode (en vba) pour determiner si un nombre est un
entier ?

6 réponses

Avatar
Modeste
Bonsour® Emcy avec ferveur ;o))) vous nous disiez :
quel est la meilleur methode (en vba) pour determiner si un nombre est un
entier ?
msgbox [A1]=INT([A1])

;o)))

--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr

Avatar
Emcy
merci mais ça ne marche pas totalement : pour de gros chiffre, ça ne marche
pas => que faire ?

Sub DetectionEntier()

Dim MaValeurStr As String
Dim MaValeur As Double

MaValeurStr = "123456789012345678901234567890"
MaValeur = MaValeurStr

If MaValeurStr <> MaValeur Then
MsgBox "String Différent de Double"
End If

If CStr(Int(MaValeur)) <> Valeur Then
MsgBox "Chiffre Non Entier"
End If

End Sub


"Modeste" a écrit dans le message de news:

Bonsour® Emcy avec ferveur ;o))) vous nous disiez :
quel est la meilleur methode (en vba) pour determiner si un nombre est un
entier ?
msgbox [A1]=INT([A1])

;o)))

--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr





Avatar
Francois
merci mais ça ne marche pas totalement : pour de gros chiffre, ça ne marche
pas => que faire ?




Bonjour,

Si, si ça marche !

Essaie cela
Sub DetectionEntier()
Dim MaValeur As Double
MaValeur = 1.23456789012346E+29
If Int(MaValeur) <> MaValeur Then
MsgBox "Chiffre Non Entier"
Else
MsgBox "Chiffre Entier"
End If

End Sub

Testé sous XL2000, pas de problème

--
François L

Avatar
Emcy
ça marche si tu utilise les puissances mais s'il y a trop de chiffres
significatifs, il y a des problémes : tu as essayé mon exemple ?
j'ai testé une autre methode mais je ne la trouve pas très "propre"
=> je mets mon chiffre dans une variable de type string puis je fais un
split avec comme delimiteur le "." : si ça me renvoie un tableau à une
dimension, alors c'est un entier....


"Francois" a écrit dans le message de news:

merci mais ça ne marche pas totalement : pour de gros chiffre, ça ne
marche pas => que faire ?




Bonjour,

Si, si ça marche !

Essaie cela
Sub DetectionEntier()
Dim MaValeur As Double
MaValeur = 1.23456789012346E+29
If Int(MaValeur) <> MaValeur Then
MsgBox "Chiffre Non Entier"
Else
MsgBox "Chiffre Entier"
End If

End Sub

Testé sous XL2000, pas de problème

--
François L



Avatar
Michel NOLF
As-tu essayé le type Currency. Cela permet plus de chiffre que le type Long
Integer. Au dela ???? !!!!!!
Amicalement Michel

"Emcy" a écrit dans le message de news:
%
ça marche si tu utilise les puissances mais s'il y a trop de chiffres
significatifs, il y a des problémes : tu as essayé mon exemple ?
j'ai testé une autre methode mais je ne la trouve pas très "propre"
=> je mets mon chiffre dans une variable de type string puis je fais un
split avec comme delimiteur le "." : si ça me renvoie un tableau à une
dimension, alors c'est un entier....


"Francois" a écrit dans le message de news:

merci mais ça ne marche pas totalement : pour de gros chiffre, ça ne
marche pas => que faire ?




Bonjour,

Si, si ça marche !

Essaie cela
Sub DetectionEntier()
Dim MaValeur As Double
MaValeur = 1.23456789012346E+29
If Int(MaValeur) <> MaValeur Then
MsgBox "Chiffre Non Entier"
Else
MsgBox "Chiffre Entier"
End If

End Sub

Testé sous XL2000, pas de problème

--
François L







Avatar
Emcy
bonjour,
le probleme ne vient pas du type double, ça vient de la fonction INT qui
tronque le resultat

"Michel NOLF" a écrit dans le message de
news: e%
As-tu essayé le type Currency. Cela permet plus de chiffre que le type
Long Integer. Au dela ???? !!!!!!
Amicalement Michel

"Emcy" a écrit dans le message de news:
%
ça marche si tu utilise les puissances mais s'il y a trop de chiffres
significatifs, il y a des problémes : tu as essayé mon exemple ?
j'ai testé une autre methode mais je ne la trouve pas très "propre"
=> je mets mon chiffre dans une variable de type string puis je fais un
split avec comme delimiteur le "." : si ça me renvoie un tableau à une
dimension, alors c'est un entier....


"Francois" a écrit dans le message de
news:
merci mais ça ne marche pas totalement : pour de gros chiffre, ça ne
marche pas => que faire ?




Bonjour,

Si, si ça marche !

Essaie cela
Sub DetectionEntier()
Dim MaValeur As Double
MaValeur = 1.23456789012346E+29
If Int(MaValeur) <> MaValeur Then
MsgBox "Chiffre Non Entier"
Else
MsgBox "Chiffre Entier"
End If

End Sub

Testé sous XL2000, pas de problème

--
François L