Aide à la sélection dans une liste déroulante [Résolu]

MikeSi 42 Messages postés dimanche 28 février 2010Date d'inscription 13 janvier 2014 Dernière intervention - 28 oct. 2013 à 17:53 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention
- 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
Afficher la suite 

Votre réponse

11 réponses

ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 28/10/2013 à 18:01
0
Merci
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 !
Commenter la réponse de ucfoutu
MikeSi 42 Messages postés dimanche 28 février 2010Date d'inscription 13 janvier 2014 Dernière intervention - 28 oct. 2013 à 18:04
0
Merci
Re,
désolé je me suis trompé, je développe sous VBA / Excel
Donc tu peux déplacer mon message
merci
Mike
Commenter la réponse de MikeSi
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 28 oct. 2013 à 18:10
0
Merci
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?
Commenter la réponse de ucfoutu
MikeSi 42 Messages postés dimanche 28 février 2010Date d'inscription 13 janvier 2014 Dernière intervention - 28 oct. 2013 à 18:28
0
Merci
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
Commenter la réponse de MikeSi
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 28 oct. 2013 à 18:39
0
Merci
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.
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 28 oct. 2013 à 19:10
0
Merci
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.
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 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).
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
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 29/10/2013 à 17:48
0
Merci
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
tu es génial ! ! Ah comme j'aimerais maitriser VBA comme toi.
merci
Mike
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 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.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.