Forcer l'utilisateur à choisir parmi une liste de réponses existantes

  • Initiateur de la discussion Initiateur de la discussion Sebast
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Sebast

XLDnaute Impliqué
Bonjour à toutes et à tous,

j'ai besoin de recueillir l'année de traitement souhaitée par l'utilisateur.
Jusqu'ici, je n'arrive qu'à afficher la question par msgbox() interposée mais la réponse est "libre" (hormis que je force à donner une valeur numérique)
Comment faire pour que dans la msgbox s'affichent les années présentes dans la base et donc que l'utilisateur ne puisse choisir que parmi celles-ci ? (sorte de menu déroulant)
En clair, ma base contient les années 2006 à 2014 (mais cette plage est appelée à évoluer) : je voudrais que s'affichent ces années et non que l'utilisateur puisse saisir par exemple 2015 si cette année n'existe pas.

j'ai défini la plage de données mais je ne connais pas les instructions pour que ces années s'affichent …

Quelqu'un a-t-il une idée ?

Merci d'avance pour vos lumières

Sebast



Code:
Sub Afficher_années_dans_menu_déroulant()

Dim AnnéeRéponse As Long
Dim PlagedeRecherche As Range

' définition de la plage contenant les années
Dim dernlig As Long
dernlig = Sheets("Source").Range("F" & Rows.Count).End(xlUp).Row
Set PlagedeRecherche = Sheets("Source").Range("F2:F" & dernlig)

' c'est ici que je voudrais que s'affiche un menu déroulant présentant les années existant dans la feuille Source
AnnéeRéponse = Application.InputBox("Donnez l'année souhaitée", Type:=1)
'
 'MsgBox "L'année choisie est " & AnnéeRéponse ' juste pour le contrôle
 
' traitement avec AnnéeRéponse exploitée ...
'
'
End Sub
 

Pièces jointes

Re : Forcer l'utilisateur à choisir parmi une liste de réponses existantes

Bonjour,
Le plus facile est de créer un USF avec une combobox qui lit tes dates, comme ça pas de soucis.

Ci-joint ton fichier modifié.

Bonne fin de journée.

John
 

Pièces jointes

Re : Forcer l'utilisateur à choisir parmi une liste de réponses existantes

Bonjour,

Peut-être ainsi...J'ai ajouté une boîte de dialogue...

Il suffit de lancer ton code : Afficher_années_dans_menu_déroulant

(en passant : évite les lettres accentuées en VBA dans les noms de variables et de sub...il n'aime pas toujours ça...)

Cordialement

EDIT : ça s'est croisé avec John!
 

Pièces jointes

Re : Forcer l'utilisateur à choisir parmi une liste de réponses existantes

Il existe beaucoup plus simple : la validation des données. Tu définis une plage et tu lui applique des critères restreignant la saisie en utilisant le menu Données / Outils de données / Validation des données. Pas de code vba, et c'est aussi efficace. Examine attentivement ce que j'ai fait dans la plage colorée en jaune dans l'onglet question. Tu y trouveras ton bonheur, et ça t'évitera d'avoir une colonne pour le mois et une colonne pour l'année.
 

Pièces jointes

Dernière édition:
Re : Forcer l'utilisateur à choisir parmi une liste de réponses existantes

Bonjour Sebast, bonjour le forum,

En pièce jointe ton fichier modifié une UserForm à la place d'une MsgBox. Clique sur le bouton Question de l'onglet TCD. L'UserForm s'ouvre. Sélectionne l'année dans la ComboBox1. L'UserForm se ferme. Il te suffit d'ecrire le code qui va traiter ce résultat...
Le fichier :

[Édition]
Bonjour John, Mécano, Renaud on s'est croisé...
 

Pièces jointes

Re : Forcer l'utilisateur à choisir parmi une liste de réponses existantes

Un grand merci à vous tous pour vos réponses détaillées et rapides.
Comme je ne suis pas très familier des USF, j’ai parcouru les réponses des uns et des autres avant de vous répondre.
Vos codes respectifs fonctionnent mais n’étant pas trop calé, quelques questions apparaissent :


John
Que signifie le ComboBox1.ListIndex = -1 ?


Mecano41
Je découvre le Dictionary … paraît ardu mais je vais me pencher dessus


Renaud75015
Je ne vois pas de plage colorée en jaune dans l’onglet Question
Ta proposition de simplicité aurait naturellement ma faveur. Je connaissais de loin les listes à valider mais pensais que ça ne se met pas à jour automatiquement, d’où mon besoin de vba.
J’utilise excel 2007 et 2010 mais au cas où ça n’existerait pas en version 2003, y a-t-il risque de plantage, d’où le recours au code ? ou la liste à valider ne squizze pas les doublons ?
Tu as raison, je vais faire des essais


Robert
Concernant le dictionary … même remarque que pour Mecano41




Question à tous, notamment à ceux qui ont proposé du code : si la liste à valider paraît adaptée, n’est-ce pas le mieux ? ou vaut-il quand même mieux le code ?


Encore merci à vous tous pour vos réponses qui me font progresser
Je teste ce soir tout en détail et vous revient plus tard
 
Re : Forcer l'utilisateur à choisir parmi une liste de réponses existantes

Re,

C'est pour éviter d'avoir des doublons dans le combobox, serai pas chouette d'avoir 10X 2014 dans la liste en plus ça servirai à rien...

John
 
Re : Forcer l'utilisateur à choisir parmi une liste de réponses existantes

Bonsoir le fil, bonsoir le forum,

Je n'ai pas les mêmes principes que Renaud. Les formules m'emm...dent, le VBA m'éclate. Toutefois je suis d'accord avec lui, si on peut se passer de VBA, autant le faire...
 
Re : Forcer l'utilisateur à choisir parmi une liste de réponses existantes

Merci pour les réponses des uns et des autres. J’ai regardé vos propositions plus en détails et quelques remarques me viennent à l’esprit.

John
Ta solution me plait car elle a le mérite de la simplicité
J’en reviens quand même à ce ComboBox1.ListIndex = -1 car je voudrais comprendre avant d’adapter à mon besoin.

Pourquoi ce -1 ? Spontanément, j’aurais imaginé 0 signifiant qu’il n’y a rien dans la liste.
A moins que ce soit la syntaxe un point c’est tout ?


Mécano41
Tu as raison avec les lettres accentuées, autant ne pas tenter le diable …
Concernant les dictionnaires, à partir de quelle version excel sont-ils apparus ? Si j’utilise un excel 2003 (genre au bureau, alors que j’ai 2007 à la maison), cela va-t-il fonctionner ? Est-ce un add-in ?
De plus, quand j’ai regardé la littérature à ce sujet, j’ai l’impression qu’il s’agit d’un tableau à 2 entrées, or ici, il n’y en a qu’une (l’année).


Renaud75015
Ton nom vient de ce que tu habites dans le 15e ? je suis moi-même un ancien du quartier St Charles, désormais à Toulouse …
J’ai testé et malheureusement les doublons apparaissent bel et bien ; vu le nombre d’entrées semblables, ça fait beaucoup à balayer …


Robert
Même remarque que pour Mécano41 : pas de problème si tableau à simple entrée ?



Encore merci pour le temps que vous m’avez consacré
 
Re : Forcer l'utilisateur à choisir parmi une liste de réponses existantes

Mécano41,

merci pour le lien, très bien documenté. J'y étais déjà allé pour d'autres besoins mais n'ai pas pensé à le consulter. C'est l'occasion de s'y remettre.
Tu me rassures en précisant que ça marche avec excel 2003 : je peux donc l'utiliser sans risque.

encore merci
 
Re : Forcer l'utilisateur à choisir parmi une liste de réponses existantes

Bonjour,

Avec le ComboBox1.ListIndex = -1 le fonctionnement est très simple.
Dans le programme je mets une valeur dans ComboBox1, si celui-ci existe déjà dans la liste on aura un nombre entre O (0 étant la première place dans la liste) et X dans listindex, si le nombre entré dans Combobox1 n'existe pas dans la liste, on aura automatiquement -1 comme valeur dans le listindex vu que celle-ci n'est pas encore dans la liste.

Voilà comment faire pour ne pas avoir de doublon dans le combobox.

J'espère que j'ai été clair dans mes explications 🙂

Bonne journée.

John
 
Re : Forcer l'utilisateur à choisir parmi une liste de réponses existantes

Bonjour le fil, bonjour le forum,

La méthode John fonctionne très bien mais elle pèche au niveau vitesse. Sur peu d'éléments la différence est minime mais quand les quantités deviennent importantes, la méthode avec Dictionnaire est beaucoup plus rapide...

 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
582
Réponses
5
Affichages
4 K
Compte Supprimé 979
C
Retour