Completer une listbox en encodant une reference dans une textbox
cs_Fabian123
Messages postés180Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention22 novembre 2013
-
16 mars 2008 à 17:12
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
17 mars 2008 à 21:26
Bonjour,
voilà mon souci:
j'ai une feuille excel de trois colonnes, la premieres correspondant à une reference d'article (1111, 2222, ...) la deuxieme correspondant à l'article et la troisieme au prix de l'article.
dans un userform, j'ai un textbox et une listbox, jesouhaiterais que l'utilisateur puisse encoder la référence dans la textbox et lorsqu'il appuye sur enter l'article et son prix s'affichent dans les deux colonnes de ma listbox. de plus, je souhaiterais qu'il puisse y ajouter plusieurs fois le meme article...
je ne sais par ou commencer pour le code... quelqu'un peut m'aider? (je débute en vba...)
cs_bouf
Messages postés114Date d'inscriptionlundi 6 septembre 2004StatutMembreDernière intervention20 mars 2008 16 mars 2008 à 21:09
Salut,
quel rapport avec la feuille excel et le userform ?
Pour ajouter qqch dans un listbox utilise : additem : listbox1.additem textbox.text
pour que cela fonctionne sur la touche enter du textbox utilise l'evenement :
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
if keyascii=13 then ... si la touche enter (code 13) est appuyer alors la suite de ton prog
End Sub
regarde sur le forum, il y a plein d'exemple de toutes sortes sur les listview, combobox et texbox.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 17 mars 2008 à 10:08
Sous Excel, tu dois utiliser KeyDown pour intercepter la touche ENTER. KeyPress ne fonctionne pas pour cette touche.
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then ...
Une fois la touche interceptée, tu dois faire une recherche sur ta feuille pour trouver le code entré et pouvoir inscrire sa description et/ou son prix.
Fais une recherche sur FIND dans ton aide.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
cs_Fabian123
Messages postés180Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention22 novembre 2013 17 mars 2008 à 12:08
Bonjour,
j'ai recherché dans l'aide "FIND" et voici le code que j'en ai fait pour afficher l'article et le prix dans la laistbox en fonction de la reference encodée dans la textbox... mais il m'affiche une 'erreur d'execution 424 : objet requis' en surlignant la ligne que je vous ai mise en rouge... j'ai essayé de changer la partie xlvalues par "sheets("Listing des Articles..." mais ça ne fonctionne pas non plus...
en fait, quand il surligne cette ligne en jaune, si je pointe sur la partie textbox3, j'ai un petit commentaire qui apparait près du pointeur de la souris avec la valeur que j'ai encodée (donc correct) et lorsque je pointe 'xlvalues', il m'affiche en commentaire un nombre négatif et je ne comprend pas d'ou il vient...)
merci de m'aider...
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim i As Long
i = 0
If KeyCode = vbKeyReturn Then
With Sheets("Listing des Articles").Range("A2").Offset(i, 0).Value
Set c = .Find(TextBox3.Value, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
ListBox2.AddItem
ListBox2.List(j, 0) = Sheets("Listing des Articles").Range("H2").Offset(i, 0).Value
ListBox2.List(j, 1) = Format(CStr(Sheets("Listing des Articles").Range("I2").Offset(i, 0).Value), "0.00")
j = j + 1
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
cs_Fabian123
Messages postés180Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention22 novembre 2013 17 mars 2008 à 13:40
en recherchant sur le net, j'ai trouvé une autre méthode d'approche... j'ai donc un nouveau code, qui fonctionne, mais seulement pour ma première ligne..., quelle que soit le chiffre encodé, il m'affiche la première ligne...
je ne trouve pas d'ou viens mon erreur...
de plus, je fonctionne sur des références de 4 chiffres, hors, que je tape '1111' dans ma textbox ou '1', il m'affiche la première ligne d'articles...
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
Dim i As Long
i = 0
nomCherche = TextBox3.Value
On Error Resume Next
Sheets("Listing des Articles").Range("A2:A100").Find(What:=nomCherche, LookIn:=xlValues).Select
If Err = 0 Then
ListBox2.AddItem
ListBox2.List(j, 0) = Sheets("Listing des Articles").Range("H2").Offset(i, 0).Value
ListBox2.List(j, 1) = Format(CStr(Sheets("Listing des Articles").Range("I2").Offset(i, 0).Value), "0.00")
j = j + 1
Else
MsgBox "Pas trouvé"
End If
i = i + 1
On Error GoTo 0
End If
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?