Erreur dans UserForm / textbox
Résolu
seblap47
Messages postés
2
Statut
Membre
-
Maurice -
Maurice -
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 C alors qu'il devrait lire C et modifier 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
Lien du fichier :
https://www.developpez.net/forums/attachments/p171735d1426418126/logiciels/microsoft-office/excel/macros-vba-excel/erreur-userform-textbox/stock.xls/
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 C alors qu'il devrait lire C et modifier 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
Lien du fichier :
https://www.developpez.net/forums/attachments/p171735d1426418126/logiciels/microsoft-office/excel/macros-vba-excel/erreur-userform-textbox/stock.xls/
4 réponses
-
Bonjour
Ci-dessous La procédure
Pour transmettre un fichier, il faut passer par un site de pièce jointe tel que cjoint.com
Va sur ce site : http://cjoint.com
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse
A+
Maurice -
merci pour la procédure.
Pour info voilà le code qui fonctionne :
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 -
bonjour
tu pense que je vais refaire ton fichier
car la je ne voie que du code
je ne peux rien faire avec ca
A+
Maurice -
Bonsoir
en plus simplePrivate Sub TextBox1_AfterUpdate() For Li = 2 To Range("A" & Rows.Count).End(xlUp).Row If TextBox1.Value = Range("A" & Li).Text Then TextBox2.Text = Cells(Li, 3) Exit Sub End If Next TextBox2.Value = "" TextBox1.Value = "" MsgBox "Gencode invalide" Li = 0 End Sub Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case 48 To 57 'n'autorise que la rentrée de chiffre KeyAscii = KeyAscii Case Else KeyAscii = 0 End Select End Sub Private Sub CommandButton1_Click() If Li = 0 Then Exit Sub Cells(Li, 3).Value = Val(TextBox2.Value) End Sub
A+
Maurice