(Mise à jour) Je suis nouveau sur VBA et j'ai essayé diverses choses pendant des heures, mais je n'arrive pas à comprendre comment multiplier simplement une entrée utilisateur décimale de 1,1 par la valeur de cellule de C1 (71388,92). Voici ce que j'ai essayé en dernier:

Private Sub CommandButton1_Click()
Dim myValue As Variant

myValue = InputBox("Prompt", "Title")
Range("C5").Value = myValue * Range("C1")

End Sub

J'obtiens une erreur d'exécution «13» - Non-concordance de type peut-être parce que la valeur de la cellule C1 est dérivée d'une requête Web json. J'ai essayé les types de données Variant, Double, Single, Long et Decimal, Number et Currency.

Lien de téléchargement: https://www.dropbox.com/sh/tg5jAf2 ? dl = 0

0
kymadic 20 nov. 2018 à 02:45

3 réponses

Meilleure réponse

Je pense que c'est votre solution:

myValue = InputBox("Prompt", "Title")
Range("C5").Select
ActiveCell.FormulaR1C1 = myValue * Range("C1")
0
ali 20 nov. 2018 à 04:28

Déclarer comme double au lieu de variante

Dim myValue As Double
myValue = InputBox("Prompt", "Title")
Range("C5").Value = myValue * Range("C1")
0
Manoj Babu 20 nov. 2018 à 11:59

Solution trouvée:

L'erreur avec le InputBox acceptant une entrée décimale réside dans les paramètres "Séparateur de milliers" et si vous entrez une virgule ou un point dans le InputBox. J'avais mon "Séparateur de milliers" configuré pour utiliser un point . parce que je travaille avec des exportations de fichiers .csv donc c'était utile. L'un ou l'autre fonctionnera, mais vous devez modifier vos paramètres de symbole décimal Windows en allant à:

Control Panel > Language > Change date, time, or number formats > Additional Settings > Decimal symbol.

Quant à la partie multiplication: L'original InputBox renvoie une chaîne. L'utilisation de Val() convertit la chaîne numérique en nombre et constitue le script VBA correct:

Private Sub CommandButton1_Click()
Dim myValue As Variant

myValue = Val(InputBox("Prompt", "Title"))
Range("C5").Value = myValue * Range("C3")

End Sub
0
kymadic 21 nov. 2018 à 03:58