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éer une liste déroulante par VBA [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Par défaut Créer une liste déroulante par VBA
    Bonjour à tous

    Connaissant un peu le VBA pour avoir travaillé sur Access, je débute en Excel, et ai encore quelques difficultés.

    J'aimerai par exemple savoir s'il était possible d'insérer une liste déroulante dans une cellule à l'aide du VBA. J'ai cherché sur les différentes rubriques de la FAQ, mais j'ai l'impression que personne ne parle de les créer par du code. J'ai fini par trouver comment les créer avec "Données/Validation", mais le problème est que je ne sais pas à l'avance combien de listes seront nécessaires. Je voudrai donc les créer dynamiquement, pour qu'il y en ait autant qu'il y a d'éléments dans ces listes. Comment faire ? Est-ce seulement possible ?

    Merci d'avance

    .

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Oui c'est possible.

    Pour créer une validation
    Bon vu que tu n'as pas précisé (ou du moin je n'ai pas compris si ce sont les zones ou tu veux mettre la liste qui varie ou le nombre d'élément)
    Mais regarde 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
        With Range("A1").Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=$C$30:C$35"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    Tu peut sans problème utiliser la concaténation de chaine de caractère pour modifier les adresse
    par exemple
    Ou pour la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Formula1:="=C" &  ldeb & ":C" & lfin

    Voila j'espère que ca t'aidera sinon il faudrait peut être préciser ta demande (en tout cas pour que je puisse répondre il le faudrait )

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Par défaut
    Ca m'aide déjà beaucoup

    Pour répondre à ta question, ce que je veux faire exactement, c'est avoir une feuille qui me sert de base de données, avec une liste d'enregistrements, et, dans une autre feuille, insérer autant de liste que de nombre d'enregistrements, contenant chacune tous ces enregistrements. (fiou...)


    Dis, tu pourrais m'expliquer un peu le code que tu m'as mis ? (et qui fonctionne, je t'en remercie )
    à quoi servent "alertstyle" ? "operator" ?


    Et comment vérifier le type d'une cellule ? J'ai mis ma fonction de remplissage sur la méthode "selection_change", ce qui fait que ça ne marche qu'une fois, après ça plante parce que, je crois, je demande d'ajouter une liste là où elle existe déjà.
    Je sais tester le contenu d'une cellule, mais pas son type


    Edit : Aaaaah, c'est donc à ça que servait le delete...
    Désolée ^^'


    .

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Utilise l'aide F1 ca sera bien mieux que ce que je pourrais te donner
    Place ton curseur sur un mot clef et appuie sur F1

    Par exemple place ton curseur sur Add appui sur F1 et sélectionne Méthode tel quelle s'applique à l'objet Validation


    Et comment vérifier le type d'une cellule ? J'ai mis ma fonction de remplissage sur la méthode "selection_change", ce qui fait que ça ne marche qu'une fois, après ça plante parce que, je crois, je demande d'ajouter une liste là où elle existe déjà.
    Je sais tester le contenu d'une cellule, mais pas son type
    J'ai du mal a te comprendre la je ne peux pas savoir a ta place comment déclencher ce code, chez moi c'est un bouton qui le déclenche au moment ou j'initialise la feuille mais ca change d'un fois a l'autre.

    Tu peux sans problème affecter deu foix de suite ce code le .delete est la pour ca (enfin je crois, chez moi ca na jamais posé de problème)

    Par contre il faut que la liste soit sur le même onglet et ca je ne sais pas comment le contourner (comme j'ai bcp de cellule coloré et que le classeur est protégé j'écris la liste de la même couleur que le fond dans des cellule inutilisé mais ca fait un peu brouillon, on doit pouvoir faire mieu)


    Pour vérifier le type de cellule si j'ai bien compris tu parle du contenue je en connais que
    utilise l'aide F1 pour voir comment t'en servir et regarde si tu peux en trouver d'autre dans la partie "voir aussi"

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Par défaut
    J'ai du mal a te comprendre la je ne peux pas savoir a ta place comment déclencher ce code, chez moi c'est un bouton qui le déclenche au moment ou j'initialise la feuille mais ca change d'un fois a l'autre.

    Tu peux sans problème affecter deu foix de suite ce code le .delete est la pour ca (enfin je crois, chez moi ca na jamais posé de problème)

    En effet, c'est pour ça que j'ai édité mon message. Le delete résoud effectivement mon problème .




    Par contre il faut que la liste soit sur le même onglet et ca je ne sais pas comment le contourner (comme j'ai bcp de cellule coloré et que le classeur est protégé j'écris la liste de la même couleur que le fond dans des cellule inutilisé mais ca fait un peu brouillon, on doit pouvoir faire mieu)
    Ah, personnellement j'ai trouvé comment faire , je peux t'expliquer, si tu veux. Il suffit de nommer la plage qui sert de source à ta liste. Ensuite, sur ton deuxième onglet (celui qui contient la liste, donc), au lieu de mettre un ensemble de cellules comme source, il suffit de mettre = puis le nom que tu as donné à ta plage.



    Pour vérifier le type de cellule si j'ai bien compris tu parle du contenue je en connais que
    Justement non, je ne parlais pas du contenu, mais de savoir, par exemple, si c'est une cellule normale, ou une liste déroulante.


    .

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Merci pour le coup de la plage nommé, je connaissais le truc pour d'autre fonction mais je n'ai jamais fait le lien
    Je vais essayer de regarder si il est possible de tester si une cellule a une validation. Je te tiens au courant

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

Discussions similaires

  1. [XL-2007] Créer une liste déroulante dans une cellule avec vba
    Par destroyed dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/07/2014, 10h19
  2. Réponses: 5
    Dernier message: 21/06/2012, 15h22
  3. Réponses: 3
    Dernier message: 06/05/2011, 12h30
  4. Réponses: 4
    Dernier message: 01/11/2008, 10h41
  5. Réponses: 4
    Dernier message: 16/06/2005, 16h37

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