Lien entre textbox et combobox

cs_Fabian123
Messages postés
180
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
22 novembre 2013
- 29 févr. 2008 à 15:12
bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
- 29 févr. 2008 à 17:39
Me revoilà! salut à tous!

voici ma nouvelle question (pour ceux qui suivent mes problèmes!)

j'ai donc un fichier.txt dans lequel j'ai des données réparties sur trois colonnes...

La première colonne (qui correspond aux noms d'articles) est liée a une combobox. lorsque je déroule celle-ci, elle m'affiche donc les noms d'articles.

ce que je souhaiterais faire, c'est, l'orsque je sélectionne un article dans la combobox, les deux textbox (qui se trouvent dans le meme userform) affichent les valeurs des deux autres colonnes (qui sont respectivement le prix et la quantité)

exemple:

tableau du fichier.text

Pain   1.80   15
Eau   0.75   20

Je sélectionne dans mon combobox "eau" et il m'affiche 0.75 dans une premiere textbox et 20 dans une seconde.

Merci d'avance pour votre aide...

je vous laisse le début de code que j'ai, mais il me permet seulement de lier la combobox et le fichier.txt...

Private Sub UserForm_Activate()
'ouverture du fichier et lecture ligne par ligne
Open "c:\essai.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, ligne$
ComboBoxArticle.AddItem Mid(ligne$, 1)
Loop
Close #1
End Sub

4 réponses

LIBRE_MAX
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
29 févr. 2008 à 15:33
Salut,
Si 0.75  et 20 se trouve sur la même ligne, insères les,
en même temps que l' article mais dans une liste box en arrière plan  (Visible=False)


Line Input #1, ligne$
ComboBoxArticle.AddItem Mid(ligne$, 1)
List1.Additem Mid(ligne$, PositionDebut)


Et lorsque tu sélectionnes un item dans ton combo,
et grace à la propriété ListIndex, tu affectes à tes texbox
les valeurs extraites de ta listbox fantome.
Etant donné que ListIndex du combo correspond à ListIndex de la listBox







<hr />

... Y'en a même qui disent qu'ils l'ont vu voler.



<hr />





/PRE>
0
cs_Fabian123
Messages postés
180
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
22 novembre 2013

29 févr. 2008 à 15:50
Merci,

mais en fait, je me rend compte que mon code est pas bon, il m'affiche dans mon combobox la ligne compete (Eau   0.75   20) alors que je voudrais juste qu'il m'affiche 'eau'...


Si quelqu'un peut m'aider...


 


 
0
LIBRE_MAX
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
29 févr. 2008 à 16:04
Tout est dans Mid(ligne$, 1, NbCaractère)

Si les libéllé des articles ont une longueur fixe, 16 par exemple,
tu extraies les 16 premiers caractères de ta ligne.
Mid(ligne$, 1, 16)

Si ton fichier comporte des séparateur regardes du côté de la fonction Split.

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
/PRE>
0
bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
29 févr. 2008 à 17:39
Salut,

et oui ! d'accord avec Libre_Max, un fichier texte c'est pas un tableau excel ! c'est pas par ce que
tu ecris tes données sous forme de colonnes que ce sont des colonnes.
Ce que je ne comprend pas c'est pourquoi tu travails sur un fichier text a partir d'excel alors qu'il serait si simple de
travailler directement dans excel et si besoin de creer un fichier texte le moment venu ?!?!

Donc maintenant comme te la dit Libre_Max il va te falloir travail a decomposer tes chaine de characters. Vu que tu as séparé tes pseudo colonnes par des espaces tu pourrais les utiliser pour decomposer tes chaines.
Par exemple si tes colonnes sont separées par un seul espace tu peux comme ceci :

Dim PrixArticle As String, MaChaine As String ' ou MaChaine represente la ligne extraite du fichier text
PrixArticle = Replace(MaChaine,Left(Name, Application.Search(" ", MaChaine, 1),"") ' on enleve le nom de l'article et le premier espace
PrixArticle = Left(Name, Application.Search(" ", PrixArticle, 1) - 1) ' on  recupere que le prix

Comme tu peux le voir c'est quand pas tres conviviale de travail sur des fichiers text

A+
0