Comment fait on pour définir la valeur d'un textbox

  • Initiateur de la discussion thuan
  • Date de début
T

thuan

Guest
Bonjour,
J'ai un petit pb j aimerai calculer les harmoniques pour une fréquence donnée. pour cela je demande dans un textbox la valeur de la fréquence, puis l'utilisateur clic sur un commandbutton nommée calcul pour lancer le calcul, dans 3 textbox j'affiche le résult pour l'harmonique 2, l'harmonique 3, l'harmonique 4.
Pour ce faire il faut multiplier la valeur de la fréquence au début par 2 ou 3 ou 4 suivant l'harmonique souhaiter.
Pouvez vous m'aider... MERCI D'AVANCE
 
@

@+Thierry

Guest
Bonjour Thuan, Arnaud, Sebb, Le Forum

Non ! Thuan, dans le code de ton "Classeur1.xls" tu n'es pas dans l'évènement "TextBox1_Change()" mais dans l'évènement "UserForm_Initialize" ce qui génère bien l'Erreur d'excécution '13' : Incompatibilité de type... (Normal car au lancement du UserForm ces TextBox sont Vides)

Non !, d'ailleurs en voyant de plus près, je ne préconise même pas l'évènement "TextBox1_Change()" mais simplement l'évènement "CommandButton1_Click" pour lancer tes Caculs sur les TextBox. Ceci pour la bonne et simple raison que lors du changement de la TextBox1 les autres TextBox sont logiquement encore Vides...

Je ne sais pas ce que tu veux rééllement obtenir mais voici ton Code un peu remanié et plus propre :



Option Explicit

Private Sub UserForm_Initialize()
Dim i As Integer

'Ici j'imagine que tu voulais faire une boucle pour incrémenter les données en ComboBox...
For i = 1 To 3

'Cette Boucle va aller chercher les valeurs contenues dans les 2 Feuilles de A1 à A3 (soit 6 Items)
With ComboBox1
.AddItem Sheets("Feuil1").Range("A" & i)
.AddItem Sheets("Feuil2").Range("A" & i)
End With

Next 'élément suivant de la boucle

End Sub

Private Sub CommandButton1_Click()

'Ici j'ajoute un Test pour être sûr qu'on a bien des valeur numériques dans les TextBox
If Not IsNumeric(TextBox1) Or Not IsNumeric(TextBox2) _
Or Not IsNumeric(TextBox3) Or Not IsNumeric(TextBox4) Then Exit Sub

Select Case TextBox1.Value
Case TextBox2.Value: TextBox2.Value = Int(TextBox1.Value) * 2
Case TextBox3.Value: TextBox3.Value = Int(TextBox1.Value) * 3
Case TextBox4.Value: TextBox4.Value = Int(TextBox1.Value) * 4
End Select

'WSCol.Activate <<<<<< Non existant dans ton exemple
End Sub


Private Sub ComboBox1_Change()
'Ici j'ajoute un Test car ton code ci-dessus est subordonné à ce qu'il y ait autant
'de feuilles que d'items dans la ListBox (Si ce n'est pas le cas on sort)
If ComboBox1.ListIndex + 1 > Sheets.Count Then Exit Sub

If ComboBox1.ListIndex <> -1 Then Worksheets(ComboBox1.ListIndex + 1).Activate
End Sub

Bon Week End à Tous et Toutes
@+Thierry
 
T

thuan

Guest
Bonjour Thierry, Arnaud, Sebb, Le Forum
J ai essayé de tapper ton code donc tout ce passe bien qud je lance le code mais le seul problème c'est qui ne s affiche rien dans les textobox 2,3,et 4 il me dit que j ai un pb un manque un objet je ne sais pas trop ce qu il attend.
voici le code que je tappe:

Private Sub ComboBox1_Change()
If ComboBox1.ListIndex + 1 > Sheets.Count Then Exit Sub
If ComboBox1.ListIndex <> -1 Then Worksheets(ComboBox1.ListIndex + 1).Activate
End Sub

Private Sub CommandButton1_Click()
WSCol.Activate
Unload UserForm1
End Sub

Private Sub TextBox1_Change()
End Sub

Private Sub TextBox2_Change()
End Sub

Private Sub TextBox3_Change()
End Sub

Private Sub TextBox4_Change()
End Sub

Private Sub UserForm_Initialize()
Dim i As Integer
i = 33
With ComboBox1
.AddItem Sheets("Moteur Porte Meule").Range("C" & i)
.AddItem Sheets("Moteur Porte Pièce").Range("C" & i)
.AddItem Sheets("Moteur de Taillage").Range("C" & i)
.AddItem Sheets("Broche Porte Meule").Range("C" & i)
.AddItem Sheets("Broche Porte Pièce").Range("C" & i)
.AddItem Sheets("Ensemble Bloc Renvoi").Range("C" & i)
.AddItem Sheets("Bloc Serrage").Range("C" & i)
.AddItem Sheets("Palier Intermédiaire Taillage").Range("C" & i)
.AddItem Sheets("Porte Molette Taillage").Range("C" & i)
End With
End Sub

Private Sub CommandButton2_Click()

If Not IsNumeric(TextBox1) Then Exit Sub
Select Case TextBox1.Value
Case TextBox2.Value: TextBox2.Value = Int(TextBox1.Value) * 2
Case TextBox3.Value: TextBox3.Value = Int(TextBox1.Value) * 3
Case TextBox4.Value: TextBox4.Value = Int(TextBox1.Value) * 4
End Select
'WSCol.Activate
End Sub
 
@

@+Thierry

Guest
Bonsoir Thuan, Arnaud, Sebb, Le Forum

Impossible à gérer, désolé, je ne peux pas comprendre ce que tu expliques ainsi (does not compute !!! lol)

"J ai essayé de tapper ton code donc tout ce passe bien qud je lance le code mais le seul problème c'est qui ne s affiche rien dans les textobox 2,3,et 4 il me dit que j ai un pb un manque un objet je ne sais pas trop ce qu il attend

On va disséquer .....

Partie AAA)
tout ce passe bien qud je lance le code

Donc l'initialise se passe bien (j' en conclus que le userform s'affiche sans erreur ?)

PS partie AAA sinon (erreur à l'initialise) une des feuilles n'existe pas ou est non-correctement orthographiée.....


Partie BBB)
mais le seul problème c'est qui ne s affiche rien dans les textobox 2,3,et 4

Donc les TextBox sont vides quand le UserForm est affiché (pour moi c'est normal, elle ne vont réagir que lorsque tu click sur le "CommandButton2" une fois que tu les as renseignée ces TextBox)


Partie CCC)
il me dit que j ai un pb un manque un objet je ne sais pas trop ce qu il attend

Là je ne sais plus à quel moment on est ? Initialise ???, CommandButton2_Click() ???, CommandButton1_Click() ???, c'est impossible, je ne suis pas devin ! (tu devrais avoir une ligne de code surlignée en jaune quant tu débugues sur le message d'erreur...)

Voilà à ce stade je ne peux rien de plus.

Et malgré mais explications, tu persites avec tous ces :
Private Sub TextBox1_Change()
End Sub
Private Sub TextBox2_Change()
End Sub
Private Sub TextBox3_Change()
End Sub
Private Sub TextBox4_Change()
End Sub

....Qui ne servent strictement à rien ....

Sinon aussi ce "WSCol.Activate" semble bizarre comme je l'avais signalé au préalable... As-tu une feuille dont le nom d'object (pas d'onglet) à été défini soit par les propriétés de l'explorateur d'objets de VBE, soit par est-ce une variable publique initialisée par un Set d'Objet dans un Autre module...... çà aussi c'est une source d'erreur...

Bon Courage et bonne semaine
@+Thierry
 
T

thuan

Guest
Bonjour Thierry, Arnaud, Sebb, Le Forum

Désoler mes explications ne sont peut etre pas très clair mais le truc c'est que je ne capte pas pas trop ce que VB me demande.
Peut tu me réaliser son excel un petit code qui réaliserais cette fonction:
Objets:
- 2 TextBox
- 1 CommandButton

On saisi une valeur numérique dans la TextBox1 et lorsque l on clique sur le CommandButton, on voit afficher 2*"la valeur numérique de la textBox1"

Exemple:
Textbox1 = 4
On clic sur le boutton "Calcul"
et on a de afficher dans la TextBox2 = 8

Merci pour ton aide
 
T

thuan

Guest
Bonjour Thierry, Arnaud, Sebb, Le Forum

en fait c'est bon je te remercie j 'ai trouver la solution
Sauf que j'aimerais bien que mes nombres ne sont pas des entiers mais des décimals comment les définir.
 
@

@+Thierry

Guest
Bonjour Thuan, Arnaud, Sebb, le Forum

Ah enfin une question qui n'est pas longue à répondre...

Quand tu écris ceci :
Case TextBox2.Value: TextBox2.Value = Int(TextBox1.Value) * 2

C'est que tu veux retourner un Integer avec le "Int(TextBox1.Value) * 2"

Si tu veux retourner un nomber avec deux décimales par exemple essaies comme ceci :
Case TextBox2.Value: TextBox2.Value = Round((TextBox1.Value * 2), 2)

Et pour trois décimales :
Case TextBox2.Value: TextBox2.Value = Round((TextBox1.Value * 2), 3)

Et si tu veux un Format spécifique tu peux aussi faire ceci :
Case TextBox2.Value: TextBox2.Value = Format(Round((TextBox1.Value * 2), 2), "# ###.#0")

Bon Appétit
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 785
Messages
2 092 094
Membres
105 194
dernier inscrit
Ateups