Bonjour,
Tout d'abord, merci d'être indulgent, je suis débutant en vba excel...
Je voudrais créer une liste déroulante avec 3 valeurs (25,75,95) et l'inserer dans une cellule (par exemple la A1).
Comment faire?
Bonjour,
Tout d'abord, merci d'être indulgent, je suis débutant en vba excel...
Je voudrais créer une liste déroulante avec 3 valeurs (25,75,95) et l'inserer dans une cellule (par exemple la A1).
Comment faire?
Je pense qu'il y a déjà des discussions là-dessus mais il est vrai que c'est peu intuitif (je trouve) :
Tu te places dans la cellule de destination (A1) puis tu vas dans Données > Validation.
Dans le premier popup tu choisis liste et dans Sources tu mets tes valeurs séparées par des ;
Merci, mais je voudrais le faire en passant par du code vba
Quand on débute le plus simple reste d'enregistrer ce qu'on veut faire avec l'enregistreur de macro, on regarde le code généré et on l'adapte.
Merci pour l'astuce... J'ai essayé de faire de la sorte, mais j'ai un petit problème encore...
Tout d'abord voici le code de l'enregistreur de macro :
Lorsque je le mets dans mon code, une liste déroulante se crée bien a l'endroit voulu, mais, bizarrement, au lieu d'avoir 3 choix (25 75 95), je n'ai qu'un choix (25;75;95). Encore plus étrange (enfin pour moi...), lorsque j'ouvre le menu Données > Validation et que je clique sur ok dans la boite de dialogue qui s'est ouverte (sans rien toucher aux paramètres), la liste s'affiche correctement (avec les 3 choix l'un en dessous de l'autre).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Sub Macro1() With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="25;75;95" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With End Sub
Je suis perdu la...
Bonjour,
Pour débuter (ce que chacun fait un jour...), le mieux est de lire la charte*(notice du forum technique, Ethique etc...), de faire du coup une recherche, ce qui permet de trouver rapidos ce genre de chose :
http://silkyroad.developpez.com/VBA/...serForm/#LII-G
tu y trouveras amplement les réponses voulues et même plus, tu crédites le travail (fort bien fait) des rédacteurs et tu peux venir poser en plus une question référencée sur un point resté obscur
cf : le chapitre ListBox entre autre,
* Ce qui te permettra de modifier le titre de ton post pour parler de validation de données et avoir plus de chance d'avoir des réponses pertinentes et d'utiliser les balises codes pour une meilleure lecture..
cordialement,
donc, va plutôt voir ici :
http://excel.developpez.com/faq/?page=ListeValidation
Sinon essayes ainsi :
PS, rajout : où est le problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub ItsOK() With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="25,75,95" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With End Sub
tu n'as pas fait d'erreur et l'enregistreur non plus ...
L'explication vient du fonctionnement des divers séparateurs, le séparateur de listes est lié au choix du séparateur décimalen France la virgule, ce qui nous donne le ; en liste par défaut. C'est l'inverse aux US..
Dans Excel, si tu insères des formules par le tableau, elles sont en Français, si tu passes par vba, elles sont en anglais.
Dans la validation de données, le séparateur de liste du tableau est le ; mais en vba, c'est la ,
Donc quand tu utilises l'enregistreur, il fonctionne bien, mais basiquement sans opérer la conversion
Ton code est donc faux en vba, mais il est inscrit (mémorisé) dans le tableau comme tel où il est correct, donc quand tu repasses par le menu déroulant, tu revalides ta liste avec les ; et ça marche car c'est du coup la bonne syntaxe pour le contexte de la feuille
(dans le même genre d'idée, si dans une cellule excel tu tapes 12 "point" 5 avec le pavé numérique tu obtiens 12,5 alors que si tu tapes 12 "point" 5 avec le clavier tu as 12.5 - les 2 "point" sont interprétés différemment et logiquement sans que ça choque personne.. sauf qu'en vba si tu veux 12,5 en F15, il faudra entrer en codeDidier
Code : Sélectionner tout - Visualiser dans une fenêtre à part range ("F15") = 12.5
Partager