VBA - Comment multiplier deux variables

Chers amis,

Je vous demande aide pour le probleme suivant:

Dim a

Dim b

Dim c

Range("C8").Select

a = InputBox a

Worksheets(1).Range("C8").Value = a

Range("D8").Select

b = InputBox b

Worksheets(1).Range("D8").Value = b

Range("E8").Select

c=a*b

De immédiat, je reçois l'Indication TYPE MISMATCH

Si, au contraire, au lieu de multiplier, je écrit, par exemple, c=a, tout va bien

Pourquoi? qu'est-ce que je doit faire pour obtenir et faire écrire un résultat?

Je comprends que, le probléme doit être dans l'atribution d'un valeur a une variable a travers inputBox, car, si je écrit directement a=5 et b=10, tou va bien.

Pardonnez mon Français, j'espére m'avoir me faire compris.

Salutations.

Manuel

Bonsoir,

Essaie ce code

Revoir les déclarations des variables au passage

Sub essai()
Dim a As Long
Dim b As Long
Dim c As Long
Range("C8").Select
a = InputBox("Entrer un nombre", "NOMBRE SEULEMENT")
Worksheets(1).Range("C8").Value = a
Range("D8").Select
b = InputBox("Entrer un nombre", "NOMBRE SEULEMENT")
Worksheets(1).Range("D8").Value = b
c = a * b
Range("E8") = c

End Sub

Tu peux encore l'améliorer. Il n'est pas besoin de sélectionner les cellules pour écrire dans celles-ci.

Cordialement

ddetp88

Merci de ta réponse.

Ca foncione bien, mais malheureusement j'ai oublié un détail dont je m'excuse:

C'est que de cette maniére il n'est pas possible d'introduire un núméro decimal, par example, 32.45

Si je mets tout simplement DIM a, ca fontione avec les decimals, mais pas la multiplication dans la cellule F8. Toujours TYPE MISMATCH.

Est-ce qu'il y aura une autre solution?

Remmerciements d'avance de ta patience.

Manuel

re,

Modifie la déclaration de tes variables, c'est la solution.

Tu es sur MAC, je ne connais pas bien mais peut-être faut-il déclarer dim a as variant au lieu de dim a.

Normalement en modifiant le type en double ça devrait fonctionner.

    Dim a As Double
    Dim b As Double
    Dim c As Double

Cordialement

ddetp88

Merci bien pour ta réponse.

Jávais déja essayé As, Double, As Integer, As Single, mais pas As Variant.

Maintenant, avec As Variant, cela résulte si il n'y aura pas de decimals, si non, quand j'arrive a la multiplication, le résultat n'est pas affiché e l'avertissement TYPE MISMACH apparaît.

De toute façon, pour une personne comme moi qui essaye d'apprendre tout seul comment travailler avec VBA, je suis content pour m'apercevoir que l'erreur qui apparaît, me semble n'être pas a cause d'une mauvaise suite logique du code.

Peut-être que cela résulte comme ça, par ce que j'utilize un Mac, enfin, je ne sais pas.

Mais c'est curieux que je ne trouve pas dans les livres et mêmme dans la Net aucune information oú example a cet sujet, posée de la maniére que je désire.

De toute façon, je te remmercie de ton interêt a cet sujet et du temps que je t'ai fait perdre.

Salutations.

Manuel

Bonjour,

InputBox te retourne une chaine.

En vba tu n'as pas forcément de conversion en numérique automatique comme sur une feuille.

Il faut que tu convertisses pour l'utiliser dans les calculs :

En entier : clng(a), ou en double : cdbl(a)

eric

Chers amis,

Merci bien de vos réponses.

Tout d'un coup, et aprés presque une semaine sans obtenir des résultats, j'ai apris la raison et la lesson d'être distrait.

C' est que, au Portugal, on utilize la virgule por séparer les decimals et non le point.

Evidement que l' Excel pour mon pays est adapté a cet sujet, mêmme quant j'utilize la version anglaise.

C'est simple, et l'ordinateur avait "la raison que je ne comprenaît pas", puisque j'utilisait la langue anglaise...

Mais, au minimum, j'ai apris a utiliser le Dim As Long et aussi la sintaxe Range("F8")=c laquelle je ne savais pas.

Encore une fois, merci a tous.

Manuel

Rechercher des sujets similaires à "vba comment multiplier deux variables"