Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/09/2011, 05h12   #1
Futur Membre du Club
 
Étudiant
Inscription : août 2011
Messages : 38
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 38
Points : 18
Points : 18
Par défaut Remplir une textbox à partir d'une listbox multicritères

Bonjour,

Je débute en Access et je me demande si j'ai oublié un truc dans mon code ou si je prends carrement le problème par le mauvais bout.

Je souhaiterais remplir une textbox en fonction d'une listbox multicritères.
Le but : si plusieurs choix de la listbox sont cochés alors une suite de textes (renvoi à la ligne entre chaque) se met en place.
J'ai créé une table avec un champ listbox : value list : "jobA";"jobB";"JobC", pas de problème. Ainsi qu'un champ TextBox défini en mémo.

Ce que j'ai fais jusqu'ici dans le formulaire (à part mettre en place la textbox et la listbox/multiselect:simple) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
Private Sub ListJob_AfterUpdate()
'Textbox become empty
'vide la textbox complètement et réécris en fonction de l'ensemble des choix,
' afin d'éviter que si on coche/décoche/coche un même choix son texte
' apparaisse 2 fois dans TextBox
Me.TxtBox.Value = ""
'Fill Textbox again
Select Case ListJob.ListIndex
Case 0
Me.TxtBox.SetFocus
    Me.TxtBox.Value = Me.TxtBox.Value & "blablajobA"
Case 1
Me.TxtBox.SetFocus
    Me.TxtBox.Value = Me.TxtBox.Value & "blablajobB"
Case 2
Me.TxtBox.SetFocus
    Me.TxtBox.Value = Me.TxtBox.Value & "blablajobC"
End Select
End Sub
Voilà là où je bloque :
- les textes ne se cumulent pas (seul "blablajobA" ou "blablajobB" etc apparaisse dans TxtBox mais jamais 'blablajobA blablajobB")
- pas d'idée pour le renvoi à la ligne
- autre gros problème, le texte s'affiche quand je sélectionne un choix de listbox et pas uniquement quand le choix de la liste box est coché.... (J'ai mis du temps à trouver listindex mais à priori, ça n'est pas encore ça. Quand j'utilisais Select case Listjob.value ou juste Select Case Listjob, on me retournais une erreur 13: type mismatch).

Merci d'avance pour votre aide.

Edit : à priori si les textes ne se cumule pas, c'est dû au positionnement de mon Me.TxtBox.Value = "". Sauf que sans, les textes se répètent indéfiniment si on clique plusieurs fois sur le même choix. JE pense que je devrais parcourir mes choix avec une autre fonction que listindex. Une fonction qui vérifie que les cases sont cochées ou pas. Vous en connaitriez une par hasard?
david89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 10h32   #2
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour,

Si j'ai bien compris, essayez le code suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Private Sub ListJob_AfterUpdate()
 
Dim varList As Variant
Dim sel As String
 
sel = ""
 
For Each varList In Me![ListJob].ItemsSelected
sel = sel & "blabla" & Me![ListJob].ItemData(varList) & Chr(10)
Next varList
 
Me.TxtBox = sel
 
End Sub
Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 22h38   #3
Futur Membre du Club
 
Étudiant
Inscription : août 2011
Messages : 38
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 38
Points : 18
Points : 18
Merci pour ton aide.

J'ai essayé ton code. Il faut échanger Chr(10) par Chr(13)+Chr(10) pour que le saut de ligne marche.
Sinon ça marche (presque)

Presque car ^^' le texte qui doit être utilisé pour jobA est complètement différent de celui pour job B etc.
ex :
Job A --> "pogcxcvklmoi"
Job B -->"sdfghesdtfy"
etc.
or dans cet exemple, on ne peux utiliser qu'un seul texte et tu mets en indice le titre des choix dans la listbo (si j'ai bien compris)....

Voici un exemple peut être plus parlant de ce que je cherche à obtenir:
Listbox : choix1, choix2, choix3
Ce qui doit apparaitre dans la textbox pour chaque choix coché:
choix1 --> "Développez.com +1"
choix2 --> "Mange des bananes"
choix3 --> "Tiens il fait beau!"

Si Choix 2 et 3 sont cochés en même temps (cochés, pas sélectionnés) :
alors on devrait lire dans la textbox :
"Mange des bananes
Tiens il fait beau!"

Une idée sur la méthode?
D'après ce que j'ai compris de ton code, je dois passer par une boucle. Mais par contre je ne vois/sais pas comment attribuer une directive spécifique à chaque choix au sein de la boucle.
david89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 07h16   #4
Membre habitué
 
Inscription : mars 2009
Messages : 86
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 86
Points : 100
Points : 100
Bonjour

Si tu remets ta zone de texte à vide avec cette ligne

c'est un peu normal.
__________________
PeyePo
PeyePo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 08h10   #5
Futur Membre du Club
 
Étudiant
Inscription : août 2011
Messages : 38
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 38
Points : 18
Points : 18
ouaip mais sans cette ligne, si je clique à répétitiion sur un même choix, le texte apparait à répétition dans la textbox....
david89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 08h11   #6
Membre habitué
 
Inscription : mars 2009
Messages : 86
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 86
Points : 100
Points : 100
Bonjour

Alors fait un test avec l'instruction instr pour voir si ta chaîne a déjà été utilisée, sinon tu ajoutes.
__________________
PeyePo
PeyePo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 08h34   #7
Futur Membre du Club
 
Étudiant
Inscription : août 2011
Messages : 38
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 38
Points : 18
Points : 18
Bonjour

ça pourrait marcher mais ça ne réponds pas à un des problèmes principaux.
"uniquement quand la case est cochée et non quand elle est sélectionnée"
et je ne vois pas vraiment comment avec instr, si je décoche la case, le texte disparait.
Je vais quand même essayer.
david89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 10h21   #8
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour,

Désolé, je suis sous Access 2000 et à ma connaissance on ne peux que sélectionner et pas cocher les lignes ...

Par contre as tu essayé de remplir ta value list avec :

Code :
"jobA";"textjobA";"JobB";"textjobB";"JobC";"textjobC"
en paramétrant Nbre colonnes : 2 et Colonne liée : 2 ce qui te permets d'indiquer le texte souhaité pour chaque choix ... si c'est possible sous A2010.

Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 22h56   #9
Futur Membre du Club
 
Étudiant
Inscription : août 2011
Messages : 38
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 38
Points : 18
Points : 18
Bonjour,
Désolé pour l'absence.

Comme dis précédement, je débute ...
Merci à vous deux pour l'aide apportée
@Peyepo : J'ai essayé, mais si je "décoche", le texte ne se retire pas.....
@fbtsra : J'ai créé une liste à 2 colonnes et fais correspondre les textes. Par contre je ne vois pas comment appeler le texte de la colonne 2 dans ma textbox. Et à priori il restera toujours le problème du "présent uniquement si c'est coché"....

Edit: @fbtsra : je suis entrain de lire ce que msdn dis à propos d'itemsselected, bondcolumn etc. Je vais voir si je peux m'en sortir avec ces 2 notions, même si là de suite j'ai pas de solutions.
david89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 04h35   #10
Futur Membre du Club
 
Étudiant
Inscription : août 2011
Messages : 38
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 38
Points : 18
Points : 18
Bonjour,

Je bloque toujours. Voici certaines de mes dernières tentatives:
- L'idée d'une liste à 2 colonnes, mais par contre je n'arrive pas à appeler dans ma textbox les valeurs de la colonne numéro 2....
- Autre idée : attribuer un indice à une variable text et de définir chaque text(indice) = "texte souhaité". Par contre je reçois error 9 : subscript out of range. Je pense que j'ai mal rédigé mon code, mais après plusieurs tentatives, ça ne marche toujours pas...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub ListJob_AfterUpdate()
 
Dim varList As Variant
Dim sel As String
Dim text() As String
 
text(0) = "boihgbvnofesdihvcosidhfv"
text(1) = "oihguvbieuhgfdiuhceu"
text(2) = "poihbivusoidh"
sel = ""
 
For Each varList In Me![ListJob].ItemsSelected
sel = sel & text(varList) & Chr(13) + Chr(10)
Next varList
 
Me.TxtBox.Value = sel
 
End Sub
Je n'ai plus d'idées.
Auriez-vous, s'il vous plait, une solution?
Merci d'avance
David
david89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 09h03   #11
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour,

Citation:
en paramétrant Nbre colonnes : 2 et Colonne liée : 2 ce qui te permets d'indiquer le texte souhaité pour chaque choix ... si c'est possible sous A2010.
te permet d'obtenir directement la valeur de la colonne 2 lorsque tu appelles ta liste avec:

Code :
Me![ListJob].ItemData(varList)
PAr contre n'ayant pas A2010 je ne sais pas comment faire référence aux cases à cocher dans la listbox ...

Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/09/2011, 01h06   #12
Futur Membre du Club
 
Étudiant
Inscription : août 2011
Messages : 38
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 38
Points : 18
Points : 18
Bonjour,

ok j'avais mal lu/pas compris ton post précédent.

Bon j'ai fouillé dans cette voie. Et ça ne marchait pas ....
J'ai modifié column bound dans la partie formulaire et/ou tables, de toutes les manières possibles sans grand résultat.
Une fois ça a marché partiellement.
Je ne sais pas vraiment pourquoi mais si je paramètre la colonne liée (columnbound) via les options de la table et du formulaire, ça ne marchait pas. Access continuait à m'afficher la colonne 1...

Donc après multiples essais, j'ai tenté ceci :
Code :
sel = sel & Me![Listjob].Column(2, varList) & Chr(13) + Chr(10)
Ainsi, ça "oblige" Access a allé chercher dans la column 2 et non dans la colonne liée. Et là, pif paf pouf ça marche!

Et à priori bien

Merci beaucoup pour l'aide.

David
david89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h59.


 
 
 
 
Partenaires

Hébergement Web