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 :

Listbox dynamique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Novembre 2017
    Messages : 7
    Par défaut Listbox dynamique
    Bonjour,

    Voici mon premier post. j'ai 3 list box. Un qui est une liste exhaustive , une deuxieme list qui est quelque item de la list et la troisieme jaimerais que ce soit la premiere liste moins les item de la deuxieme list .

    Vous comprendez mieux avec l,exemple en piece jointe. Le probleme concerne vraiment la troisieme liste je n,arrive pas a faire . Listbox 1.value - listbox2.value

    merci
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour

    Vous comprendez mieux avec l,exemple en piece jointe.
    Il n'est pas question que j'ouvre un classeur tiers ...
    Je te réponds donc sur la seule base de ce que tu exposes Tu as donc au départ une listbox A
    une listbox B contient des articles de la listbox A
    Il te suffit alors :
    - d'affecter à une listbox C la totalité de la liste de la listbox A
    - de parcourir les articles de la listbox B et :
    ----- si existent dans la listbox C -->> les en supprimer

    Pour ton info ceci permet de savoir si l'article "toto" existe déjà dans une listbox (appelons-là listbox1) et de l'en supprimer s'il existe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    On Error Resume Next
    ListBox1.ListIndex = -1
    ListBox1.Text = "toto"
    If ListBox1.ListIndex > -1 Then ListBox1.RemoveItem ListBox1.ListIndex
    Il s'agit-là d'un mécanisme simple. Un autre serait l'utilisation d'une collection : Principe --->> constitution d'une collection de la totalité des articles puis --->>
    A chaque ajout dans la listbox B -->> suppression dans la collection
    Puis alimenter la listbox C de tout ce qui demeure dans la collection.

  3. #3
    Membre régulier
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Novembre 2017
    Messages : 7
    Par défaut
    Bonjour merci de la réponse par contre. Ma liste 1 et ma liste 2 est grosse et change selon un pré selection de l'utilisateur.

    Donc je ne peux pas mettre si = "toto" . Car il y a trop de choix...

    Je voudrais plutôt avoir seulement si la liste 2 possède un élément identique à la liste 1. Alors le supprimer .

    Merci j'espere que mon explication est plus claire

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Donc je ne peux pas mettre si = "toto" . Car il y a trop de choix...
    C' est- une plaisanterie ?

    Regarde ce que je t'ai dit :
    - de parcourir les articles de la listbox B et :
    ----- si existent dans la listbox C -->> les en supprimer
    A moins que ta difficulté résiduelle ne résulte finalement que du fait que tu ne sais pas non plus parcourir (boucle élémentaire de chez élémentaire) les articles d'une listbox !

  5. #5
    Membre régulier
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Novembre 2017
    Messages : 7
    Par défaut
    non ce n'est pas une plaisanterie. Je n'y comprends rien . Svp on recommence ...

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set pipeline = Worksheets("Données Pipeline").Cells(range("AN25").Value + 1, 16) ' 1 er list box avec la totalité des champs 
      Set conclu = Worksheets("Données Pipeline").Cells(range("AN25").Value + 1, 27) ' 2 ieme list box avec quelques élément de la list 1 
      Set nonconclu = Worksheets("Données Pipeline").Cells(range("AN25").Value + 1, 29) ' 3ieme list box avec quelques éléments de la list 1 
     
           If pipeline <> "" Then
            Me.Lbox_pipeline.List = Split(pipeline, "; ")
            Me.Lbox_conclu.List = Split(pipeline, "; ")
            Me.Lbox_nonconclu.List = Split(pipeline, "; ")
    Le code qui me reste à mettre est quand j'ouvre le userform . La list box 1 demeure tel quel.
    La list box 2 devrait être : List box 1 moins les éléments de la list box 2 et de la list box 3.
    La list box 3 devrait être : même chose list box 1 moins la list box 2 et la list box 3.

    Parce que en vrai c'est une liste de pipeline . ensuite une liste de pipeline conclu et une liste de pipeline non conclu. quand l'utilisateur ouvre le formulaire. Il ne devrait que pouvoir cocher les éléments restant du pipeline qui N,a pas déjà été conclu ou non conclu. Donc si on a 10 pipelines. et 2 de conclu et 2 de non conclu. lorsqu'on ouvre le pipeline il ne devrait avoir que 6 pipeline possible de cocher soit à conclure ou a non conclure.


    Voici ce que tu m'as dit que j'ai écrit mais je ne le comprends pas ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.Lbox_pipeline.ListIndex = -1
            If Lbox_conclu.ListIndex > -1 Then Lbox_conclu.RemoveItem Lbox_pipeline.ListIndex

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Un minimum de chez minimum est de t'appliquer au moins en langage naturel !
    Regarde donc ce que tu as écrit (et l'informatique n'est pas concernée. Seul ce que tu écris l'est) :
    Le code qui me reste à mettre est quand j'ouvre le userform . La list box 1 demeure tel quel.
    La list box 2 devrait être : List box 1 moins les éléments de la list box 2 et de la list box 3.
    La list box 3 devrait être : meme chose list box 1 moins la list box 2 et la list box 3.
    Te rends-tu au moins compte du sens de ce que tu as écrit et de ses conséquences ?
    Et quelle listbox est ta "list box 1" . Idem pour ta "list box 2". Idem pour ta "list box 3"

    Et qu'est cette histoire ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set pipeline = Worksheets("Données Pipeline").Cells(range("AN25").Value + 1, 16) ' 1 er list box avec la totalité des champs
    Set conclu = Worksheets("Données Pipeline").Cells(range("AN25").Value + 1, 27) ' 2 ieme list box avec quelques élément de la list 1
    Set nonconclu = Worksheets("Données Pipeline").Cells(range("AN25").Value + 1, 29) ' 3ieme list box avec quelques éléments de la list 1
    Il n'y a là AUCUNE listbox. Juste des spécifications de plages !

    Et cette autre histoire ?
    si pipeline est une variable (un objet Range), elle ne risque pas d'être une chaîne de caractères !

    et enfin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Me.Lbox_pipeline.List = Split(pipeline, "; ")
    Me.Lbox_conclu.List = Split(pipeline, "; ")
    Me.Lbox_nonconclu.List = Split(pipeline, "; ")
    est non seulement aberrant (puisque pipeline n'est pas une chaîne de caractères), mais (même si c'en était une) tes trois listboxes seraient rigoureusement identiques au départ !

    Excuse-moi, mais j'ai d'autres choses à faire..
    Bonne chance

Discussions similaires

  1. [MySQL] Stocker un formulaire avec listbox dynamiques
    Par gregou81 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 02/11/2007, 10h29
  2. [C# / ASP.NET] Comment creer une listbox dynamique
    Par arioule dans le forum ASP.NET
    Réponses: 2
    Dernier message: 06/12/2006, 22h03
  3. pb remplir Listbox dynamique
    Par maniolo dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 10/08/2006, 18h50
  4. [PHP-JS] Gérer des listBox dynamiquement
    Par joquetino dans le forum Langage
    Réponses: 5
    Dernier message: 11/07/2006, 16h57
  5. empecher le tri dans un listbox dynamiquement
    Par firejocker dans le forum MFC
    Réponses: 2
    Dernier message: 01/12/2005, 17h32

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