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 drop down list automatiquement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2019
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2019
    Messages : 30
    Par défaut Création d'une drop down list automatiquement
    Bonjour à tous,

    Petite question compliquée ... Nous travaillons avec GDSN (pour ce qui connaissent), chaque produit encodé dans leur système, doit être lié à une "brick" spécifique qui a ses propres "champs" à compléter.

    Je m'explique, si vous encodez le produit sur la brique "lampe", vous devrez compléter le wattage, la couleur, le cullot etc....

    Mon problème actuelle est le fait que quand je reçois un nouveau produit à encoder, je dois demander au service technique de notre société de compléter les infos de la brique..chaque brique a un minimum de 20 champs a compléter dont plusieurs drop down menu.... ce qui me fait perdre un temps inimaginable car pour chaque brique j'ajoute chaque drop down list avec la valeur etc..

    Ma question est simple... GDSN nous a fourni une liste de pick list par colonne (colonne A Picklist ID) colonne B la valeur .. cette colonne fait 1600 lignes !

    Ce que je voudrais c'est pouvoir faire une liste (comme en attache) ou en mentionnant le "picklist ID" excel crée une drop down list basée sur les valeurs de GDSN (j'espere que je me fais bien comprendre)

    J'ai mis en attache un fichier excel avec le tab1 la liste des valeurs Picklist ID et le tab2 le fichier que j'aimerais voir en fin de course

    N'hésitez pas à me contacter si vous souhaitiez un complément d'info, je peux comprendre que c est pas très claire comme info

    Merci à tous
    Pierre
    Fichiers attachés Fichiers attachés

  2. #2
    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
    Salut.

    Tu ne dis pas sur quoi poser la dropdown (feuille de calcul, userform), ni de quel type elle est (liste de formulaire ou Activex?).

    Voic l'idée d'un développement qui place une dropdown de formulaire sur la feuille active. Le principe serait grosso modo identique pour une listbox activex ou pour une listbox de userform. Le principe est de travailler avec un tableau structuré (dispo à partir de 2007) que j'ai nommé ici t_Picklist.

    Pour déterminer la plage, on part du principe que le tableau est trié sur les codes de picklist, et l'on récupère alors la ligne du tableau qui correspond à la première valeur de la picklist cherchée, on étend la plage sur le nombre d'items de la picklist et on envoie cette plage pour alimenter la liste déroulante créée. Pour tester le code, tu dois avoir converti les données de Sheet1 en tableau structuré et sélectionner une feuille vide.

    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
    Sub CreateDropDown(PickList As String)
      Dim mylist
      Dim r As Range
      Dim Pos As Long, CountOf As Long
     
      Pos = Application.Match(PickList, Range("t_Picklist[Picklist ID]"), 0)
      CountOf = Application.CountIfs(Range("t_Picklist[Picklist ID]"), PickList)
      Set r = Range("t_Picklist[Code Value]")(Pos).Resize(CountOf)
      Set mylist = ActiveSheet.Shapes.AddFormControl(xlDropDown, 1, 1, 200, 12)
      mylist.Name = "MyList"
      mylist.ControlFormat.List = r.Value
    End Sub
     
    Sub test()
      CreateDropDown "0.111"
    End Sub

    Cela dit, pas certain que ce soit la meilleure solution. Quelle que soit la situation, le mieux est à mon sens de créer la listbox via l'interface, et de la connecter aux données au moment du choix de la pickinglist. J'ai écrit un billet qui illustre cela pour Excel 365, mais on peut l'adapter à une version antérieure.
    "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...
    ---------------

  3. #3
    Membre averti
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2019
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2019
    Messages : 30
    Par défaut
    Bonjour et merci beaucoup de ta réponse

    En effet, mon explication n'est pas complète....

    Mon but serait d'encoder le numéro de la brick dans un sheet excel et qu'a coté (ou en dessous ou dans un nouveau sheet) tous les champs liés à cette brique soient automatiquement reportés à coté.. certain champs sont de simple champs textes.. d'autre avec drop down (ceux qui me prennent du temps)

    Je viens de rajouer un fichier texte qui, je pense, est plus explicatif, d'autre part le fichier GDSN est trop gros (6mb) pour loader ici, donc si tu as besoins de le voir, je l'ai loadé sur MeeroDrop (https://www.meerodrop.com/fr/drop/70...b-c0a3b98be895)

    Encore merci pour ta patience
    Pierre
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Access 2003 - Création d'une drop-down List
    Par Peach79 dans le forum VBA Access
    Réponses: 2
    Dernier message: 05/12/2008, 16h41
  2. Réponses: 1
    Dernier message: 22/05/2008, 15h51
  3. Supprimer des items dans une drop down liste
    Par msahmi dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/04/2008, 11h59
  4. Remplir une drop down list
    Par walido dans le forum Struts 1
    Réponses: 1
    Dernier message: 16/03/2008, 10h56
  5. Récupérer la valeur d'une Drop Down List
    Par dahu17 dans le forum C#
    Réponses: 1
    Dernier message: 23/04/2007, 15h17

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