Liste de choix à l'intérieur d'une feuille en VBA

  • Initiateur de la discussion Initiateur de la discussion chris6999
  • 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 !

chris6999

XLDnaute Impliqué
Bonsoir le FORUM

Je souhaiterais remplacer une liste de choix de type "données validation" et enregistrées sur les cellules de ma feuille par une macro.

Par contre comme je préfèrerais conserver mes motifs de choix dans la feuille où ils sont déjà enregistrés et facilement modifiables. La macro ne ferait que me renvoyer vers cette liste.

Ex lorsque j'active les cellules de la colonne H (plage H1àH20000) la macro me propose de choisir^parmi les élement de ma liste de choix, enregistrée dans la feuille 2 (ex cellules A1 à A5).
Il ne peut y avoir de saisie autre que ce choix dans cette plage.

Cela vous paraît il possible où la liste de choix doit être obligatoirement enregistrée dans la macro ?

Merci d'avance
Cordialement

Je mets un petit fichier test en pièce jointe
 

Pièces jointes

Re : Liste de choix à l'intérieur d'une feuille en VBA

Bonjour à tous,

Je ne vois pas l’intérêt de créer la liste de validation par macro.

VB:
Option Explicit


Sub Liste()
    ActiveWorkbook.Names.Add Name:="Liste", RefersToR1C1:="=Feuil2!R1C1:R5C1"
    Sheets("Feuil1").Select
    With Range("H1:H20000").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=Liste"
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = True
    End With
End Sub

A + à tous

Edition : Salut Papou-Net
 
Dernière édition:
Re : Liste de choix à l'intérieur d'une feuille en VBA

Je ne vois pas l’intérêt de créer la liste de validation par macro.

Bonsoir JC,

Moi j'ai compris, sauf erreur de ma part, que notre amie Chris désire remplacer la liste déroulante dans les cellules par celle qu'elle a insérée dans l'UserForm1.

Cordialement.
 
Re : Liste de choix à l'intérieur d'une feuille en VBA

RE

Petite précision Chris :

Si tu mets la propriété ShowModal de ton USF à False, tu peux saisir plusieurs cellules à la suite sans avoir besoin de fermer et relancer le formulaire.

Cordialement.
 
Re : Liste de choix à l'intérieur d'une feuille en VBA

Bonjour

J'ai un petit pb avec la proposition de papounet
La saisie dans cette colonne n'est pas systématique.
Si les personnes qui travaillent dans le fichier passent sur la colonne avec les flèches directionnelles, elles seront bloquées par l'affichage de l'USERFORM qui requiert un choix.
Impossible d'aller sur la cellule suivante sans être obligé de fermé l'USERFORM.

Du coup je ne suis plus sûre que ce soit la bonne solution... s'il en existe une dailleurs...

Il faudrait que l'userforme s'active lorsque l'utilisateur se positionne sur la cellule en cliquant ou en se déplaçant avec les flèches et se désactive si on change de cellule (même sans avoir rien saisi).

Rien n'est jamais simple
Si qq a une idée...
Bon après midi
 
Dernière édition:
Re : Liste de choix à l'intérieur d'une feuille en VBA

Bonjour Chris,

Qu'à cela ne tienne, il y a toujours une solution.

J'ai remplacé la méthode d'affichage du formulaire : un clic-droit pour l'ouvrir, le bouton Fermer ou la croix pour le cacher.

Ainsi, on peut naviguer avec les touches flèches dans la feuille sans autre inconvénient.

Cordialement.

PS : on pourrait tout aussi bien utiliser le double-clic.
 

Pièces jointes

Re : Liste de choix à l'intérieur d'une feuille en VBA

RE (suite)

Une autre méthode, revenant aux origines.

J'ai supprimé le formulaire et inséré une liste déroulante directement sur la feuille. Cette liste est normalement masquée. Elle s'affiche dynamiquement sur la cellule sélectionnée dans la zone H1:H20000. Les flèches de navigation ne sont pas bloquées par son affichage. Si on tape ENTER lorsque la liste a le focus, on passe à la cellule suivante sans inscrire de valeur dans la cellule précédente.

Mais je crois que le mieux est de te laisser expérimenter à ton propre gré.

Cordialement.
 

Pièces jointes

Re : Liste de choix à l'intérieur d'une feuille en VBA

RE (suite)

Une autre méthode, revenant aux origines.

J'ai supprimé le formulaire et inséré une liste déroulante directement sur la feuille. Cette liste est normalement masquée. Elle s'affiche dynamiquement sur la cellule sélectionnée dans la zone H1:H20000. Les flèches de navigation ne sont pas bloquées par son affichage. Si on tape ENTER lorsque la liste a le focus, on passe à la cellule suivante sans inscrire de valeur dans la cellule précédente.

Mais je crois que le mieux est de te laisser expérimenter à ton propre gré.

Cordialement.

Merci Papou net pour toutes ces astuces

Pourrais-tu me confirmer que j'ai bien compris ta démarche
Je dois créer un userform avec une list box et un commandbutton.

Mais pourquoi y a t il du code sur un COMBOBOX... Peux-tu m'expliquer comment tout cela fonctionne


Merci d'avance
Cordialement
 
Re : Liste de choix à l'intérieur d'une feuille en VBA

Non Chris,

Le formulaire n'est plus nécessaire : c'est simplement que j'ai oublié de le supprimer.

D"ailleurs voici une version qui fonctionne parfaitement sans.

Le code est là parce que la liste déroulante de la feuille 1 est en réalité un contrôle ActiveX qui se nomme ComboBox1, tout comme dans le formulaire.

Voilà qui j'espère répondra à tes questions.

Cordialement.
 

Pièces jointes

- 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
7
Affichages
795
Retour