Probleme addition en vba excel

Signaler
Messages postés
3
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
19 novembre 2010
-
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
-
Bonjour,

Je débute en VBA.
Il m'arrive parfois q'une addition devienne une concaténation. Exemple de code

z=x+y

x et y sont rentré par un inputbox, au lieu de faire l'addition le programme fait la concaténation des deux nombres?
J'ai bien déclaré le type des variables.
Quelqu'un a déjà t -il eu ce problème et sait il le résoudre.

Merci

5 réponses

Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Salut
Dans le premier cas x est considéré comme un variant ( on ne sait pas le type exact de la variable) : le programme met les variants bout à bout ( concaténation)
Dans le second cas x est de type double. quand tu fais z = x + y le programme en déduit que ce sont des valeurs numériques grâce au fait que x est un double et il additionne les variables

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
Messages postés
23
Date d'inscription
vendredi 1 février 2002
Statut
Membre
Dernière intervention
27 décembre 2010

J'ai jamais eu ce problème. Mais si je l'avais, j'utiliserais la Function VAL

Z = Val(X) + Val(Y)

Ma passion : l'électronique et la programmation
Messages postés
3
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
19 novembre 2010

En fait si je tape le code suivant, le programme fait une concaténation au lieu d'une addition
Sub essaiaddition()

Dim x, y, z As Double


x = InputBox("donner x")
y = InputBox("donner y")

z = x + y

MsgBox (z)

End Sub

Si par contre j'écris en inversant dans la déclaration de variable x avec z, ca marche ??????????
Sub essaiaddition()

Dim z, y, x As Double


x = InputBox("donner x")
y = InputBox("donner y")

z = x + y

MsgBox (z)

End Sub
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Salut
Il faut spécifier le type de variables pour chaque variable
Dim x as Double, y as Double, z As Double

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
Messages postés
3
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
19 novembre 2010

Merci pour ces réponses, mais je n'ai toujours pas l'explication