Menu déroulant VB Validation des cellules

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

Hellowa

XLDnaute Junior
Bonjour à tous, bonjour le forum
Je viens (encore une fois ^^ ) solliciter votre aide. Je m'explique, je suis entrain de créer un fichier qui va placer dans de nombreuses cellule un menu déroulant.
J'ai donc créé une première macro qui séléctionne une a une les cellules, puis qui appelle une sous macro qui est la suivante:
Code:
Sub menu_deroul()
'Macro crée par Hellowa pour le forum XlD
'

'
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=[COLOR="Red"][B]FORMULE DU MENU DEROULANT[/B][/COLOR]
        
        
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = False
        .ShowError = False
    End With
End Sub
C'est donc une macro que j'ai enregistrée.
J'avais auparravant créé une liste grâce à l'insertion des données, mais une fois sur 2, elle m'affichait un message d'erreur, et il fallait que je recharge cette liste.

Mon problème est le suivant. Les données qui doivent être présentes dans le menu déroulant sont situées sur la plage "A2:A*" ( Bref, c'est extensible!!)
Peut on entrer directement la formule de la liste plutot qu'appeler un nom déjà créé?
Quelqu'un pourrai me rafraichir la mémoire s'il vous plait!😀
Merci d'avance!
 
Re : Menu déroulant VB Validation des cellules

Re,

1) Définir (menu Insertion-Nom) le nom Liste avec la formule :

=DECALER(Feuil1!$A$2;;;NBVAL(Feuil1!$A:$A)-1) ===> -1 s'il y a quelque chose en A1

2) utiliser le code :

Code:
With Selection.Validation
.Delete
.Add Type:=xlValidateList, Formula1:="=Liste"
 End With

Mais pour travailler sur une plage, définir la cellule courante cel avec une boucle For Each cel In... et remplacer dans le code Selection par cel.

Edition : on peut aussi écrire directement :

Code:
.Add Type:=xlValidateList, Formula1:="=OFFSET($A$2,,,COUNTA($A:$A)-1)"

A+
 
Dernière édition:
- 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
12
Affichages
1 K
Réponses
3
Affichages
943
Réponses
16
Affichages
3 K
Réponses
1
Affichages
1 K
Réponses
2
Affichages
907
Retour