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 :

Liste déroulante en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 26
    Par défaut Liste déroulante en VBA
    Bonjour à tous,

    J'ai un problème qui va vous paraître bête mais étant une débutante en VBA j'y ai pas trouver de réponse
    En fait tout ce que je souhaite c'est créer une liste déroulante dans une cellule bien déterminé de mon fichier Excel (Cells (1, 5) par exemple). Quelqu'un peut il me donner un bout de code VBA qui fait ça?

    Merci bcp

  2. #2
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,
    cela ne serait pas plus simple de passer par une liste de validation directement sans passer par du code?

    car alors, dans les option de validation de la cellule, tu peux y choisir "list" et y attribuer une référende à une liste de cellule.

    sinon en vba, tu peux faire ça!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    Range("B1").Validation.Add xlValidateList, , , "=A1:A5"
    End Sub
    c'est pour quelle version d'excel?

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut ch7787 et le forum
    J'ai un problème qui va vous paraître bête : Aucun problème n'est bête ! Seules, quelques fois, les réponses semblent évidentes.
    mais étant une débutante en VBA : Quand on débute, le plus gros problème, c'est la syntaxe : Menu Outils>>Macro>>Nouvelle Macro => tu valides. Tu fais les opérations dont tu as besoin. Et tu arrêtes la macro.

    Dans ton cas, c'est sélectionner la cellule E1 et lui mettre une liste de validation. Ensuite tu va dans VBEditor (F11). Tu vas dans le dossier Module, Macro1. Ou tu vas dans Outils>>Macro>>Macros et tu sélectionnes la macro que tu viens de créer. Macro1, normalement, puis tu cliques sur le bouton modifier.

    Tu te retrouves dans le codage de ce que tu viens de faire : une macro du style :
    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
    16
    17
    18
    19
    20
    21
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 07/07/2010 par Serge
    '
    '
        Range("E1").Select
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="A;B;C"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    End Sub
    Ne sachant ce que tu veux faire, j'ai créé une liste de validation avec 3 terme : A, B et C.
    Comme dans toute nouvelle macro, on vérifie qu'elle effectue bien ce qu'on veut : Avec ce code, on se retrouve avec une seule validation "A;B;C". Avec l'habitude, on sait que VBA est en anglais alors qu'on a codé en français. Donc on modifie en
    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
    16
    17
    18
    19
    20
    21
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 07/07/2010 par Serge
    '
    '
        Range("E1").Select
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="A,B,C"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    End Sub
    Et on reteste (avec F8, on peut faire du pas-à-pas, et voir ce que fait chaque instruction).
    Une fois la macro OK, on épure un peu le code donné : on ne garde que cequi change réellement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Macro1()
        Range("E1").Select
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= xlBetween, Formula1:="A,B,C"
        End With
    End Sub
    On garde le delete (suppression de l'ancien) et Add. On teste. Puis on élimine les Select/Selection, qui ne sont qu'un frein. Et on obtient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Macro1()
    With Range("E1").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="A,B,C"
    End With
    End Sub
    On teste et comme ça marche, on garde (en renommant la macro) et on passe au reste.

    Avec les macros "apprentissage", on trouve facilement la syntaxe des opérations que l'on peut faire directement sur une feuille. Pour le reste (Boucle, Test), parcourir les forums et regarder les codes (des réponses), permet de se faire une idée des syntaxes à employer.
    N'importe qui peut coder en VBA, les seules différences sont le temps pour comprendre et les idées.
    A+

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 26
    Par défaut
    re

    mayekeul, merci bcp pour ta réponse. Et pour te répondre, je dois passer par du code car la liste déroulante n'est qu'une partie d'un plus grand projet dans lequel je dois automatisé la génération de certain rapports de suivi de données sous Excel.
    Sinon j'utilise Excel 2003 et aussi je ne peux pas changer de version, je dois travailler avec celle là !!

    Gorfael, Merci bcp pour tes conseils et ton aide, ça m'a bcp facilité la compréhension du fonctionnement du VBA

    a+

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

Discussions similaires

  1. liste déroulante et vba
    Par dodie84 dans le forum VBA Access
    Réponses: 11
    Dernier message: 21/04/2008, 13h44
  2. Réponses: 2
    Dernier message: 20/02/2008, 12h30
  3. Réponses: 2
    Dernier message: 21/10/2007, 00h56
  4. Liste déroulante Excel VBA
    Par a.dequidt dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/09/2007, 16h34
  5. Réponses: 4
    Dernier message: 16/06/2005, 15h37

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