J'ai un petit souci avec un petit d=E9veloppement vb
...
Dim vTest1 as variant
vTest1 =3D 58/(60*60*24)
...
Et l=E0 =E7a coince. En revanche, si j'effectue 58/86400, tout=20
se passe bien. Y'a-t-il une bonne =E2me pour m'expliquer ce=20
qui ne va pas, car l=E0 je dois avouer, je s=E8che.
Merci de votre pr=E9cieuse aide et d'ores et d=E9j=E0 bon week-
end.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
ng
Salut,
En passant par du Currency :
Dim vTest1 As Variant vTest1 = 58 / (60@ * 60@ * 24@) Debug.Print vTest1
Mais il est préférable de typer ta variable :
Dim lTest1 As Long lTest1 = 58 / (60@ * 60@ * 24@) Debug.Print lTest1
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/ http://apisvb.europe.webmatrixhosting.net/
Laurent a écrit :
Bonjour à tous,
J'ai un petit souci avec un petit développement vb
...
Dim vTest1 as variant
vTest1 = 58/(60*60*24)
...
Et là ça coince. En revanche, si j'effectue 58/86400, tout se passe bien. Y'a-t-il une bonne âme pour m'expliquer ce qui ne va pas, car là je dois avouer, je sèche.
Merci de votre précieuse aide et d'ores et déjà bon week- end.
Laurent
Salut,
En passant par du Currency :
Dim vTest1 As Variant
vTest1 = 58 / (60@ * 60@ * 24@)
Debug.Print vTest1
Mais il est préférable de typer ta variable :
Dim lTest1 As Long
lTest1 = 58 / (60@ * 60@ * 24@)
Debug.Print lTest1
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/
Laurent <anonymous@discussions.microsoft.com> a écrit :
Bonjour à tous,
J'ai un petit souci avec un petit développement vb
...
Dim vTest1 as variant
vTest1 = 58/(60*60*24)
...
Et là ça coince. En revanche, si j'effectue 58/86400, tout
se passe bien. Y'a-t-il une bonne âme pour m'expliquer ce
qui ne va pas, car là je dois avouer, je sèche.
Merci de votre précieuse aide et d'ores et déjà bon week-
end.
Dim vTest1 As Variant vTest1 = 58 / (60@ * 60@ * 24@) Debug.Print vTest1
Mais il est préférable de typer ta variable :
Dim lTest1 As Long lTest1 = 58 / (60@ * 60@ * 24@) Debug.Print lTest1
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/ http://apisvb.europe.webmatrixhosting.net/
Laurent a écrit :
Bonjour à tous,
J'ai un petit souci avec un petit développement vb
...
Dim vTest1 as variant
vTest1 = 58/(60*60*24)
...
Et là ça coince. En revanche, si j'effectue 58/86400, tout se passe bien. Y'a-t-il une bonne âme pour m'expliquer ce qui ne va pas, car là je dois avouer, je sèche.
Merci de votre précieuse aide et d'ores et déjà bon week- end.
Laurent
Patrice Henrio
Je propose mon explication pour savoir si elle est "juste" Lorsque l'on ne type pas une variable VB va essayer de la typer au mieux : dans notre cas 58/86400 86400 est un single car > à 32767 et le résultat 58/86400 est bien single par contre 58/60*60*24 va peut-être être considéré comme un integer et dépasser la capacité (60*60*24 supérieur à 32767).
"ng" a écrit dans le message de news:%
Salut,
En passant par du Currency :
Dim vTest1 As Variant vTest1 = 58 / (60@ * 60@ * 24@) Debug.Print vTest1
Mais il est préférable de typer ta variable :
Dim lTest1 As Long lTest1 = 58 / (60@ * 60@ * 24@) Debug.Print lTest1
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/ http://apisvb.europe.webmatrixhosting.net/
Laurent a écrit :
> Bonjour à tous, > > J'ai un petit souci avec un petit développement vb > > > ... > > Dim vTest1 as variant > > vTest1 = 58/(60*60*24) > > ... > > > Et là ça coince. En revanche, si j'effectue 58/86400, tout > se passe bien. Y'a-t-il une bonne âme pour m'expliquer ce > qui ne va pas, car là je dois avouer, je sèche. > > Merci de votre précieuse aide et d'ores et déjà bon week- > end. > > Laurent
Je propose mon explication pour savoir si elle est "juste"
Lorsque l'on ne type pas une variable VB va essayer de la typer au mieux :
dans notre cas 58/86400
86400 est un single car > à 32767 et le résultat 58/86400 est bien single
par contre 58/60*60*24 va peut-être être considéré comme un integer et
dépasser la capacité (60*60*24 supérieur à 32767).
"ng" <ng@ngsoft-fr.com> a écrit dans le message de
news:%23whNyO4TEHA.1356@TK2MSFTNGP09.phx.gbl...
Salut,
En passant par du Currency :
Dim vTest1 As Variant
vTest1 = 58 / (60@ * 60@ * 24@)
Debug.Print vTest1
Mais il est préférable de typer ta variable :
Dim lTest1 As Long
lTest1 = 58 / (60@ * 60@ * 24@)
Debug.Print lTest1
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/
Laurent <anonymous@discussions.microsoft.com> a écrit :
> Bonjour à tous,
>
> J'ai un petit souci avec un petit développement vb
>
>
> ...
>
> Dim vTest1 as variant
>
> vTest1 = 58/(60*60*24)
>
> ...
>
>
> Et là ça coince. En revanche, si j'effectue 58/86400, tout
> se passe bien. Y'a-t-il une bonne âme pour m'expliquer ce
> qui ne va pas, car là je dois avouer, je sèche.
>
> Merci de votre précieuse aide et d'ores et déjà bon week-
> end.
>
> Laurent
Je propose mon explication pour savoir si elle est "juste" Lorsque l'on ne type pas une variable VB va essayer de la typer au mieux : dans notre cas 58/86400 86400 est un single car > à 32767 et le résultat 58/86400 est bien single par contre 58/60*60*24 va peut-être être considéré comme un integer et dépasser la capacité (60*60*24 supérieur à 32767).
"ng" a écrit dans le message de news:%
Salut,
En passant par du Currency :
Dim vTest1 As Variant vTest1 = 58 / (60@ * 60@ * 24@) Debug.Print vTest1
Mais il est préférable de typer ta variable :
Dim lTest1 As Long lTest1 = 58 / (60@ * 60@ * 24@) Debug.Print lTest1
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/ http://apisvb.europe.webmatrixhosting.net/
Laurent a écrit :
> Bonjour à tous, > > J'ai un petit souci avec un petit développement vb > > > ... > > Dim vTest1 as variant > > vTest1 = 58/(60*60*24) > > ... > > > Et là ça coince. En revanche, si j'effectue 58/86400, tout > se passe bien. Y'a-t-il une bonne âme pour m'expliquer ce > qui ne va pas, car là je dois avouer, je sèche. > > Merci de votre précieuse aide et d'ores et déjà bon week- > end. > > Laurent
Patrice Henrio
Je viens de vérifier, c'est bien ce que je disais Sur une forme vide j'utilise le code suivant Private Sub Form_Load() Dim V1 As Variant, V2 As Variant, V3 As Variant V1 = 35 * 1000 V2 = 256 * 127 V3 = 35000 End Sub Tel quel j'ai un overflow sur V1, si je mets V1 en commentaire, tout passe. La limite est autour de 256*128 (2^15) "Patrice Henrio" a écrit dans le message de news:
Je propose mon explication pour savoir si elle est "juste" Lorsque l'on ne type pas une variable VB va essayer de la typer au mieux : dans notre cas 58/86400 86400 est un single car > à 32767 et le résultat 58/86400 est bien single par contre 58/60*60*24 va peut-être être considéré comme un integer et dépasser la capacité (60*60*24 supérieur à 32767).
"ng" a écrit dans le message de news:% > Salut, > > En passant par du Currency : > > Dim vTest1 As Variant > vTest1 = 58 / (60@ * 60@ * 24@) > Debug.Print vTest1 > > Mais il est préférable de typer ta variable : > > Dim lTest1 As Long > lTest1 = 58 / (60@ * 60@ * 24@) > Debug.Print lTest1 > > > -- > Nicolas G. > FAQ VB : http://faq.vb.free.fr > API Guide : http://www.allapi.net > Google Groups : http://groups.google.fr/ > MZ-Tools : http://www.mztools.com/ > http://apisvb.europe.webmatrixhosting.net/ > > > > Laurent a écrit : > > > Bonjour à tous, > > > > J'ai un petit souci avec un petit développement vb > > > > > > ... > > > > Dim vTest1 as variant > > > > vTest1 = 58/(60*60*24) > > > > ... > > > > > > Et là ça coince. En revanche, si j'effectue 58/86400, tout > > se passe bien. Y'a-t-il une bonne âme pour m'expliquer ce > > qui ne va pas, car là je dois avouer, je sèche. > > > > Merci de votre précieuse aide et d'ores et déjà bon week- > > end. > > > > Laurent > >
Je viens de vérifier, c'est bien ce que je disais
Sur une forme vide j'utilise le code suivant
Private Sub Form_Load()
Dim V1 As Variant, V2 As Variant, V3 As Variant
V1 = 35 * 1000
V2 = 256 * 127
V3 = 35000
End Sub
Tel quel j'ai un overflow sur V1, si je mets V1 en commentaire, tout passe.
La limite est autour de 256*128 (2^15)
"Patrice Henrio" <patrice.henrio.pasdepub@laposte.net> a écrit dans le
message de news:ett2135TEHA.3988@tk2msftngp13.phx.gbl...
Je propose mon explication pour savoir si elle est "juste"
Lorsque l'on ne type pas une variable VB va essayer de la typer au mieux :
dans notre cas 58/86400
86400 est un single car > à 32767 et le résultat 58/86400 est bien single
par contre 58/60*60*24 va peut-être être considéré comme un integer et
dépasser la capacité (60*60*24 supérieur à 32767).
"ng" <ng@ngsoft-fr.com> a écrit dans le message de
news:%23whNyO4TEHA.1356@TK2MSFTNGP09.phx.gbl...
> Salut,
>
> En passant par du Currency :
>
> Dim vTest1 As Variant
> vTest1 = 58 / (60@ * 60@ * 24@)
> Debug.Print vTest1
>
> Mais il est préférable de typer ta variable :
>
> Dim lTest1 As Long
> lTest1 = 58 / (60@ * 60@ * 24@)
> Debug.Print lTest1
>
>
> --
> Nicolas G.
> FAQ VB : http://faq.vb.free.fr
> API Guide : http://www.allapi.net
> Google Groups : http://groups.google.fr/
> MZ-Tools : http://www.mztools.com/
> http://apisvb.europe.webmatrixhosting.net/
>
>
>
> Laurent <anonymous@discussions.microsoft.com> a écrit :
>
> > Bonjour à tous,
> >
> > J'ai un petit souci avec un petit développement vb
> >
> >
> > ...
> >
> > Dim vTest1 as variant
> >
> > vTest1 = 58/(60*60*24)
> >
> > ...
> >
> >
> > Et là ça coince. En revanche, si j'effectue 58/86400, tout
> > se passe bien. Y'a-t-il une bonne âme pour m'expliquer ce
> > qui ne va pas, car là je dois avouer, je sèche.
> >
> > Merci de votre précieuse aide et d'ores et déjà bon week-
> > end.
> >
> > Laurent
>
>
Je viens de vérifier, c'est bien ce que je disais Sur une forme vide j'utilise le code suivant Private Sub Form_Load() Dim V1 As Variant, V2 As Variant, V3 As Variant V1 = 35 * 1000 V2 = 256 * 127 V3 = 35000 End Sub Tel quel j'ai un overflow sur V1, si je mets V1 en commentaire, tout passe. La limite est autour de 256*128 (2^15) "Patrice Henrio" a écrit dans le message de news:
Je propose mon explication pour savoir si elle est "juste" Lorsque l'on ne type pas une variable VB va essayer de la typer au mieux : dans notre cas 58/86400 86400 est un single car > à 32767 et le résultat 58/86400 est bien single par contre 58/60*60*24 va peut-être être considéré comme un integer et dépasser la capacité (60*60*24 supérieur à 32767).
"ng" a écrit dans le message de news:% > Salut, > > En passant par du Currency : > > Dim vTest1 As Variant > vTest1 = 58 / (60@ * 60@ * 24@) > Debug.Print vTest1 > > Mais il est préférable de typer ta variable : > > Dim lTest1 As Long > lTest1 = 58 / (60@ * 60@ * 24@) > Debug.Print lTest1 > > > -- > Nicolas G. > FAQ VB : http://faq.vb.free.fr > API Guide : http://www.allapi.net > Google Groups : http://groups.google.fr/ > MZ-Tools : http://www.mztools.com/ > http://apisvb.europe.webmatrixhosting.net/ > > > > Laurent a écrit : > > > Bonjour à tous, > > > > J'ai un petit souci avec un petit développement vb > > > > > > ... > > > > Dim vTest1 as variant > > > > vTest1 = 58/(60*60*24) > > > > ... > > > > > > Et là ça coince. En revanche, si j'effectue 58/86400, tout > > se passe bien. Y'a-t-il une bonne âme pour m'expliquer ce > > qui ne va pas, car là je dois avouer, je sèche. > > > > Merci de votre précieuse aide et d'ores et déjà bon week- > > end. > > > > Laurent > >
Zoury
Salut à tous! :O)
Patrice : Juste te rappeler que tu peux utiliser Typename() pour connaitre le sous-type de la variable Variant.
Tous le monde : J'aimerais ajouter un peu d'information à ce que Patrice vient de nous démontrer.. Dans le cas V1, VB traite les deux nombres de l'équation comme étant de type Integer étant donnée que ces deux nombres peuvent être représenter par un type Integer et que c'est le type par défaut pour un nombre. Toutefois le résultat de la multiplication de ces deux nombres dépasse la capacité d'un Integer (overflow). VB se dit J'ai deux Integer dans l'équation je vais donc tenter de mettre ça dans un Integer!
Il suffirait donc de typer ou de convertir l'un des 2 nombres en Long pour éviter le dépassement de capacité comme ceci : '*** Option Explicit
Private Sub Form_Load()
Dim V1 As Variant Dim V2 As Variant Dim V3 As Variant
' V1 = 35 * 1000 'overflow V1 = 35 * 1000& ' pas d'overflow car 1000 est un Long
V2 = 256 * 127 V3 = 35000
Debug.Print TypeName(V1) ' Long Debug.Print TypeName(V2) ' Integer Debug.Print TypeName(V3) ' Long
Patrice :
Juste te rappeler que tu peux utiliser Typename() pour connaitre le
sous-type de la variable Variant.
Tous le monde :
J'aimerais ajouter un peu d'information à ce que Patrice vient de nous
démontrer..
Dans le cas V1, VB traite les deux nombres de l'équation comme étant de
type Integer étant donnée que ces deux nombres peuvent être représenter par
un type Integer et que c'est le type par défaut pour un nombre. Toutefois le
résultat de la multiplication de ces deux nombres dépasse la capacité d'un
Integer (overflow). VB se dit J'ai deux Integer dans l'équation je vais donc
tenter de mettre ça dans un Integer!
Il suffirait donc de typer ou de convertir l'un des 2 nombres en Long pour
éviter le dépassement de capacité comme ceci :
'***
Option Explicit
Private Sub Form_Load()
Dim V1 As Variant
Dim V2 As Variant
Dim V3 As Variant
' V1 = 35 * 1000 'overflow
V1 = 35 * 1000& ' pas d'overflow car 1000 est un Long
V2 = 256 * 127
V3 = 35000
Debug.Print TypeName(V1) ' Long
Debug.Print TypeName(V2) ' Integer
Debug.Print TypeName(V3) ' Long
Patrice : Juste te rappeler que tu peux utiliser Typename() pour connaitre le sous-type de la variable Variant.
Tous le monde : J'aimerais ajouter un peu d'information à ce que Patrice vient de nous démontrer.. Dans le cas V1, VB traite les deux nombres de l'équation comme étant de type Integer étant donnée que ces deux nombres peuvent être représenter par un type Integer et que c'est le type par défaut pour un nombre. Toutefois le résultat de la multiplication de ces deux nombres dépasse la capacité d'un Integer (overflow). VB se dit J'ai deux Integer dans l'équation je vais donc tenter de mettre ça dans un Integer!
Il suffirait donc de typer ou de convertir l'un des 2 nombres en Long pour éviter le dépassement de capacité comme ceci : '*** Option Explicit
Private Sub Form_Load()
Dim V1 As Variant Dim V2 As Variant Dim V3 As Variant
' V1 = 35 * 1000 'overflow V1 = 35 * 1000& ' pas d'overflow car 1000 est un Long
V2 = 256 * 127 V3 = 35000
Debug.Print TypeName(V1) ' Long Debug.Print TypeName(V2) ' Integer Debug.Print TypeName(V3) ' Long
merci, j'avais oublié typename qui est plus parlant effectivement.
"Zoury" a écrit dans le message de news:
Salut à tous! :O)
Patrice : Juste te rappeler que tu peux utiliser Typename() pour connaitre le sous-type de la variable Variant.
Tous le monde : J'aimerais ajouter un peu d'information à ce que Patrice vient de nous démontrer.. Dans le cas V1, VB traite les deux nombres de l'équation comme étant
de
type Integer étant donnée que ces deux nombres peuvent être représenter
par
un type Integer et que c'est le type par défaut pour un nombre. Toutefois
le
résultat de la multiplication de ces deux nombres dépasse la capacité d'un Integer (overflow). VB se dit J'ai deux Integer dans l'équation je vais
donc
tenter de mettre ça dans un Integer!
Il suffirait donc de typer ou de convertir l'un des 2 nombres en Long pour éviter le dépassement de capacité comme ceci : '*** Option Explicit
Private Sub Form_Load()
Dim V1 As Variant Dim V2 As Variant Dim V3 As Variant
' V1 = 35 * 1000 'overflow V1 = 35 * 1000& ' pas d'overflow car 1000 est un Long
V2 = 256 * 127 V3 = 35000
Debug.Print TypeName(V1) ' Long Debug.Print TypeName(V2) ' Integer Debug.Print TypeName(V3) ' Long
merci, j'avais oublié typename qui est plus parlant effectivement.
"Zoury" <yanick_lefebvre@hotmail.com> a écrit dans le message de
news:ukg5A17TEHA.3420@TK2MSFTNGP12.phx.gbl...
Salut à tous! :O)
Patrice :
Juste te rappeler que tu peux utiliser Typename() pour connaitre le
sous-type de la variable Variant.
Tous le monde :
J'aimerais ajouter un peu d'information à ce que Patrice vient de nous
démontrer..
Dans le cas V1, VB traite les deux nombres de l'équation comme étant
de
type Integer étant donnée que ces deux nombres peuvent être représenter
par
un type Integer et que c'est le type par défaut pour un nombre. Toutefois
le
résultat de la multiplication de ces deux nombres dépasse la capacité d'un
Integer (overflow). VB se dit J'ai deux Integer dans l'équation je vais
donc
tenter de mettre ça dans un Integer!
Il suffirait donc de typer ou de convertir l'un des 2 nombres en Long pour
éviter le dépassement de capacité comme ceci :
'***
Option Explicit
Private Sub Form_Load()
Dim V1 As Variant
Dim V2 As Variant
Dim V3 As Variant
' V1 = 35 * 1000 'overflow
V1 = 35 * 1000& ' pas d'overflow car 1000 est un Long
V2 = 256 * 127
V3 = 35000
Debug.Print TypeName(V1) ' Long
Debug.Print TypeName(V2) ' Integer
Debug.Print TypeName(V3) ' Long
merci, j'avais oublié typename qui est plus parlant effectivement.
"Zoury" a écrit dans le message de news:
Salut à tous! :O)
Patrice : Juste te rappeler que tu peux utiliser Typename() pour connaitre le sous-type de la variable Variant.
Tous le monde : J'aimerais ajouter un peu d'information à ce que Patrice vient de nous démontrer.. Dans le cas V1, VB traite les deux nombres de l'équation comme étant
de
type Integer étant donnée que ces deux nombres peuvent être représenter
par
un type Integer et que c'est le type par défaut pour un nombre. Toutefois
le
résultat de la multiplication de ces deux nombres dépasse la capacité d'un Integer (overflow). VB se dit J'ai deux Integer dans l'équation je vais
donc
tenter de mettre ça dans un Integer!
Il suffirait donc de typer ou de convertir l'un des 2 nombres en Long pour éviter le dépassement de capacité comme ceci : '*** Option Explicit
Private Sub Form_Load()
Dim V1 As Variant Dim V2 As Variant Dim V3 As Variant
' V1 = 35 * 1000 'overflow V1 = 35 * 1000& ' pas d'overflow car 1000 est un Long
V2 = 256 * 127 V3 = 35000
Debug.Print TypeName(V1) ' Long Debug.Print TypeName(V2) ' Integer Debug.Print TypeName(V3) ' Long