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

Pourquoi 3 + VRAI = 2 ?

62 réponses
Avatar
Gouap
Bonsoir,

je ne comprends pas pourquoi quand j'additionne le résultat d'une macro qui
retoure la valeur "Vrai" à une autre valeur positive, je me retrouve avec ma
veleur positive - 1 au lieu de +1.

A = 3 + "Vrai" = 2
A = -3 + "Vrai" = -4

Avez vous une explication à ce phénomène ?

10 réponses

1 2 3 4 5
Avatar
Daniel.C
Bonsoir.
VBA, au contraire d'Excel attribue la valeur "-1" à VRAI :
var = True * 1
donne -1 pour var.
Cordialement.
Daniel

Bonsoir,

je ne comprends pas pourquoi quand j'additionne le résultat d'une macro qui
retoure la valeur "Vrai" à une autre valeur positive, je me retrouve avec ma
veleur positive - 1 au lieu de +1.

A = 3 + "Vrai" = 2
A = -3 + "Vrai" = -4

Avez vous une explication à ce phénomène ?


Avatar
Gouap
Merci pour cette info, je vais maintenant retoucher mes macros en tenant
compte de cette propriété au lieu de perdre mon temps à chercher une érreur
dans le code.


"Daniel.C" a écrit dans le message de news:

Bonsoir.
VBA, au contraire d'Excel attribue la valeur "-1" à VRAI :
var = True * 1
donne -1 pour var.
Cordialement.
Daniel

Bonsoir,

je ne comprends pas pourquoi quand j'additionne le résultat d'une macro
qui retoure la valeur "Vrai" à une autre valeur positive, je me retrouve
avec ma veleur positive - 1 au lieu de +1.

A = 3 + "Vrai" = 2
A = -3 + "Vrai" = -4

Avez vous une explication à ce phénomène ?






Avatar
JérômeC
D'une manière générale, VRAI, c'est juste pas FAUX, et FAUX est 0.

Que VRAI soit représenté par un nombre égal à 1 ou -1, c'est un processus
interne. On n'additionne pas les carottes et les poireaux, pareil ici :
Additionner un booléen et un nombre n'a pas de sens. Certes cela te donne un
résultat, mais parce que tant que ce n'est pas fatal, un programme
informatique peut faire n'importe quoi.

Un code doit être lisible, ça se lit comme n'importe quel texte. Faire ce
genre de chose, c'est prendre le risque de ne pas avoir un code maintenable,
un code incompréhensible dans quelques temps.

++

--


Jérôme Cuinet

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

Merci pour cette info, je vais maintenant retoucher mes macros en tenant
compte de cette propriété au lieu de perdre mon temps à chercher une
érreur dans le code.


"Daniel.C" a écrit dans le message de news:

Bonsoir.
VBA, au contraire d'Excel attribue la valeur "-1" à VRAI :
var = True * 1
donne -1 pour var.
Cordialement.
Daniel

Bonsoir,

je ne comprends pas pourquoi quand j'additionne le résultat d'une macro
qui retoure la valeur "Vrai" à une autre valeur positive, je me retrouve
avec ma veleur positive - 1 au lieu de +1.

A = 3 + "Vrai" = 2
A = -3 + "Vrai" = -4

Avez vous une explication à ce phénomène ?










Avatar
Daniel.C
Bonjour.
Il n'est ici pas question d'ajouter du numérique et du booléen mais
d'ajouter du numérique à la correspondance numérique de la valeur
booléenne. Si c'est illicite, il est impossible d'écrire un grand
nombre de formules matricielles basées sur ce qui précède.
Cordialement.
Daniel

D'une manière générale, VRAI, c'est juste pas FAUX, et FAUX est 0.

Que VRAI soit représenté par un nombre égal à 1 ou -1, c'est un processus
interne. On n'additionne pas les carottes et les poireaux, pareil ici :
Additionner un booléen et un nombre n'a pas de sens. Certes cela te donne un
résultat, mais parce que tant que ce n'est pas fatal, un programme
informatique peut faire n'importe quoi.

Un code doit être lisible, ça se lit comme n'importe quel texte. Faire ce
genre de chose, c'est prendre le risque de ne pas avoir un code maintenable,
un code incompréhensible dans quelques temps.

++

--


Jérôme Cuinet

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

Merci pour cette info, je vais maintenant retoucher mes macros en tenant
compte de cette propriété au lieu de perdre mon temps à chercher une érreur
dans le code.


"Daniel.C" a écrit dans le message de news:

Bonsoir.
VBA, au contraire d'Excel attribue la valeur "-1" à VRAI :
var = True * 1
donne -1 pour var.
Cordialement.
Daniel

Bonsoir,

je ne comprends pas pourquoi quand j'additionne le résultat d'une macro
qui retoure la valeur "Vrai" à une autre valeur positive, je me retrouve
avec ma veleur positive - 1 au lieu de +1.

A = 3 + "Vrai" = 2
A = -3 + "Vrai" = -4

Avez vous une explication à ce phénomène ?












Avatar
JérômeC
> nombre de formules matricielles basées sur ce qui précède.



Est-ce que tu aurais des exemples, je ne connais pas ce genre de formules.
Dans Excel, les formules matricielles m'ont surtout servi à faire de la
compensation par moindres carrés.

Illicite n'est pas le mot, puisque VBA sait l'interprêter. Je dis juste que
c'est aussi lisible que de faire "ln (42) + 'C'". L'interpréteur sait faire,
mais ce n'est pas lisible. Tu dis avoir des exemples où c'est vraiment
utile, et donc que ça doit surement être bien plus lisible que dans
l'exemple type "-3 + VRAI = -4". C'est pourquoi je suis intéressé.

--

Jérôme

"Daniel.C" a écrit dans le message de news:

Bonjour.
Il n'est ici pas question d'ajouter du numérique et du booléen mais
d'ajouter du numérique à la correspondance numérique de la valeur
booléenne. Si c'est illicite, il est impossible d'écrire un grand nombre
de formules matricielles basées sur ce qui précède.
Cordialement.
Daniel

D'une manière générale, VRAI, c'est juste pas FAUX, et FAUX est 0.

Que VRAI soit représenté par un nombre égal à 1 ou -1, c'est un processus
interne. On n'additionne pas les carottes et les poireaux, pareil ici :
Additionner un booléen et un nombre n'a pas de sens. Certes cela te donne
un résultat, mais parce que tant que ce n'est pas fatal, un programme
informatique peut faire n'importe quoi.

Un code doit être lisible, ça se lit comme n'importe quel texte. Faire ce
genre de chose, c'est prendre le risque de ne pas avoir un code
maintenable, un code incompréhensible dans quelques temps.

++

--


Jérôme Cuinet

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

Merci pour cette info, je vais maintenant retoucher mes macros en tenant
compte de cette propriété au lieu de perdre mon temps à chercher une
érreur dans le code.


"Daniel.C" a écrit dans le message de news:

Bonsoir.
VBA, au contraire d'Excel attribue la valeur "-1" à VRAI :
var = True * 1
donne -1 pour var.
Cordialement.
Daniel

Bonsoir,

je ne comprends pas pourquoi quand j'additionne le résultat d'une
macro qui retoure la valeur "Vrai" à une autre valeur positive, je me
retrouve avec ma veleur positive - 1 au lieu de +1.

A = 3 + "Vrai" = 2
A = -3 + "Vrai" = -4

Avez vous une explication à ce phénomène ?
















Avatar
LSteph
Bonjour JeromeC,

;o) Si, si on peut ...
3carottes + 2 poireaux+1pomme de terre+1 Oignon cela fait 6 légumes
(ajouter cela dans une bonne casserole d'eau salée pouivrée, porter à
ébulition, passer
cela vous fera une bonne soupe).

Plaisanterie à part
Excel se moque de savoir si ce sont des carottes ou des poireaux,et ce
sera pareil pour vba même s'il faudra parfois adapter le type d'entrée
on peut très bien ajouter soustraire ou multilier par vrai, une date
ou un nombre.
Le tout est d'arriver au résultat voulu.
Pour exemple,

c'est ce que fait Sommeprod il multiplie par Vrai ou Faux

=sommeprod((A2:A10="toto")*(B2:B10>1000)*(B2:B10))

si le premier item et le second renvoient vrai on fera la somme de ce
qui est en B

on peut faire pareil avec VBA , en se méfiant le cas échéant du signe .

On peut aussi utiliser abs

Cordialement;

--
lSteph

On 15 sep, 09:52, "JérômeC" wrote:
D'une manière générale, VRAI, c'est juste pas FAUX, et FAUX est 0.

Que VRAI soit représenté par un nombre égal à 1 ou -1, c'est un p rocessus
interne. On n'additionne pas les carottes et les poireaux, pareil ici :
Additionner un booléen et un nombre n'a pas de sens. Certes cela te don ne un
résultat, mais parce que tant que ce n'est pas fatal, un programme
informatique peut faire n'importe quoi.

Un code doit être lisible, ça se lit comme n'importe quel texte. Fair e ce
genre de chose, c'est prendre le risque de ne pas avoir un code maintenab le,
un code incompréhensible dans quelques temps.

++

--

Jérôme Cuinet

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




> Merci pour cette info, je vais maintenant retoucher mes macros en tenan t
> compte de cette propriété au lieu de perdre mon temps à chercher une
> érreur dans le code.

> "Daniel.C" a écrit dans le message de news :
>
>> Bonsoir.
>> VBA, au contraire d'Excel attribue la valeur "-1" à VRAI :
>> var = True * 1
>> donne -1 pour var.
>> Cordialement.
>> Daniel

>>> Bonsoir,

>>> je ne comprends pas pourquoi quand j'additionne le résultat d'une m acro
>>> qui retoure la valeur "Vrai" à une autre valeur positive, je me ret rouve
>>> avec ma veleur positive - 1 au lieu de +1.

>>> A = 3 + "Vrai" = 2
>>> A = -3 + "Vrai" = -4

>>> Avez vous une explication à ce phénomène ?- Masquer le texte de s messages précédents -

- Afficher le texte des messages précédents -


Avatar
Daniel.C
La formule matricielle suivante permet de compter les valeurs de la
plage A1:A5 qui sont égales à 1 et dont les valeurs correspondantes de
la plage B1:B5 sont égales à 2 :
=SOMME((A1:A5=1)*(B1:B5=2))
(valider avec Ctrl+Maj+Entrée)
J'ai mis le classeur exemple ici :
http://www.cijoint.fr/cjlink.php?file=cj200909/cijlFU62mr.xls
Quant à VBA, je ne pense pas avoir écrit que j'avais des exemples
utiles en mémoire.
Daniel

nombre de formules matricielles basées sur ce qui précède.



Est-ce que tu aurais des exemples, je ne connais pas ce genre de formules.
Dans Excel, les formules matricielles m'ont surtout servi à faire de la
compensation par moindres carrés.

Illicite n'est pas le mot, puisque VBA sait l'interprêter. Je dis juste que
c'est aussi lisible que de faire "ln (42) + 'C'". L'interpréteur sait faire,
mais ce n'est pas lisible. Tu dis avoir des exemples où c'est vraiment utile,
et donc que ça doit surement être bien plus lisible que dans l'exemple type
"-3 + VRAI = -4". C'est pourquoi je suis intéressé.

--

Jérôme

"Daniel.C" a écrit dans le message de news:

Bonjour.
Il n'est ici pas question d'ajouter du numérique et du booléen mais
d'ajouter du numérique à la correspondance numérique de la valeur
booléenne. Si c'est illicite, il est impossible d'écrire un grand nombre de
formules matricielles basées sur ce qui précède.
Cordialement.
Daniel

D'une manière générale, VRAI, c'est juste pas FAUX, et FAUX est 0.

Que VRAI soit représenté par un nombre égal à 1 ou -1, c'est un processus
interne. On n'additionne pas les carottes et les poireaux, pareil ici :
Additionner un booléen et un nombre n'a pas de sens. Certes cela te donne
un résultat, mais parce que tant que ce n'est pas fatal, un programme
informatique peut faire n'importe quoi.

Un code doit être lisible, ça se lit comme n'importe quel texte. Faire ce
genre de chose, c'est prendre le risque de ne pas avoir un code
maintenable, un code incompréhensible dans quelques temps.

++

--


Jérôme Cuinet

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

Merci pour cette info, je vais maintenant retoucher mes macros en tenant
compte de cette propriété au lieu de perdre mon temps à chercher une
érreur dans le code.


"Daniel.C" a écrit dans le message de news:

Bonsoir.
VBA, au contraire d'Excel attribue la valeur "-1" à VRAI :
var = True * 1
donne -1 pour var.
Cordialement.
Daniel

Bonsoir,

je ne comprends pas pourquoi quand j'additionne le résultat d'une macro
qui retoure la valeur "Vrai" à une autre valeur positive, je me
retrouve avec ma veleur positive - 1 au lieu de +1.

A = 3 + "Vrai" = 2
A = -3 + "Vrai" = -4

Avez vous une explication à ce phénomène ?


















Avatar
JérômeC
Donc un oignon n'est pas un légume...

=SOMME.SI.ENS(B2:B10;A2:A10;"toto";B2:B10;">1000")
me semble exactement équivalent à la formule proposée
=SOMMEPRO((A2:A10="toto")*(B2:B10>1000)*(B2:B10))

C'est ausi long l'un que l'autre, et le respect de la syntaxe de la fonction
a un sens. Alors que la fonction en utilisaant VRAI = -1 est du bricolage en
connaissant la valeur associée à ce booléen.

--


Jérôme Cuinet

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

Bonjour JeromeC,

;o) Si, si on peut ...
3carottes + 2 poireaux+1pomme de terre+1 Oignon cela fait 6 légumes
(ajouter cela dans une bonne casserole d'eau salée pouivrée, porter à
ébulition, passer
cela vous fera une bonne soupe).

Plaisanterie à part
Excel se moque de savoir si ce sont des carottes ou des poireaux,et ce
sera pareil pour vba même s'il faudra parfois adapter le type d'entrée
on peut très bien ajouter soustraire ou multilier par vrai, une date
ou un nombre.
Le tout est d'arriver au résultat voulu.
Pour exemple,

c'est ce que fait Sommeprod il multiplie par Vrai ou Faux

=sommeprod((A2:A10="toto")*(B2:B10>1000)*(B2:B10))

si le premier item et le second renvoient vrai on fera la somme de ce
qui est en B

on peut faire pareil avec VBA , en se méfiant le cas échéant du signe.

On peut aussi utiliser abs

Cordialement;

--
lSteph

On 15 sep, 09:52, "JérômeC" wrote:
D'une manière générale, VRAI, c'est juste pas FAUX, et FAUX est 0.

Que VRAI soit représenté par un nombre égal à 1 ou -1, c'est un processus
interne. On n'additionne pas les carottes et les poireaux, pareil ici :
Additionner un booléen et un nombre n'a pas de sens. Certes cela te donne
un
résultat, mais parce que tant que ce n'est pas fatal, un programme
informatique peut faire n'importe quoi.

Un code doit être lisible, ça se lit comme n'importe quel texte. Faire ce
genre de chose, c'est prendre le risque de ne pas avoir un code
maintenable,
un code incompréhensible dans quelques temps.

++

--

Jérôme Cuinet

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




> Merci pour cette info, je vais maintenant retoucher mes macros en tenant
> compte de cette propriété au lieu de perdre mon temps à chercher une
> érreur dans le code.

> "Daniel.C" a écrit dans le message de news:
>
>> Bonsoir.
>> VBA, au contraire d'Excel attribue la valeur "-1" à VRAI :
>> var = True * 1
>> donne -1 pour var.
>> Cordialement.
>> Daniel

>>> Bonsoir,

>>> je ne comprends pas pourquoi quand j'additionne le résultat d'une
>>> macro
>>> qui retoure la valeur "Vrai" à une autre valeur positive, je me
>>> retrouve
>>> avec ma veleur positive - 1 au lieu de +1.

>>> A = 3 + "Vrai" = 2
>>> A = -3 + "Vrai" = -4

>>> Avez vous une explication à ce phénomène ?- Masquer le texte des
>>> messages précédents -

- Afficher le texte des messages précédents -


Avatar
JérômeC
Pour le VBA, des touches sur mon clavier ont été inversées, je voulais bien
sûr évoquer les formules Excel. Désolé.

Pour cette fonction, je propose
=NB.SI.ENS(A1:A5;1;B1:B5;2)
qui fait exactement la même chose (en plus même pas besoin d'indiquer que
c'est un calcul matriciel).

Pour l'instant, le calcul matriciel avec des conditions, je vois que je peux
le faire avec les fonctions que me fournis Excel. Si ce n'était pas le cas,
on pourrait en discuter, mais là pour l'instant je trouve qu'on peut écrire
des formules qui ont du sens au lieu de formules qu'il faut s'amuser à
interprêter, et en plus qui risquent d'être fausses lorsqu'on passe du côté
VBA comme l'a fait Gouap.

--


Jérôme

"Daniel.C" a écrit dans le message de news:

La formule matricielle suivante permet de compter les valeurs de la plage
A1:A5 qui sont égales à 1 et dont les valeurs correspondantes de la plage
B1:B5 sont égales à 2 :
=SOMME((A1:A5=1)*(B1:B5=2))
(valider avec Ctrl+Maj+Entrée)
J'ai mis le classeur exemple ici :
http://www.cijoint.fr/cjlink.php?file=cj200909/cijlFU62mr.xls
Quant à VBA, je ne pense pas avoir écrit que j'avais des exemples utiles
en mémoire.
Daniel

nombre de formules matricielles basées sur ce qui précède.



Est-ce que tu aurais des exemples, je ne connais pas ce genre de
formules. Dans Excel, les formules matricielles m'ont surtout servi à
faire de la compensation par moindres carrés.

Illicite n'est pas le mot, puisque VBA sait l'interprêter. Je dis juste
que c'est aussi lisible que de faire "ln (42) + 'C'". L'interpréteur sait
faire, mais ce n'est pas lisible. Tu dis avoir des exemples où c'est
vraiment utile, et donc que ça doit surement être bien plus lisible que
dans l'exemple type "-3 + VRAI = -4". C'est pourquoi je suis intéressé.

--

Jérôme

"Daniel.C" a écrit dans le message de news:

Bonjour.
Il n'est ici pas question d'ajouter du numérique et du booléen mais
d'ajouter du numérique à la correspondance numérique de la valeur
booléenne. Si c'est illicite, il est impossible d'écrire un grand nombre
de formules matricielles basées sur ce qui précède.
Cordialement.
Daniel

D'une manière générale, VRAI, c'est juste pas FAUX, et FAUX est 0.

Que VRAI soit représenté par un nombre égal à 1 ou -1, c'est un
processus interne. On n'additionne pas les carottes et les poireaux,
pareil ici : Additionner un booléen et un nombre n'a pas de sens.
Certes cela te donne un résultat, mais parce que tant que ce n'est pas
fatal, un programme informatique peut faire n'importe quoi.

Un code doit être lisible, ça se lit comme n'importe quel texte. Faire
ce genre de chose, c'est prendre le risque de ne pas avoir un code
maintenable, un code incompréhensible dans quelques temps.

++

--


Jérôme Cuinet

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

Merci pour cette info, je vais maintenant retoucher mes macros en
tenant compte de cette propriété au lieu de perdre mon temps à
chercher une érreur dans le code.


"Daniel.C" a écrit dans le message de news:

Bonsoir.
VBA, au contraire d'Excel attribue la valeur "-1" à VRAI :
var = True * 1
donne -1 pour var.
Cordialement.
Daniel

Bonsoir,

je ne comprends pas pourquoi quand j'additionne le résultat d'une
macro qui retoure la valeur "Vrai" à une autre valeur positive, je
me retrouve avec ma veleur positive - 1 au lieu de +1.

A = 3 + "Vrai" = 2
A = -3 + "Vrai" = -4

Avez vous une explication à ce phénomène ?






















Avatar
LSteph
Exemple:

Private Sub CommandButton1_Click()
Dim c As Range, maVal As Long
maVal = 0 'facultatif
For Each c In [A2:a10]
maVal = maVal + (Abs(c = "toto") * Abs(c.Offset(0, 1) > 1000) *
c.Offset(0, 1))
Next
MsgBox maVal
End Sub
1 2 3 4 5