Erreur dans UserForm / textbox

Bonjour,

Avant d'expliquer mon problème je vous explique comme utiliser le fichier.

Colonne A : code barre (GENCODE)

Colonne B : références

Colonne C : quantité

Un "CommandButton" Inventaire

Premièrement, ce qu'il se passe :

1/ je clique sur Inventaire

2/ je saisi un GENCODE (100005 pour l'exemple) dans la Textbox

3/ je clique sur Modifier

4/ je vois la valeur "12" apparaître dans la Texbox Quantité (pas normal vu que la quantité en rapport avec le GENCODE "10005" est 121

5/ je modifie la quantité "12" par "7" par exemple

6/ je clique sur Valider

7/ je vois bien "7" dans la Colonne C

En résumé le code lit la Colonne B et modifie la Colonne C alors qu'il devrait lire la Colonne C et modifier la Colonne C

Deuxièmement

1/ je clique sur Inventaire

2/ je NE saisi PAS de GENCODE et/ou QUANTITE

3/ je clique sur Valider

7/ j'ai une erreur

Comment faire en sorte que je retourne dans la boucle à la place d'avoir cette erreur ?

Ce code est un code que j'ai trouvé sur un forum et que j'ai modifié.

Merci à tous pour votre aide.

Cordialement

Sébastien

19stock.zip (19.94 Ko)

Bonjour,

Pour éviter l'erreur, tu peux tester dans ton bouton Valider ...(première instruction...)

If TextBox1 = "" Or TextBox2 = "" Then TextBox1.SetFocus: Exit Sub

merci, je vais commencer par ça


pour info voilà le code qui fonctionne, merci.

Private li As Integer 'déclare la variable li (LIgne)
Private modif As Boolean 'déclare la variable modif
Private ajout As Boolean 'déclare la variable ajout

Private Sub TextBox2_Change()

End Sub

Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
modif = False 'initialise la variable modif
ajout = False 'initialise la variable ajout

End Sub

Private Sub TextBox1_AfterUpdate()
Dim pl As Range 'déclare la variable pl (PLage)
Dim x As Byte 'déclare la variable x (incrément)

If Me.TextBox1.Value = "" Then Exit Sub 'sort de la procédure si la TextBox1 est vide

'définit la plage pl (cellules éditées de la colonne A)
Set pl = Range(Cells(2, 1), Cells(Application.Rows.Count, 1).End(xlUp))
On Error Resume Next 'gestion des erreurs, en cas d'erreur passe à la ligne suivante
li = pl.Find(Me.TextBox1.Value, , xlValues, xlWhole).Row 'définit la ligne li (si aucune occurrence trouvée, génère une erreur)
If Err > 0 Then 'condition : si une erreur a été générée
    If ajout = True Then 'condition : si la variable ajout est "Vrai"
        Exit Sub 'sort de la procédure
    End If
    'sélectionne le texte de la TextBox1
    Me.TextBox1.SelStart = 0 'début de la sélection
    Me.TextBox1.SelLength = Len(Me.TextBox1.Value) 'longueur de la selection
    MsgBox "Gencode invalide"
    Exit Sub 'sort de la procédure
End If 'fin de la condition
'======================
'ici
TextBox2.Text = Cells(li, 3)
'======================
Me.TextBox2.SetFocus 'place le curseur dans la TextBox2 (Quantité)
Me.TextBox2.SelStart = 0 'début de la sélection
Me.TextBox2.SelLength = Len(Me.TextBox2.Value) 'longueur de la sélection
End Sub

Private Sub CommandButton1_Click() 'bouton "Valider"
Dim x As Byte 'déclare la variable x

If modif = True Or ajout = True Then
    For x = 1 To 2 'boucle sur les 2 textboxes

        Me.Controls("TextBox" & x).Value = Cells(li, x).Value
    Next 'prochaine Textbox de la boucle
Else
   '=========================================================
   'ici
   On Error Resume Next
    Cells(li, 3).Value = CInt(Me.TextBox2.Value) 'répercute la quantité dans la cellule
    If Err.Number Then
        On Error GoTo 0
        Exit Sub
    End If
    On Error GoTo 0
   '========================================================

End If
Unload Me 'vide et ferme l'UserForm1
UserForm1.Show 'affiche l'Userform1
End Sub

Private Sub CommandButton2_Click() 'bouton "Modifier"
modif = True 'définit la variable modif

End Sub

Private Sub CommandButton4_Click() 'bouton "Sortir"
Unload Me 'vide et ferme l'UserForm1
End Sub

Re,

Content que tu aies trouvé la solution ...

Rechercher des sujets similaires à "erreur userform textbox"