Aide_Conversion Lb/Kg avec TextBox dans UserForm

MisterT

XLDnaute Occasionnel
Bonjour à chacun !

J'ai besoin d'aide pour solutionner le problème de la conversion Lb/Kg que je tente de faire dans un UserForm.

Une valeur numérique est mise dans le TextBox5 puis 2 OptionButton servent à sélectionner Lb ou Kg. À l'ouverture du Userform j'ai mis par défaut la valeur en Lb.

Le programme s'arrête à TextBox5.Value = TextBox5.Value * 2.2045855.

Je suis arrivé à faire fonctionner cette conversion dans une feuille de calcul et la ligne identique au TextBox5 ci-haut est Range("N4") = Range("N4") * 2.2045855. Est-ce qu'il y a des subtilités avec les TextBox ?

J'inclus le code pour la valeur du TextBox5 en numérique puis les codes pour la conversio Lb/Kg...

Merci !

Mister T
Code:
Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Ici la valeur numérique du TextBox5 fonctionne bien avec une décimale ayant un point car lorsque
'c'était une virgule, la macro d'une autre feuille utilisant la valeur du TexTBox5 indiquait
'une erreur disant que ça devait être un nombre entier ou décimale.
'la valeur du TextBox5 s'inscrit dans une cellule de la feuille du UserForm
'puis cette même valeur est utilisée dans l'autre feuille où la macro donnait l'erreur.
'IDÉALEMENT J'AIMERAIS QUE L'USAGER PUISSE ENTRER UN POINT OU UNE VIRGULE
'ET QUE ÇA FONCTIONNE, EST-CE POSSIBLE???
If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
'J'AIMERAIS AVOIR UNE VALEUR MIN DE 20,0 ET MAX DE 70,0 AVEC UN CHIFFRE ÀPRÈS LE POINT
'MÊME SI UN NOMBRE ENTIER EST ENTRÉ, COMMENT FAIRE ???
TextBox5.MaxLength = 4
End Sub

Private Sub UserForm_Activate()
Lb_OptionButton1.Value = True
Lb_Kg_Label24.Caption = "Lb"
End Sub

Private Sub Lb_OptionButton1_Click()
Tension_Conversion_Kg_Lb
End Sub

Private Sub Kg_OptionButton2_Click()
Tension_Conversion_Lb_Kg
End Sub

Public Sub Tension_Conversion_Lb_Kg()
If Lb_Kg_Label24.Caption = "Lb" Then
TextBox5.Value = TextBox5.Value / 2.2045855
Lb_Kg_Label24.Caption = "Kg"
End If
End Sub

Public Sub Tension_Conversion_Kg_Lb()
If Lb_Kg_Label24.Caption = "Kg" Then
TextBox5 = TextBox5.Value * 2.2045855
Lb_Kg_Label24.Caption = "Lb"
End If
End Sub
 

JNP

XLDnaute Barbatruc
Re : Aide_Conversion Lb/Kg avec TextBox dans UserForm

Bonjour MisterT :),
Pour que l'utilisateur puisse saisir une virgule
Code:
Private Sub TextBox5_Change()
TextBox5 = Replace(TextBox5,",",".")
End Sub
Pour la conversion, je pense que le problème vient que tu limites le nombre de caractères à 4, et ensuite tu balance une conversion à 6 décimales...
Code:
TextBox5 = Format(TextBox5.Value * 2.2045855, "00.0")
devrait fonctionner.
Bonne journée :cool:
 

MisterT

XLDnaute Occasionnel
Re : Aide_Conversion Lb/Kg avec TextBox dans UserForm

Bonjour JNP !

Merci beaucoup pour la réponse !

La question de la virgule et du point est résolue, un gros MERCI !!!
-------------------
Pour ce qui est de la conversion avec le fameux TextBox5, le problème demeure; dès que je clique sur l'OptionButton pour Kg, il y a le message "Erreur d'éxécution '13' ------ Inconpatibilité de TYPE.

Le programme s'est arrêté sur la même ligne qu'auparavant qui est en surbrillance;
TextBox5 = Format(TextBox5.Value / 2.2045855, "00.0")

Merci,
MisterT
 

MisterT

XLDnaute Occasionnel
Re : Aide_Conversion Lb/Kg avec TextBox dans UserForm

Bonjour/bonsoir Jean_Marcel !

Merci pour l'essai mais le programme bloque encore au même endroit à cette ligne avec le même message d'erreur.

Est-ce qu'il y aurait quelque chose à modifier dans les propriétés du TextBox5 ? Je suis très débutant, alors cette question n'est peut-être pas sensée...

Merci,
MisterT
 

MisterT

XLDnaute Occasionnel
Re : Aide_Conversion Lb/Kg avec TextBox dans UserForm

Bonsoir Jean-Marcel !

Merci beaucoup de porter attention à ma demande d'aide, c'est très apprécié !

J'aurais un peu de difficulté à isoler seulement cette partie avec la Conversion Lb/Kg et le TextBox5 de mon USF car ce USF contient 3 ListBox+ComboBox et 7 TextBox puis 2 OptionButton.

Ce UserForm fonctionne globalement mais avec des bogues intermittents sauf pour la Conversion Lb/Kg qui ne fonctionne pas du tout.

La majorité de ses bogues se produisent à l'ouverture du UserForm, par exemple un TextBox dont la valeur n’apparaît pas à chaque fois à l’ouverture du UserForm, ou encore à l’ouverture du même UserForm, il n’y a pas de choix sélectionné en surbrillance dans un ListBox.

Certaines anomalies sont similaires d'un ComboBox/ListBox et TextBox à l'autre.

J'ai l'impression que la déclaration des variables et la définition des types de données seraient nécessaire mais je ne suis vraiment pas famillier avec ceux-ci.

Alors, si je te fournissais le code entier de mon USF, est-ce que tu accepterais de regarder, nettoyer et corriger les codes de mon UserForm, peut-être y trouverais-tu aussi l'anomalie avec la conversion Lb/Kg associé au TextBox5 ?

C'est vraiment sous toute réserve que je te demande ceci, c'est OK si tu en as pas l'intérêt. À ce moment-là, je tenterai d'isoler la Conversion Lb/Kg.

Merci,
MisterT
 

MisterT

XLDnaute Occasionnel
Re : Aide_Conversion Lb/Kg avec TextBox dans UserForm

Bonsoir Jean-Marcel,

Merci pour le fichier et le temps que tu y a mis !

Dès que je clique sur PRESS to START, le USF et le message d’erreur INCOMPATIBILITÉ DE TYPE apparaissent simultanément et la ligne erronée est encore celle du TextBox5.

Par contre j’ai essayé en autorisant la virgule au lieu du point pour la valeur du TextBox5 et la conversion fonctionne, mais La raison pour laquelle je forçais le point dans le USF au lieu de la virgule est que ça ne fonctionnait pas et bloquait dans une autre macro de calcul de valeur cible qui donnait comme erreur; Impossible d’utiliser votre saisie. Un nombre entier ou un nombre décimal est peut-être requis.

Cette macro allait prendre la valeur de la tension du TextBox5 qui se retrouvait dans la cellule L20 après le SUBMIT. La cellule L20 inscrit toujours la tension avec une virgule mais semble être perçue différemment si dans le TextBox5 il y a une virgule ou un point. Voici cette macro;
Sub Macro_Tension_globale()
Range("E30").GoalSeek Goal:=Range("N4"), ChangingCell:=Range("O4")
End Sub


Vois-tu pourquoi la valeur du TextBox5 avec une virgule pourrait causer problème à cette Macro ?

Merci beaucoup,
MisterT
 

MisterT

XLDnaute Occasionnel
Re : Aide_Conversion Lb/Kg avec TextBox dans UserForm

Bonjour Jean-Marcel,

Tout d'abord merci beaucoup pour ta persévérance avec un débutant comme moi, j'apprécie cela énormément !!!

Le fichier que tu m'as fourni donne le même problème, dès que je clique sur PRESS to START, le USF et le message d’erreur INCOMPATIBILITÉ DE TYPE apparaissent simultanément et la ligne erronée est encore celle du TextBox5.

Est-ce qu'il y aurait des différences de paramètres ou préférence entre mon Excel et le tien, les virgules, les points ???

DANS MON FICHIER COMPLET, LORSQUE JE FORCE LA VIRGULE DANS TextBox5, LA CONVERSION FONCTIONNE MAIS LA MACRO DANS UNE AUTRE FEUILLE BLOQUE EN DEMANDANT UN NOMBRE ENTIER OU DÉCIMAL. DU MÊME FAIT, LA CELLULE L21 QUI REÇOIT LA VALEUR DU TextBox5 DEVIENT DU TEXTE AVEC UN PETIT RECTANGLE VERT DANS LE COIN HAUT GAUCHE DE LA CELLULE.

EST-CE QU'IL Y A UNE FAÇON DE S'ASSURER QUE LES TextBox CONTENANT DU NUMÉRIQUE FOURNISSENT DU NUMÉRIQUE DANS LES CELLULES ASSOCIÉES AU MOMENT DU Unload du USF?

Note: le SUBMIT est le CommandButton1 qui fait le Unload du USF.
--------------------------------------
Dans mon fichier complet, lorsque je force le POINT, tous les calculs fonctionnent sauf la conversion Lb/Kg.

Merci encore, je crois que la solution est proche...

MisterT
 

MisterT

XLDnaute Occasionnel
Re : Aide_Conversion Lb/Kg avec TextBox dans UserForm

Bonjour Jean-Marcel,

Dans (outil/option/internationnal), j'ai décoché "Utiliser le séparateur système" puis j'ai laissé la virgule dans le champs "Séparateur de décimale" et ton fichier fonctionne. Merci !

La macro qui charge la cellule L21 est dans le Module "WELCOMEpage_Conversion_Lb_Kg()"

Donc la conversion Lb/Kg fonctionne avec la virgule dans TextBox5 mais la valeur générée du TextBox5 est en TEXTE, ce qui cause le problème dans une autre macro d'une autre feuille qui demande un nombre ENTIER ou DÉCIMAL.

Alors quoi faire, je ne comprends pas les valeurs que tu as mentionnées, désolé:
Cbool
Cbyte
Cint
Etc .

Est-il possible de forcer la cellule L21 à demeurer un nombre même si elle reçoit une valeur texte du TextBox5 ?

Lorsque je regarde le format de la cellule avec la souris bouton droit/format de la cellule, elle est inscrite comme un nombre mais la case de la cellule a un triangle vert dans le coin haut gauche puis la note qu'il s'agit d'un format texte.

Si je convertis cette valeur en nombre, mon autre macro fonctionne.

Quoi faire ???

Merci
MisterT
 

MisterT

XLDnaute Occasionnel
Re : Aide_Conversion Lb/Kg avec TextBox dans UserForm

Bonjour Jean-Marcel,

J'ai trouvé comment la cellule L21 peut demeurer un nombre décimale même si le TextBox5 lui envoi un format texte;

.Range("L21") = CDbl(TextBox5.Value)

Merci infiniment pour l'aide qui a mené à la solution !
----------------------------------------------

Maintenant j'aimerais bien savoir comment accepter dans le TextBox5 les valeurs comprises entre Min de 20,0 Lb et Max de 70,0 Lb lorsque l'affichage est en Lb, puis entre Min de 9,0 Kg et Max de 32,0 Kg losque l'affichage est en Kg...

Accepterais-tu de l'insérer dans le code du fichier joint s'il te reste encore un peu de patience pour m'aider ?

Merci !
MisterT
 

Pièces jointes

  • JeanM_ WELCOME page .zip
    24.5 KB · Affichages: 32

MisterT

XLDnaute Occasionnel
Re : Aide_Conversion Lb/Kg avec TextBox dans UserForm

Bonjour,

Se peut-il qu'il ait été changé par B21 dans un de tes fichiers ?

Private Sub CommandButton1_Click()
With Sheets("WELCOME")
.Range("L21") = CDbl(TextBox5.Value)
.Range("L20") = Lb_Kg_Label24.Caption
End With
Unload Me
End Sub

Merci,
 

MisterT

XLDnaute Occasionnel
Re : Aide_Conversion Lb/Kg avec TextBox dans UserForm

Merci infiniment Jean-Marcel,

C'est vraiment génial ce que tu as fais et surtout en aussi peu de temps, tu EXCELles vraiment !!!
-------------------------
Je ferai un autre post concernant mon même projet pour profiter à chacun, il se nommera "Lancer une Macro d'une autre feuille"; En étant sur la Sheets("WELCOME"), je veux lancer une Macro qui s'exécutera dans la tout en restant avec la Sheets("WELCOME") à l'écran.

Je le fais actuellement en faisant un Select de la Sheets("Feuille Calcul") puis lancer la macro puis un Select de la Sheets("WELCOME") pour y revenir sauf que ceci fait un Flash du fait de sauter d'une feuille à l'autre...

...alors si le coeur t'en dit, une solution de toi serait la bienvenue.

Merci encore de ta générosité !!!

MisterT
 

MisterT

XLDnaute Occasionnel
Re : Aide_Conversion Lb/Kg avec TextBox dans UserForm

J'ai corrigé mon post précédent, il manquait le nom d'une feuille que j'ai mis en Bold bleu;
-------------------------

Merci infiniment Jean-Marcel,

C'est vraiment génial ce que tu as fais et surtout en aussi peu de temps, tu EXCELles vraiment !!!
-------------------------
Je ferai un autre post concernant mon même projet pour profiter à chacun, il se nommera "Lancer une Macro d'une autre feuille"; En étant sur la Sheets("WELCOME"), je veux lancer une Macro qui s'exécutera dans la Sheets("Feuille Calcul") tout en restant avec la Sheets("WELCOME") à l'écran.

Je le fais actuellement en faisant un Select de la Sheets("Feuille Calcul") puis lancer la macro puis un Select de la Sheets("WELCOME") pour y revenir sauf que ceci fait un Flash du fait de sauter d'une feuille à l'autre...

...alors si le coeur t'en dit, une solution de toi serait la bienvenue.

Merci encore de ta générosité !!!

MisterT
 

MisterT

XLDnaute Occasionnel
Re : Aide_Conversion Lb/Kg avec TextBox dans UserForm

Bonjour Jean-Marcel !

Tu es vraiment fort !!!

Merci beaucoup une fois de plus pour ton aide, ta suggestion fonctionne à merveille, j'ai inséré les lignes suggérées comme suit;

Public Sub WELCOMEpage_Conversion_Kg_Lb()
Application.ScreenUpdating = False
If Range("L20") = "Kg" Then
Range("L21") = Format(CDbl(Range("L21").Value) * 2.2045855, "00.0")
Range("L20") = "Lb"
Range("L21") = CDbl(Range("L21").Value)
Sheets("Feuille Calcul").Select
Application.Run "'USERFORM_TopNotch_V.02.xls'!Macro_Tension_globale"
Sheets("WELCOME").Select
End If
Application.ScreenUpdating = True
End Sub

Pour le nom du fichier en Rouge Bold, est-ce qu'il y a un nom du genre ThisWorbook qui fera automatiquement référence à ce fichier précisément puisqu'à chaque fois que je change le nom du fichier pour une autre version, je dois modifier aussi le nom du fichier dans cette Macro ?

Un gros MERCI encore Jean-Marcel !

MisterT
 

Discussions similaires

Statistiques des forums

Discussions
312 023
Messages
2 084 715
Membres
102 637
dernier inscrit
TOTO33000