IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Création d'une liste déroulante


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut Création d'une liste déroulante
    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?

  2. #2
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    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 ;

  3. #3
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    Merci, mais je voudrais le faire en passant par du code vba

  4. #4
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    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.

  5. #5
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    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 :
    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
    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).
    Je suis perdu la...

  6. #6
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    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 :

    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
    PS, rajout : où est le problème ?

    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écimal en 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 code Didier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Assistant de création d'une liste déroulante
    Par tarnx dans le forum IHM
    Réponses: 2
    Dernier message: 27/01/2010, 17h03
  2. Création d'une liste déroulante avec servlet+jsp+mysql
    Par sarita25 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 13/05/2009, 19h00
  3. Réponses: 1
    Dernier message: 26/08/2007, 22h21
  4. problème de création d'une liste déroulante
    Par marie4449 dans le forum Langage
    Réponses: 1
    Dernier message: 25/05/2007, 06h01
  5. Réponses: 5
    Dernier message: 13/10/2005, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo