Récupérer une donnée parmi d'autres dans une combo

ndsaerith Messages postés 304 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 10 mai 2017 - 3 févr. 2004 à 11:22
cs_wape Messages postés 262 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 décembre 2010 - 4 févr. 2004 à 11:28
Salut tout le monde

Voila, j'ai une combo où j'ai afficher plusieurs données d'un enregistrement (g mis le code après vous verrez) et des espaces entre eux>. Mais j'aimerais récupérer ces valeurs sur le clic sur un des choix de la liste que la combo me propose.

Le pb est donc que la seule chose que j'arrive à récupérer, est l'ensemble du texte de la combo et pas juste la donnée que je veux.

Voila mon code pour remplir la combo :

Set req_periode = db.OpenRecordset("select * from dist_periode") (dist periode est une requete sous access qui est select distinct num_periode from periode)

If req_periode.RecordCount > 0 Then
req_periode.MoveFirst
Do While req_periode.EOF = False
numero_periode = req_periode!nombre_periode Set min_periode db.OpenRecordset("select min(jour)as minimum from periode where num_periode " & numero_periode & "") Set max_periode db.OpenRecordset("select max(jour)as maximum from periode where num_periode " & numero_periode & "")
min_date = min_periode!minimum
max_date = max_periode!Maximum
combo_periode.AddItem "De" & " " & min_date & " " & "à" & " " & max_date & " Période:" & numero_periode
req_periode.MoveNext
Loop
Else
combo_periode.Text = "pas de jours enregistrés, il faut éxécuter TEMPUS"
b_valid.Enabled = False
End If

Et ce que j'aimerai ensuite c'est :

proc clic_sur_combo_periode
récupérer le num_periode de la ligne choisie
fin proc

Voila voila

En esperant qu'il y a une sollution.
Biz a plus :shy)

3 réponses

cs_wape Messages postés 262 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 décembre 2010 12
3 févr. 2004 à 12:35
Une possibilité serait de rechercher la position du ":" dans la ligne choisie, puis de récupérer tout ce qui se trouve après. Par exemple :

Private Sub combo_periode_Click()

MsgBox "Période choisie: " & Val(Mid(combo_periode.Text, InStr(combo_periode.Text, ":") + 1))

End Sub

@+

wape
0
ndsaerith Messages postés 304 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 10 mai 2017 2
3 févr. 2004 à 12:50
Dit, est ce que je peux abuser et te demender de m'explique le code que tu vien de mettre (j'm bien comprendre de que je met dans mes appli, pi c une protection aussi car si on me demande de le frefaire a l'exam ,lol, :-) )
0
cs_wape Messages postés 262 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 décembre 2010 12
4 févr. 2004 à 11:28
Comme mentionné dans mon premier message, l'idée est ici de rechercher la position du caractère ":" dans le texte de la combo, puis de récupérer tout ce qui se trouve après ce caractère. Pour cela, on utilise 3 fonctions imbriquées : Instr(), Mid() et Val()

Exemple
----------
Admettons que la ligne de la combo contienne la valeur "De 11 à 99 Période:10"

La fonction InStr(combo_periode.Text, ":") va rechercher la position du caractère ":" dans le texte de la combo. Dans l'exemple ci-dessus, cette position correspond à 19.

La fonction Mid(combo_periode.Text, InStr (combo_periode.Text, ":") + 1) va extraire du texte de la combo tous les caractères à partir du 1er caractère qui suit le ":", donc à partir de InStr(combo_periode.Text, ":") + 1, donc à partir de la position 20. Toujours avec l'exemple ci-dessus, la valeur retournée sera "10" (sous forme de chaîne de caractères).

La fonction Val() permet de renvoyer le nombre contenu dans la chaîne de caractères retournée par la fonction Mid(). Ici la valeur retournée sera 10 (sous forme de nombre).

En résumé,

InStr(combo_periode.Text, ":") retourne la valeur 19

=>

Mid(combo_periode.Text, 20) retourne la valeur "10" (sous forme de chaîne de caractères)

=>

Val("10") retourne la valeur 10 (sous forme de nombre)

@+

wape
0
Rejoignez-nous