Multiplication Label.caption par textbox.value ERREUR 13

cs_JPh007 Messages postés 37 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 17 juillet 2012 - 8 juil. 2012 à 14:35
cs_JPh007 Messages postés 37 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 17 juillet 2012 - 17 juil. 2012 à 12:12
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

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
8 juil. 2012 à 14:51
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
---
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
8 juil. 2012 à 15:42
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 juil. 2012 à 16:43
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
0
cs_JPh007 Messages postés 37 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 17 juillet 2012
8 juil. 2012 à 17:00
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é
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JPh007 Messages postés 37 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 17 juillet 2012
8 juil. 2012 à 17:09
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 ...
0
cs_JPh007 Messages postés 37 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 17 juillet 2012
8 juil. 2012 à 17:16
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 juil. 2012 à 18:03
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 juil. 2012 à 22:02
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
0
cs_JPh007 Messages postés 37 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 17 juillet 2012
17 juil. 2012 à 12:12
J'abandonne l'idée pour le moment j'y reviendrais une autre fois.

merci quand même pour vos axes de réflexion.
0
Rejoignez-nous