Multiplication Label.caption par textbox.value ERREUR 13

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

9 réponses

Répondre au sujet
NHenry 14040 Messages postés vendredi 14 mars 2003Date d'inscription 14 janvier 2018 Dernière intervention - 8 juil. 2012 à 14:51
0
Utile
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
---
Commenter la réponse de NHenry
cs_cheyenne 693 Messages postés samedi 18 mai 2002Date d'inscription 17 avril 2017 Dernière intervention - 8 juil. 2012 à 15:42
0
Utile
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
Commenter la réponse de cs_cheyenne
ucfoutu 18025 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 janvier 2018 Dernière intervention - 8 juil. 2012 à 16:43
0
Utile
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
Commenter la réponse de ucfoutu
cs_JPh007 39 Messages postés mardi 12 août 2008Date d'inscription 17 juillet 2012 Dernière intervention - 8 juil. 2012 à 17:00
0
Utile
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é
Commenter la réponse de cs_JPh007
cs_JPh007 39 Messages postés mardi 12 août 2008Date d'inscription 17 juillet 2012 Dernière intervention - 8 juil. 2012 à 17:09
0
Utile
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 ...
Commenter la réponse de cs_JPh007
cs_JPh007 39 Messages postés mardi 12 août 2008Date d'inscription 17 juillet 2012 Dernière intervention - 8 juil. 2012 à 17:16
0
Utile
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.
Commenter la réponse de cs_JPh007
ucfoutu 18025 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 janvier 2018 Dernière intervention - 8 juil. 2012 à 18:03
0
Utile
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
Commenter la réponse de ucfoutu
ucfoutu 18025 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 janvier 2018 Dernière intervention - 8 juil. 2012 à 22:02
0
Utile
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
Commenter la réponse de ucfoutu
cs_JPh007 39 Messages postés mardi 12 août 2008Date d'inscription 17 juillet 2012 Dernière intervention - 17 juil. 2012 à 12:12
0
Utile
J'abandonne l'idée pour le moment j'y reviendrais une autre fois.

merci quand même pour vos axes de réflexion.
Commenter la réponse de cs_JPh007

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.