Plusieurs Textbox sur un userform
Bonjour à tous,
Je suis entrain de me faire un petit programme qui contient plusieurs textBox sur un userform. De plus le nombre de textBox est amené à évolué suivant l'entrée de nouveaux produits.
Mon problème est le suivant :
J'utilise la même fonction sur chaque textBox (Code ci-dessous), que je dois donc copier coller à chaque fois que j'ai besoin d'en rajouter une.
Ici l'exemple du code sur 2 textBox de l'userform
Private Sub quantite1_Change() 'Produit1
If quantite1.Value = "" Then
MessageErreur1.Visible = False
Total1.Caption = 0
ElseIf IsNumeric(quantite1.Value) Then
MessageErreur1.Visible = False
Total1.Caption = CLng(quantite1.Value) * CLng(Prix1.Caption)
Else
MessageErreur1.Visible = True
End If
'Calcul le total à payer et l'insère dans la textbox
Dim i As Integer
Dim res As Long
res = 0
For i = 1 To NbrProduit
res = res + CLng(UserForm1.Controls("Total" & i))
Total.Caption = res + CLng(UserForm1.Controls("Total" & i))
Next i
End Sub
Private Sub quantite2_Change() 'Produit2
If quantite2.Value = "" Then
MessageErreur1.Visible = False
Total2.Caption = 0
ElseIf IsNumeric(quantite2.Value) Then
Total2.Caption = CLng(quantite2.Value) * CLng(Prix2.Caption)
MessageErreur1.Visible = False
Else
MessageErreur1.Visible = True
End If
'Calcul le total à payer et l'insere dans la textbox
Dim i As Integer
Dim res As Long
res = 0
For i = 1 To NbrProduit
res = res + CLng(UserForm1.Controls("Total" & i))
Total.Caption = res + CLng(UserForm1.Controls("Total" & i))
Next i
End Sub
etc... sur plusieurs texboxJ'aimerais donc savoir si il est possible d'alléger ce code.
Pour plus de précision pour l'exemple ci-dessus :
- 2 texBox qui représentent une quantité sur 2 produits
- La quantité est multiplié par le prix unitaire
- Le prix total à payer est renvoyé par la variable res
Merci beaucoup pour vos réponses.
PS: Je suis tout nouveau sur le forum
Bonjour B03 et
Ce que tu cherches s'appelles un module de classe
Voir par exemple : https://forum.excel-pratique.com/excel/module-de-classe-sur-textbox-69780#p398433
@+
Super !
Merci beaucoup je vais y jeter un coup d'oeil ;)
Bonjour,
Tu peux aussi utiliser une procédure commune à tes boutons (code non testé) :
Private Sub quantite(n)
If Controls("quantite" & n) = "" Then
MessageErreur1.Visible = False
Controls("Total" & n).Caption = 0
ElseIf IsNumeric(Controls("quantite" & n)) Then
MessageErreur1.Visible = False
Controls("Total" & n).Caption = CLng(Controls("quantite" & n)) * CLng(Controls("Prix" & n).Caption)
Else
MessageErreur1.Visible = True
End If
'Calcul le total à payer et l'insère dans la textbox
Dim i As Integer
Dim res As Long
res = 0
For i = 1 To NbrProduit
res = res + CLng(UserForm1.Controls("Total" & i))
Total.Caption = res + CLng(UserForm1.Controls("Total" & i))
Next
End Sub
Private Sub quantite1_Change(): quantite 1: End Sub
Private Sub quantite2_Change(): quantite 2: End Sub
Private Sub quantite3_Change(): quantite 3: End Sub
Private Sub quantite4_Change(): quantite 4: End Sub
Private Sub quantite5_Change(): quantite 5: End Sub
'Etc.Cordialement,