Aide à la sélection dans une liste déroulante

Résolu
MikeSi Messages postés 44 Date d'inscription dimanche 28 février 2010 Statut Membre Dernière intervention 19 juillet 2022 - 28 oct. 2013 à 17:53
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 29 oct. 2013 à 20:12
Bonjour,
Je dois faire une liste déroulante composée de chiffres de 1 à 19. Jusque là pas de problème. Mais ces chiffres ont une signification bien précise (pour info, ce sont des critères de nidification, par ex : adulte au nid, présence de jeunes, etc.). La 1ère solution pour la saisie du critère : avoir la liste imprimée avec le tableau de correspondance (chaque explication de critère fait au minimum une quarantaine de caractères). Pas très ergonomique ! !
Ce que je voudrais faire : quand on promène la souris sur les options possibles (donc avant le choix), apparait en surimpression la signification du critère. Exemple : je passe sur le 5 et je vois apparaitre "parade nuptiale .....".
Sans macro, je ne pense pas que ce soit possible ? On devrait peut être s'en sortir avec une 'instruction OnmouseOver mais je ne sais pas si elle peut être activée à l'intérieur d'une liste déroulante.
Désolé si ce problème a déjà été soulevé sur ce forum ... mais je n'ai rien trouvé.
Merci de votre aide
Cordialement,
Mike
PS : j'ai Excel 2007 mais je ne pense pas que cela change quoique ce soit

7 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 28/10/2013 à 18:01
Bonjour,
Tu développes finalement sous quoi ? (car tu es ici dans la section VB.Net)
Et si sous VBA/Excel :
1) dis-le. Que je déplace cette discussion dans la section appropriée sans risque d'erreur
2) les listboxes de VBA/Excel peuvent comporter plusieurs colonnes (donc une pour ton N° et l'autre pour ton libellé), ce qui est bien plus convivial !
0
MikeSi Messages postés 44 Date d'inscription dimanche 28 février 2010 Statut Membre Dernière intervention 19 juillet 2022
28 oct. 2013 à 18:04
Re,
désolé je me suis trompé, je développe sous VBA / Excel
Donc tu peux déplacer mon message
merci
Mike
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 oct. 2013 à 18:10
Fait (discussion déplacée). Prends-en bonne note (c'est important) pour tes prochaines discussions..

Pour ton problème, maintenant : allons au plus simple et logique sous VBA/Excel.

Prépare le terrain de cette manière :
sur une feuille nommée "nomenclature" : mets en colonne A tes N°s et en colonne B les libellés.
Reviens quand ce sera fait et tu verras comme tout sera alors très simple.
En revenant : précise-nous s'il te plait (IMPORTANT) sur quoi (feuille de calcul ou Userform ?) tu veux mettre cette ListBox?
0
MikeSi Messages postés 44 Date d'inscription dimanche 28 février 2010 Statut Membre Dernière intervention 19 juillet 2022
28 oct. 2013 à 18:28
Re,
C'est (déjà) fait dans une feuille spéciale du classeur (nom : "Criteres", la plage des critères a été nommée aussi "Criteres" et la plage incluant critères et libellés se nomme "Explications".
Le saisie par liste déroulante doit se faire dans plusieurs feuilles de calculs du même classeur nommées par ex "Saisie_1", "Saisie_2"
encore merci de ton aide
Cordialement,
Mike
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 oct. 2013 à 18:39
On a donc par exemple, la listbox1 sur le feuille nommée Saisie_1
tes critères sur une feuille nommée CRITERES, dans une plage nommée CRITERES
(change ces noms à ta guise).
ce code est à exécuter (mets-le par exemple dans l'évènement Workbook_open)
With Worksheets("Saisie_1").ListBox1
.ColumnCount = 2
.ListFillRange = "CRITERES!CRITERES"
End With

Si tu le mets dans cet évènement, il sera exécuté (bien évidemment) à la prochaine ouverture du classeur.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 oct. 2013 à 19:10
Reviens après avoir testé et constaté.
Nous te débarrasserons ensuite du "carcan" (+ poids en mémoire) de la plage nommée. Cela permettra une plus grande souplesse et tu n'auras pas à la renommer si, un jour, tu devrais agrandir la liste de tes libellés.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 oct. 2013 à 10:42
PS : j'ai modifié ton titre ; ce n'est pas une aide "à la saisie", mais "à la sélection" dans ta liste déroulante (on ne saisit rien, dans ce contrôle... on y sélectionne un article).
0
Bonjour,
Désolé de revenir après un long silence. Pas de problème pour mettre en oeuvre le code. Resteraient qq détails à ajuster comme les 2 colonnes de la ListBox qui sont très éloignées mais je trouverai certainement en fouillant dans les propriétés de LisdtBox.
Le plus gênant, c'est que cela ne correspond pas tout à fait à ce que je voulais faire (désolé de ne pas avoir été clair dans mes explications initiales) : dans chaque feuille de saisie il y a une colonne pour les critères et c'est dans une centaine de lignes (correspondant à une observation qu'il faut sélectionner un critère). Il y aurait vraisemblablement une solution : mettre la Listbox dans un coin de la feuille, sélectionner la cellule à renseigner, aller faire un choix dans la ListBox et affecter la 1ère partie du choix à la cellule active. Je vais faire un code dans ce sens et voir ce que cela donne sur le plan ergonomique.
Je crois que ce que je veux faire : aide à la sélection dans un ensemble de cellules validées par une liste au moment du survol par la souris des éléments de la liste ne doit pas être possible avec VBA Excel.
Encore merci pour tout le temps passé à résoudre mon problème.
Cdlt
Mike
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 29/10/2013 à 17:48
Où est le problème ?
1) utilise la propriété columnwidths de la listbox. Elle te permet de dimensionner chaque colonne. Si tu veux en cacher une ===>> 0 pour cette colonne
2) mets ce code sur une des feuilles concernées par cette sélection et regarde ce qu'il fait :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("C1:C10")) Is Nothing Then
With ListBox1
.Visible = True
.ListIndex = -1
.Top = Target.Top
.Left = Target.Left
End With
Else
ListBox1.Visible = False
End If
End Sub

Mets à False la propriété visible de la listbox dans la fenêtre des propriétés puis lance.
La listbox apparaîtra au bon endroit, uniquement si tu vas dans une des cellules de la plage C1:C10

et bien sur (pour mettre la valeur sélectionnée là où il faut) :
Private Sub ListBox1_Click()
ActiveCell.Value = ListBox1.List(ListBox1.ListIndex)
ListBox1.Visible = False
End Sub


PS: j'ai modifié mon premier code (pour que la sélection précédente disparaisse et force un nouveau choix)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
tu es génial ! ! Ah comme j'aimerais maitriser VBA comme toi.
merci
Mike
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 oct. 2013 à 20:12
N'y vois surtout aucun trait de génie.
Ce n'est jamais là que le résultat d'une construction. Et rien d'autre que cela.
0
Rejoignez-nous