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 dynamiques/liées c'est possible ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut listbox dynamiques/liées c'est possible ?
    Bonjour,

    Après avoir écumé le web du mieux possible, je bloque. Je suis assez débutant en vba mais j'ai de bonnes connaissances dans d'autres langages de programmation (php).

    Je voudrais créer des listbox "dynamiques/liées". Je m'explique:

    1) Imaginons une première ListBox (à sélection simple) prenant comme source de données la plage de cellules A1:A3 qui contient toto, titi et tata.

    2) Et une deuxième ListeBox qui prend aussi la MEME plage de cellules.

    Ce que je voudrais faire c'est que si avec la première ListBox je sélectionne titi (par exemple) et bien la deuxième listbox se mette à jour automatiquement et ne propose plus que les deux autres éléments (soit toto et tata).

    merci bien

    F.

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Slt,
    voici un exemple avec 2 listbox dans un userform :
    le code ci-dessous dans l'évènement initialize de l'userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
    For i = 1 To 3
    ListBox1.AddItem (Range("A" & i).Value)
    Next i
    End Sub
    et le code ci-dessous dans l'évènement Click de la listbox1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ListBox1_Click()
    ListBox2.Clear
    For i = 1 To 3
    If ListBox1.Value <> Range("A" & i).Value Then ListBox2.AddItem (Range("A" & i).Value)
    Next i
    End Sub
    pour la plage de cellule "A1:A3".

    A+

  3. #3
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    merci, ca a l'air super sympa mais je n'aimerais pas utiliser de userform ....

    Comment faire pour que la listbox que j'ai ajouté avec la barre d'outil "formulaires" soit remplie avec la plage A1:A3 ???

  4. #4
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Re,
    dans l'éditeur vba directement dans la feuil mettre ceci pour que la listbox se remplisse lorsque la feuile est activée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_Activate()
    ListBox1.Clear
    For i = 1 To 3
    ListBox1.AddItem (Range("A" & i).Value)
    Next i
    ListBox2.Clear
    End Sub
     
    Private Sub ListBox1_Click()
    ListBox2.Clear
    For i = 1 To 3
    If ListBox1.Value <> Range("A" & i).Value Then ListBox2.AddItem (Range("A" & i).Value)
    Next i
    End Sub
    attention ceci fonctionne avec les controles de la boite à outils "controle activex" (zone de liste) et pas avec les "controles de formulaires".

    A+

  5. #5
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    oula, ou est ce que l'on trouve "controle activeX" (zone de liste) ?

    Là je suis sur Office 2003 en anglais (je suis au taf). Est ce que la barre d'outil "control activex" est celle la :
    View ---> toolbars ---> control toolbox ?
    Cette barre d'outil ressemble beaucoup à celle des formulaires mais les "objects" crées, si on click dessus on a qq chose comme: =EMBED("Forms.ComboBox.1";"")


    Néamoins, j'ai essayé de faire marcher ton code avec des listbox crées avec "control toolbox ou formulaires et ... sans succès (certainement due à mon ignorance du vba).

    je me permet de re-clairifier au maximum ma demande: dans la mesure du possible, ne pas utiliser de user form.

    Voila un exemple (voir fichier joint) de ce que j'aimerais faire, mon post avec les list dynamiques liées est pour faire du tri multiple:

    - Liste box 1: je choisi la clé 1 pour le tri d'un tableau (Ex: AAA BBB CCC). Je choisi BBB comme clé pour le tri.

    - Liste box 2: je choisi la clé 2 (mais dans cette liste je n'ai le choix qu'avec les elements restants et pas la clé 1 précédemment choisie, soit AAA et BBB uniquement).

    .... merci pour votre aide et je cherche encore a faire marcher tout ca.

    F.
    Fichiers attachés Fichiers attachés

  6. #6
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    slt,
    Là je suis sur Office 2003 en anglais (je suis au taf). Est ce que la barre d'outil "control activex" est celle la :
    View ---> toolbars ---> control toolbox ?
    Cette barre d'outil ressemble beaucoup à celle des formulaires mais les "objects" crées, si on click dessus on a qq chose comme: =EMBED("Forms.ComboBox.1";"")
    oui c'est çà.

    Je vais regarder ton fichier
    A+

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/10/2008, 18h12
  2. Réponses: 1
    Dernier message: 15/04/2008, 22h52
  3. [VB] des ListBox en plusieurs colonnes, est ce possible?
    Par EvaristeGaloisBis dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/09/2007, 14h33
  4. [PostGresSQL] Requête dynamique, c'est possible?
    Par cysboy dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 20/07/2007, 11h08
  5. Réponses: 2
    Dernier message: 16/07/2003, 15h40

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