Erreur dans UserForm / textbox
Résolu
seblap47
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
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/
A voir également:
- Erreur dans UserForm / textbox
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Dans la table des matières du document à télécharger, le chapitre 6 et ses 2 sections n'apparaissent pas. trouvez l'erreur dans la structure du document et corrigez-la. mettez à jour la table des matières. quel est le mot formé par les lettres en majuscules de la table des matières après sa mise à jour ? - Forum Word
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
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
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
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
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 simple
A+
Maurice
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