Erreur dans UserForm / textbox

Résolu/Fermé
seblap47 Messages postés 2 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 15 mars 2015 - 15 mars 2015 à 12:23
 Maurice - 15 mars 2015 à 21:28
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/

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
0
seblap47 Messages postés 2 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 15 mars 2015
15 mars 2015 à 15:22
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
0
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
0
Bonsoir

en plus simple
Private 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
0