fonction FIND

fabian123

XLDnaute Occasionnel
Bonjour à toutes et tous,

voici mon probleme,

j'ai une feuille excel avec trois colonnes, une correspondant à une référence, une correspondant à l'article et la dernière au prix de cet article

ex:

colA ColB ColC
1111 pomme 0.50€
2222 poire 0.48€

j'ai un userform dans lequel j'ai placé un textbox et une listbox.
quand l'utilisateur encode une référence et appuye sur 'enter' l'article et son prix (correspondant à la référence encodée s'affiche dans la listbox)

Seulement avec mon code, je n'affiche que la première ligne d'article... il ne reconnait pas les autres références... je n'arrive pas à placer plusieurs articles (et plusieurs fois le meme) dans la listbox...

de plus, lorsque j'ai appuyé sur Enter, le pointeur se place ailleurs dans le userform, hors je souhaiterais que le textbox reste actif afin d'encoder plusieurs references à la suite (sans devoir a chaque fois reprendre la souris pour venir cliquer dans la textbox...)

voici mon code, merci pour votre aide...


Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

If KeyCode = vbKeyReturn Then
Dim i As Long
i = 0
nomCherche = Format(TextBox3.Value, "0000")
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 "Veuillez introduire une référence valide"
End If
i = i + 1
On Error GoTo 0
End If
End Sub
 

Spitnolan08

XLDnaute Barbatruc
Re : fonction FIND

Bonjour,

sans boucle difficile de la boucler...
Un début de piste :
Code:
For j =1 to n
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")
Next
où n est le nombre d'éléments du tableau

Cordialement
 

fabian123

XLDnaute Occasionnel
Re : fonction FIND

salut


j'ai essayé ceci, mais ça ne marche toujours pas... je vais encore essayer, je débute et j'ai parfois un peu de mal..! (parceque je suis certain que la solution à mon probleme est toute simple, faut juste que je comprenne ce que je dois faire!)

merci pour ton coup de main


For j = 0 To Sheets("Listing des Articles").Range("h2:i100")
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
Next j
 

Spitnolan08

XLDnaute Barbatruc
Re : fonction FIND

Re,

Lorsque tu écrit:
Code:
 For j = 0 To Sheets("Listing des Articles").Range("h2:i100")
j ne trouve pas de correspondance pour sa borne supérieure donc ça bug.

La borne supérieure doit être un entier. Si ta plage de données va de H2 à I100 il te faut soit indiquer j=0 to 98 soit utiliser cette syntaxe :
Code:
For j = 0 To Sheets("Listing des Articles").Range("I100").end(xlup).row
qui te donne le numéro de la dernière ligne contenant une valeur dans la colonne I.

Il existe encore d'autres possibilités. Cela dépend du fichier et des données.

Cordialement
 

fabian123

XLDnaute Occasionnel
Re : fonction FIND

Salut Spitnolan08,

j'ai rééssayé mais ça ne fonctionne pas... je vais essayer d'expliquer plus clairement ce que je veux faire...

il s'agit d'un petit progr de gestion d'une boutique.

j'ai donc dans une feuille excel les infos suivantes:

- colonneA : contient des références (4 chiffres)
- colonneB : contient les catégories d'articles (chaque article est lié à une catégorie, il y en a trois au total (Alimentaire, NonAlimentaire et Livres)
- colonneC : Contient les articles à vendre
- colonne D : Contient le prix des articles.

Dans un userform j'ai placé les objets suivants:

- une textbox
- 2 listbox
- 3 optionbuttons. (correspondant chacun à une catégorie d'articles)

l'userform sert donc à encoder les articles vendus. Je souhaiterais que l'utilisateur ai deux possibilités pour lui encoder les articles:
- 1ère possibilité:
il choisi, via un des optionbutton, une catégorie d'article (alimentaire, non alimentaire ou livres) les articles (et leurs prix) de cette catégorie sont alors affiché dans la première listbox (elle affiche donc une fois chaque article). L'utilisateur double-clique alors sur un article et celui-ci est 'copié/collé' dans la seconde listbox. Il peut ainsi encoder plusieurs fois le meme article. Au final la listbox2 lui donne l'ensemble des articles vendu.
Pour cette possibilité, pas de problème ça marche!

- 2ème possibilité:
il encode la référence de l'article (4chiffres) dans la textbox et lorsqu'il appuye sur la touche 'Enter' l'article (et sont prix) s'affiche directement dans la seconde listbox. (comme pour l'autre possibilité, il peut encoder plusieurs fois le meme article).
Pour cette possibilité, ça marche pas!!


Voilà j'espere avoir été un peu plus clair...
 

Discussions similaires

Réponses
4
Affichages
257

Statistiques des forums

Discussions
312 913
Messages
2 093 534
Membres
105 752
dernier inscrit
fred13340