Multiplication Label.caption par textbox.value ERREUR 13

Signaler
Messages postés
39
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
17 juillet 2012
-
Messages postés
39
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
17 juillet 2012
-
Bonjour je tente de faire fonctionner ce code dans mon userform:

Private Sub TextBox2_Change()
Label36.Caption = (TextBox2.Value * Label16.Caption)
End Sub

[b]seulement l'erreur 13 "erreur d'execution apparait avec en commentaire "Incompatibilité de type.
/b
J'utilise ce code pour tous les textbox de mon userform:

Private Sub TextBox3_Change()
Label37.Caption = TextBox3 * Label17.Caption
End Sub
Private Sub TextBox4_Change()
Label38.Caption = TextBox4 * Label18.Caption
End Sub

Private Sub TextBox5_Change()
Label39.Caption = TextBox5 * Label19.Caption
End Sub

etc ...

mes textbox et mes label ont tous des valeurs numériques.

Merci d'avance pour vos lumières.

9 réponses

Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
151
Bonjour,

TextBox3 * Label17.Caption

Est-ce que ça a un sens de multiplier un contrôle avec une chaine de caractères ?

On peux multiplier 2 nombres, mais pas des chaines.

CStr(CDbl(TextBox3.Text) * CDbl(Label17.Caption ))
Est mieux, je pense.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
Bonjour,

Ben oui, on ne fait des opérations que sur des valeurs !

Puis renommes tes TextBox et Label avec des noms explicites en mettant le préfixe conventionnel, tu t'y retrouveras mieux dans ton code. Par exemple :

TextBox5 > txtTOTO ou txtToto
Label36 > lblTATA ou lblTata

Tu sauras tout suite à quoi correspond Value ou Caption de tes contrôles.

Cheyenne
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour,
outre ce qui a fort justement été dit tant par NHenry que par cheyenne à propos de la nécessité de transposer en numériques des chaînes de caractères pour effectuer des opérations mathématiques :
- le mode de transposition dépend :
---- de la faisabilité même de la transposition (il faut s'assurer de ce que la chaîne en cause peut représenter un numérique)
---- du séparateur décimal éventuellement utilisé dans la chaîne de caractères (traitement différent selon que point ou virgule et dépendant des paramètres locaux)

J'aoute ceci : Autant on peut comprendre l'utilisation d'une textbox pour saisir un numérique, autant l'utilisation d'un label est difficilement et rarement justifiable (puisque non modifiable par l'utilisateur). La valeur qu'il contiendrait ne "tombant pas du ciel", il faut bien qu'elle soit lue quelque part, non ? Et dans ce cas : c'est dans une variable, que l'on met cette valeur et c'est cette variable, que l'on utilise et pas le label, y compris si l'on a cru devoir afficher cette valeur dans un label pour des raisons X ou Y !



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
39
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
17 juillet 2012

Merci pour vos remarques:

Le label en question correspond à une base de prix présente sur un onglet . Cette base de prix change une fois par an.

Elle est affichée pour information à la personne qui saisie.

Ensuite je ne peux pas m'amuser à modifier le nom des différentes texbox car ces même textbox font références à des cellules pour une prestation définie mais qui peut être amenée à disparaitre ou être modifiée.

Le code en question malheureusement ne change pas mon problème

bizarement des fois ça marche, des fois ça marche pas ...

pourtant les valeurs de textbox et de label n'ont bel et bien pas changé
Messages postés
39
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
17 juillet 2012

Bon tant pis, j'ai repris la variable une deuxième fois pour le calcul mais terme de programmation en cas de changement je devrais faire le double travail puisqu'elle sera présente en double sur
les userform pas pratique du tout.


du coup je me retrouve avec ce code:

Label38.Caption = TextBox4.Value * Sheets("BASE PRIX HT").Range("C6").Value

qui semble tourner pour le moment ...
Messages postés
39
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
17 juillet 2012

Mon code:

Private Sub TextBox2_Change()

 If TextBox2 = "0" Then
Label36.Caption = "0"
Else: Label36.Caption = TextBox2.Value * Sheets("BASE PRIX HT").Range("C4").Value
End If
End Sub


tournait bien jusqu'à que j'ajoute après end if un code supplémentaire

Private Sub TextBox2_Change()

 If TextBox2 = "0" Then
Label36.Caption = "0"
Else: Label36.Caption = TextBox2.Value * Sheets("BASE PRIX HT").Range("C4").Value
End If
TextBox2 = Replace(TextBox2.Value, ".", ",")
End Sub


Je me retrouve à nouveau avec mon erreur 13, même finalement en remettant le code initial, il ne veut plus accepter le code qui fonctionnait 2 minutes avant.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Je crois que nous t'avons répondu, non ?
Je n'ai en ce qui me concerne pas un iota à changer dans la réponse déjà faite.





________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Quand même et pour être encore plus clair :
Le label en question correspond à une base de prix présente sur un onglet . Cette base de prix change une fois par an
*
et alors ? affiche ce que tu veux dans le label, mais travaille donc avec cette 'base de prix" (déjà dit) si elle est de type numérique (j'espère, au moins !)!
Quant à ta dernière remarque, relis donc ce que j'ai dit plus haut à propos du séparateur décimal, hein ...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
39
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
17 juillet 2012

J'abandonne l'idée pour le moment j'y reviendrais une autre fois.

merci quand même pour vos axes de réflexion.