userform interactif

  • Initiateur de la discussion Emma
  • Date de début
E

Emma

Guest
coucou, tout le monde,

déjà de retour avec mes questions de novices.


existe t il une formule magique pour que lorsqu' on entre une valeur dans un textbox on puisse incrémenter un -1 dans un autre textbox du même userform.? Pas claire ma question??????

en fait associé deux texbox : le premier si on entre une valeur fait diminué de 1 le second. et cela avec le userform apparant.




merci de votre aide et bonne nuit . Mes puces m'appellent.
 
@

@+Thierry

Guest
Bonsoir Emma, le Forum

Ta question est pas si facile qu'elle en a l'air... Je viens d'en discuter en Chat avec Didier_mDF...

En fait dans un classeur vierge tu dessines un UserForm avec deux TextBox (TextBox1 et TextBox2)

Puis tu essaies ce Code :
Option Explicit
Dim TextBox1Value As String, TextBox2Value As Double

Private Sub TextBox1_Enter()
TextBox1Value = TextBox1.Value
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Value = TextBox1Value Then Exit Sub

If TextBox2 = "" Then
TextBox2Value = 0
Else
TextBox2Value = TextBox2.Value
End If
TextBox2.Value = TextBox2Value - 1

End Sub


En fait le premier réflex serait d'écrire :
Option Explicit

Private Sub TextBox1_Change()
Dim TextBox2Value As Double
If TextBox2 = "" Then
TextBox2Value = 0
Else
TextBox2Value = TextBox2.Value
End If
TextBox2.Value = TextBox2Value - 1
End Sub

Mais alors ta TextBox2 va être incrémentée de moins -1 à chaque entrée d'un caractère en TextBox1... Donc je ne vois que la première méthode pour l'instant... Bien entendu faudrait aussi faire des tests si la TextBox2 contient du numérique... (of course)

A voir si déjà c'est dans l'optique de ce que tu souhaites obtenir...

Bonne Soirée
@+Thierry
 
M

myDearFriend

Guest
Bonsoir Emma,
Re- Thierry,

Ci-dessous peut-être une autre approche :

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Static Flag As Boolean
If Not Flag Then
Flag = True
TextBox2.Text = Val(TextBox2) - 1
End If
End Sub



Cordialement,
Didier_mDF
 
E

Emma

Guest
bonjour à tous,

d'abord merci à Thierry et Mydearfriend pour leur aide.
Ils fonctionnent avec des valeurs numériques, cependant celui de Thierry, si on reclique par inadvertance dans un textbox, il valide la saisie.

Les deux programmes fonctionnent, j'ai mélangé un peu les deux pour pouvoir les adapter à mon programme.
bien sûr option explicit est présent


(des optionbutton, j' en ai 32) don 32x cette procédure avec les réferences qui change .
Private Sub OptionButton2_Click()
If CheckBox1 = True Then
TextBox11.Value = Sheets("DEMANDE ET RESPONSABLES").Range("d3").Value
Else
TextBox11.Value = Sheets("DEMANDE ET RESPONSABLES").Range("e3").Value
End If
End Sub

je dois répeter 10 fois cette procédure (TextBox1, Textbox2,.......TextBox10)

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Static flag As Boolean
If Not flag Then
flag = True
TextBox11.Text = Val(TextBox11) + 1
End If
End Sub
j'ai pensé à un module de classe TxtBoxClasse

Public WithEvents TxtBox as MSForms.TextBox
Private Sub TxtBox_KeyPress(Byval keyAscii as MSForms.returinteger)
Static flag As Boolean
If Not flag Then
flag = True
TextBox11.Text = Val(TextBox11) + 1
End If
End Sub

Puis dans mon userform_Initialize
dim TxtBoxClasses (1 to 10) as TxtBoxClasse
dim i as integer
for i=1 to 10
Set TxtBoxClasses(i)=New TxtBoxClasse
set TxtBoxClasses(i).TxtBox= Userform1.Controls("TextBox" & i)
next i
end sub

Cependant il ne reconnait pas textbox11 dans le module de classe et je ne sais pas comment le déclarer.

Quelqu'un a une idée??????

merci et bonne soirée
 
M

myDearFriend

Guest
Bonjour Emma, @+Thierry, Ti et le Forum

Emma, dans le module de classe, peut-être pourrais-tu essayer :

Public WithEvents TxtBox as MSForms.TextBox
Private Sub TxtBox_KeyPress(Byval keyAscii as MSForms.returinteger)
Static flag As Boolean
If Not flag Then
flag = True
UserForm1.TextBox11.Text = Val(UserForm1.TextBox11) + 1
End If
End Sub


Cordialement.
Didier_mDF
 

Discussions similaires

Réponses
10
Affichages
636

Membres actuellement en ligne

Statistiques des forums

Discussions
312 505
Messages
2 089 071
Membres
104 020
dernier inscrit
Mzghal