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 liste déroulante vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Informaticien industriel
    Inscrit en
    Décembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 9
    Par défaut Création liste déroulante vba
    Bonjour à tous,

    Je suis occupé de faire un petit document excel permettant de réaliser certaines tâches quotidien au travail.

    Les utilisateurs ont accès à la feuille principal, dans cette feuille elles font certains choix via une liste déroulante. Je compare les textes, avec la liste caché dans un autre document. Une fois la correspondance trouvé, je dois renvoyer dans la case à côté une nouvelle liste avec des valeurs prédéfinit.

    bref, pas de soucis, jusqu'à la comparaison, j'arrive bien a extraire les valeurs voulues, mais je n'arrive pas à afficher plus qu'une valeur dans ma liste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Cells(4, 4).Select
                With Selection.Validation
                    .Delete
                    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=Val1

    A la place de Val1, je voudrais y encoder mes quatres variables pour qu'elles s'affichent dans une liste déroulante. Je croyais bêtement que mettre Val1 & Val2 & Val3 & Val4 aurait suffit, mais non.

    Pouvez-vous m'aider ?

    Merci

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 969
    Par défaut
    bonjour
    dans l'hypothèse ou la liste allant de A1 à A4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=A1:A4"

  3. #3
    Membre averti
    Homme Profil pro
    Informaticien industriel
    Inscrit en
    Décembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 9
    Par défaut
    Merci pour votre réponse .

    Je me suis surement mal exprimé, pas évident de tous mettre par écrit .

    En faite, la numéro de ligne doit être dynamique,

    En gros j'ai un tableau caché avec les phrase prédéfinit par exemple,

    - Si choix = choix_caché = valeur à afficher de 1 à 4
    - Si choix = Choix_caché_2 = valeur de 7 à 10
    - Si choix = Choix_caché_3 = valeur de x à y, ect...

    Une fois les valeur définit je les enregistres dans les différentes variables (ici Val1, Val2, Val3, Val4). L'idée est d'afficher la valeur des variables sous forme d'une liste déroulante.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonsoir.

    Pourriez-vous d'abord expliquer ce que vous souhaitez réaliser, sans VBA, avec une copie d'écran éventuellement anonymisée? C'est assez rare de devoir modifier une liste de validation par VBA. Peut-être pourrions-nous commencer par voir si on ne peut pas la créer en Excel?

    N'oubliez pas de renseigner votre version, car la 365 permet des trucs chouettes au niveau des listes déroulantes.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2013
    Messages : 122
    Par défaut
    Bonjour tomtom92, BENNASR, Pierre

    J'ai commencé un chantier du genre laissé en plan (c'est pas bien) ici : https://forum.excel-pratique.com/exc...ndantes-190316

    Les référentiels (tables) sont de type pays, région, ville.

    J'ai voulu tout gérer sur le Worksheet_SelectionChange où je construis des listes de validation dynamiques, mais je ne m'en sors pas.

    Dans un pays, il y a plusieurs régions, et dans chaque régions, plusieurs villes

    Je m'oriente pour faire un formulaire, mais la complexité est d'avoir toutes les colonnes de la table source et d'enregistrer après validation l'ensemble des données de la ligne Excel en bloc.

    Il me faut faire un formulaire avec une liste dynamique de champs.

    Je ne sais pas si c'est le cas de Tomtom92.

    Bonne soirée

  6. #6
    Membre averti
    Homme Profil pro
    Informaticien industriel
    Inscrit en
    Décembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 9
    Par défaut
    Bonjour à tous,

    Désolé du temps de réponse, je suis pas mal occupé en ce moment

    L'idée,

    La première colonne possède une liste déroulante avec des phrases prédéfinit. Selon le choix de la phrase, la seconde colonne doit afficher au maximum une liste déroulante de 4 valeurs. Ces valeurs différent selon la phrase choisie. Ainsi par exemple :

    Colonne 1 --> Colonne 2
    Phrase n°1 --> 1 ; 1,5 ; 2 ; 2,5
    Phrase n°2 --> 5 ; 5,5 ; 6 ; 6,5
    Phrase n°3 --> 7 ; 7,5
    Phrase n°4 --> 9 ;
    Phrase n°5 --> 10 ; 10,5 ; 11
    etc...

    Nom : Capture d'écran 2024-01-22 191459.png
Affichages : 186
Taille : 2,4 Ko

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Les listes déroulantes en cascade, si j'ai bien compris, peuvent être créées sans VBA =>
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 466
    Par défaut
    Salut,

    Soit tu crée des listes basées sur des plages, il ne te reste alors plus qu'a modifier les plages pour modifier les listes.
    Soit tu crée des listes statiques. Cependant tu as une difficulté supplémentaire: Les nombres à virgule.
    En effet, d'après mes recherches, une liste statique est composée de valeurs séparées par une virgule, et il aucun moyen n'a été prévu pour échapper les virgules.
    Tu peux utiliser le caractère unicode 130 pour imiter une virgule, mais garde bien en tête que les valeurs obtenues ne seront pas convertibles en numérique a moins de faire l'opération inverse.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
     
    Sub test()
        Dim Ws As Excel.Worksheet
        Set Ws = ThisWorkbook.Worksheets("Feuil1")
     
        With Ws.Range("A1").Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="1" & Chr(130) & "5, 2, 2" & Chr(130) & "5"    '// 1,5 / 2 / 2,5
        End With
    End Sub

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ha, c'est sûr que mettre en dur les valeurs dans le code, ce n'est pas du bidouillage

    Ça vient parler de collections fortement typées et de propriétés Friend pour démolir une réponse qui fonctionne, puis ça fout des valeurs en dur dans le code VBA.

    Ça vient parler de sécurité du code (prendre du recule (sic), toussa), mais ça écrit Set Ws = ThisWorkbook.Worksheets("Feuil1") et ça vient donner des leçons sur la façon de coder...

    Quelle misère.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. Trier liste code VBA
    Par binouse18 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/07/2007, 11h11
  2. Défilement dans zone de liste en VBA
    Par isa38 dans le forum IHM
    Réponses: 2
    Dernier message: 25/06/2007, 12h13
  3. Control Liste et VBA
    Par jfdebutant dans le forum IHM
    Réponses: 2
    Dernier message: 07/03/2007, 09h24
  4. Synchroniser deux zones de listes en VBA
    Par gaelj dans le forum Access
    Réponses: 3
    Dernier message: 03/09/2006, 19h55
  5. Faire défiler une zône de liste en vba
    Par helas dans le forum Access
    Réponses: 7
    Dernier message: 19/08/2006, 21h47

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