OVH Cloud OVH Cloud

Mathématique avec vb

8 réponses
Avatar
Raymond Fournier
Bonjour a tous,
Si j'utilise la formule suivante : nbrDePartie = CCur(Len(tabItems(1,
NoLigne))) / 20
ou tabItems(1, NoLigne) a 31 caractères, si je le divise par 20 donc
31/20 sur la calculatrice j'obtiens 1,55.
Avec vb j'obtiens 2.

Quelqu?un peut m?expliquer SVP.

Merci Raymond Fournier

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

8 réponses

Avatar
LE TROLL
Salut,

Sans doute que les variables choisies ne sont pas
appropriées à restituer correctement les décimaux, en
faisant ce qui suit ça fonctionne:

Sub Form_Load()
Dim a As Single
a = 31 / 20
MsgBox a ' = 1,55
End Sub
-----------

"Raymond Fournier" <duracelle(Enlever-ceci)@sympatico.ca> a
écrit dans le message de news:

Bonjour a tous,
Si j'utilise la formule suivante : nbrDePartie =
CCur(Len(tabItems(1, NoLigne))) / 20
ou tabItems(1, NoLigne) a 31 caractères, si je le divise
par 20 donc 31/20 sur la calculatrice j'obtiens 1,55.
Avec vb j'obtiens 2.

Quelqu?un peut m?expliquer SVP.

Merci Raymond Fournier

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net



Avatar
Eric
En fait en VB, la division d'un entier par un entier donne un entier. Il
faut donc caster les entiers en décimaux pour obtenir un décimal comme
résultat de la division.


LE TROLL wrote:
Salut,

Sans doute que les variables choisies ne sont pas
appropriées à restituer correctement les décimaux, en
faisant ce qui suit ça fonctionne:

Sub Form_Load()
Dim a As Single
a = 31 / 20
MsgBox a ' = 1,55
End Sub
-----------

"Raymond Fournier" <duracelle(Enlever-ceci)@sympatico.ca> a
écrit dans le message de news:


Bonjour a tous,
Si j'utilise la formule suivante : nbrDePartie =
CCur(Len(tabItems(1, NoLigne))) / 20
ou tabItems(1, NoLigne) a 31 caractères, si je le divise
par 20 donc 31/20 sur la calculatrice j'obtiens 1,55.
Avec vb j'obtiens 2.

Quelqu?un peut m?expliquer SVP.

Merci Raymond Fournier

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net








Avatar
LE TROLL
Oh là, c'est trop intelligent ce que tu dis, j'ai du mal
à suivre, tu veux dire qu'il faut prendre une variable qui
bosse en décimal ?
--------

"Eric" a écrit dans le message de
news: %
En fait en VB, la division d'un entier par un entier donne
un entier. Il faut donc caster les entiers en décimaux
pour obtenir un décimal comme résultat de la division.


LE TROLL wrote:
Salut,

Sans doute que les variables choisies ne sont pas
appropriées à restituer correctement les décimaux, en
faisant ce qui suit ça fonctionne:

Sub Form_Load()
Dim a As Single
a = 31 / 20
MsgBox a ' = 1,55
End Sub
-----------

"Raymond Fournier" <duracelle(Enlever-ceci)@sympatico.ca>
a écrit dans le message de news:


Bonjour a tous,
Si j'utilise la formule suivante : nbrDePartie =
CCur(Len(tabItems(1, NoLigne))) / 20
ou tabItems(1, NoLigne) a 31 caractères, si je le divise
par 20 donc 31/20 sur la calculatrice j'obtiens 1,55.
Avec vb j'obtiens 2.

Quelqu?un peut m?expliquer SVP.

Merci Raymond Fournier

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net









Avatar
Patrice Henrio
Il s'agit tout simple du typage des variables : une variable entière ne peut
pas contenir un décimal. Deux solutions pour ce problème
1) "Type Mismatch Error". Fallait faire attention et mettre une variable
adéquate.
2) "Tu veux un entier ! Bon je vais te satisfaire. Alors voyons 1,55 c'est
pas trop loin de 2, donc allons-y, 1,55 ça vaut 2 en entier."
C'est cette deuxième solution qu'utilise visual basic objet de ce forum (je
réponds aussi à la question qui allait venir : "c'est quoi visual basic ?"
(réponse = "objet (ou sujet au choix) de ce forum).

"LE TROLL" <le a écrit dans le message de news:
%
Oh là, c'est trop intelligent ce que tu dis, j'ai du mal à suivre, tu
veux dire qu'il faut prendre une variable qui bosse en décimal ?
--------

"Eric" a écrit dans le message de news:
%
En fait en VB, la division d'un entier par un entier donne un entier. Il
faut donc caster les entiers en décimaux pour obtenir un décimal comme
résultat de la division.


LE TROLL wrote:
Salut,

Sans doute que les variables choisies ne sont pas appropriées à
restituer correctement les décimaux, en faisant ce qui suit ça
fonctionne:

Sub Form_Load()
Dim a As Single
a = 31 / 20
MsgBox a ' = 1,55
End Sub
-----------

"Raymond Fournier" <duracelle(Enlever-ceci)@sympatico.ca> a écrit dans
le message de news:

Bonjour a tous,
Si j'utilise la formule suivante : nbrDePartie = CCur(Len(tabItems(1,
NoLigne))) / 20
ou tabItems(1, NoLigne) a 31 caractères, si je le divise par 20 donc
31/20 sur la calculatrice j'obtiens 1,55.
Avec vb j'obtiens 2.

Quelqu?un peut m?expliquer SVP.

Merci Raymond Fournier

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net












Avatar
LE TROLL
lol, salut, ben alors ma réponse elle est bonne, en prenant
un single on a les décimaux, pourquoi on me fait 3 réponses
8 heures plus tard, et pourquoi que c'est à moi qu'on
répond, j'ai pas posé de question moi, en plus l'info donné
est testée, ça marche, où qu'il est le problème ???
@+ :o)
--------

"Patrice Henrio" a écrit dans
le message de news:
%
Il s'agit tout simple du typage des variables : une
variable entière ne peut pas contenir un décimal. Deux
solutions pour ce problème
1) "Type Mismatch Error". Fallait faire attention et
mettre une variable adéquate.
2) "Tu veux un entier ! Bon je vais te satisfaire. Alors
voyons 1,55 c'est pas trop loin de 2, donc allons-y, 1,55
ça vaut 2 en entier."
C'est cette deuxième solution qu'utilise visual basic
objet de ce forum (je réponds aussi à la question qui
allait venir : "c'est quoi visual basic ?" (réponse =
"objet (ou sujet au choix) de ce forum).

"LE TROLL" <le a écrit dans le message de
news: %
Oh là, c'est trop intelligent ce que tu dis, j'ai du
mal à suivre, tu veux dire qu'il faut prendre une
variable qui bosse en décimal ?
--------

"Eric" a écrit dans le message
de news: %
En fait en VB, la division d'un entier par un entier
donne un entier. Il faut donc caster les entiers en
décimaux pour obtenir un décimal comme résultat de la
division.


LE TROLL wrote:
Salut,

Sans doute que les variables choisies ne sont pas
appropriées à restituer correctement les décimaux, en
faisant ce qui suit ça fonctionne:

Sub Form_Load()
Dim a As Single
a = 31 / 20
MsgBox a ' = 1,55
End Sub
-----------

"Raymond Fournier"
<duracelle(Enlever-ceci)@sympatico.ca> a écrit dans le
message de news:


Bonjour a tous,
Si j'utilise la formule suivante : nbrDePartie =
CCur(Len(tabItems(1, NoLigne))) / 20
ou tabItems(1, NoLigne) a 31 caractères, si je le
divise par 20 donc 31/20 sur la calculatrice j'obtiens
1,55.
Avec vb j'obtiens 2.

Quelqu?un peut m?expliquer SVP.

Merci Raymond Fournier

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
















Avatar
Eric
Je me suis un peu trompé. Mea culpa.
Le résultat dépend du type de la variable qui reçoit le résultat. Si
c'est un entier, la variable recevra la partie entière de la division
(cast implicite).

Dim n1 As integer
Dim s1 As single

n1 = 10/4
s1 = 10/4
Debug.Print 10 / 4 ->2,5
Debug.Print n1 ->2
Debug.Print s1 ->2,5


LE TROLL wrote:
Oh là, c'est trop intelligent ce que tu dis, j'ai du mal
à suivre, tu veux dire qu'il faut prendre une variable qui
bosse en décimal ?
--------

"Eric" a écrit dans le message de
news: %

En fait en VB, la division d'un entier par un entier donne
un entier. Il faut donc caster les entiers en décimaux
pour obtenir un décimal comme résultat de la division.


LE TROLL wrote:

Salut,

Sans doute que les variables choisies ne sont pas
appropriées à restituer correctement les décimaux, en
faisant ce qui suit ça fonctionne:

Sub Form_Load()
Dim a As Single
a = 31 / 20
MsgBox a ' = 1,55
End Sub
-----------

"Raymond Fournier" <duracelle(Enlever-ceci)@sympatico.ca>
a écrit dans le message de news:



Bonjour a tous,
Si j'utilise la formule suivante : nbrDePartie =
CCur(Len(tabItems(1, NoLigne))) / 20
ou tabItems(1, NoLigne) a 31 caractères, si je le divise
par 20 donc 31/20 sur la calculatrice j'obtiens 1,55.
Avec vb j'obtiens 2.

Quelqu?un peut m?expliquer SVP.

Merci Raymond Fournier

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net












Avatar
Barsalou
Non, c'est faux:

dim n as integer, x as single
x = 11/4
donne x = 2,75
mais
n = 11/4
donne n = 3, et non la valeur entière qui est 2

Ce n'est donc pas la valeur entière du résultat de la division que l'on
obtient, mais la valeur arrondie de ce résultat.
Pour obtenir la valeur entière il faut faire n = 114
Avatar
Raymond Fournier
Barsalou avait énoncé :
Non, c'est faux:

dim n as integer, x as single
x = 11/4
donne x = 2,75
mais
n = 11/4
donne n = 3, et non la valeur entière qui est 2

Ce n'est donc pas la valeur entière du résultat de la division que l'on
obtient, mais la valeur arrondie de ce résultat.
Pour obtenir la valeur entière il faut faire n = 114



Bonjour a tous,

Dim nbrDePartie As Currency
nbrDePartie = (Len(tabItems(1, NoLigne) / 20
réponce 1.55

Merci a tous pour vos explications
Raymond Fournier

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net