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 texbox

J'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,

Rechercher des sujets similaires à "textbox userform"