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 :

USF faire interagir des combobox [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut USF faire interagir des combobox
    Bonjour,
    J'ai une grande base de données dont je voudrais consulter les données à partir de plusieurs combobox au choix.
    cette base de données reprend :
    Sigle | Libellé | Ancien code | nouveau code
    J'ai créé un USF avec 4 Combobox alimentés par chancun des champs de la base.
    Je voudrais pouvoir choisir la combobox qui enverra les 3 autres informations.
    ex si j'utilise la "comboAncienCode" les autres se remplissent avec le nouveau code, le sigle et le libellé.

    Sachant que les données ancien et nouveau code sont des données purement numériques, que la colonne Sigle contient des doublons (donc elle ne pourra pas renvoyer une mais plusieurs infos dans les autres combo, donc obligera à faire un deuxième choix) et que la colonne libellé devrait être appelé idéalement par un mot de la cellule, pas forcément le 1er mot.

    Mais déjà si j'avais une interaction entre les 2 combo numérique, je serai déjà bien heureuse
    Merci de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    En admettant que les ComboBox soient nommés ComboBox1, ComboBox2, etc... (noms par défaut) et que les données soit en feuille "Feuil1" (adapter si différents !) :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    Private Sub UserForm_Initialize()
     
        Dim Plage As Range
     
        With Worksheets("Feuil1")
     
            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 4).End(xlUp))
     
        End With
     
        With Plage
            'début à 2 pour éviter les entêtes
            ComboBox1.List = Plage.Range(.Cells(2, 1), .Cells(Plage.Rows.Count, 1)).Value
            ComboBox2.List = Plage.Range(.Cells(2, 2), .Cells(Plage.Rows.Count, 2)).Value
            ComboBox3.List = Plage.Range(.Cells(2, 3), .Cells(Plage.Rows.Count, 3)).Value
            ComboBox4.List = Plage.Range(.Cells(2, 4), .Cells(Plage.Rows.Count, 4)).Value
     
        End With
     
    End Sub
     
    Private Sub ComboBox1_Click()
     
        RemplirCombo ComboBox1
     
    End Sub
     
    Private Sub ComboBox2_Click()
     
        RemplirCombo ComboBox2
     
    End Sub
    Private Sub ComboBox3_Click()
     
        RemplirCombo ComboBox3
     
    End Sub
    Private Sub ComboBox4_Click()
     
        RemplirCombo ComboBox4
     
    End Sub
     
    Private Sub RemplirCombo(Combo As MSForms.ComboBox)
     
        Dim Tbl() As Long
        Dim I As Long
        Dim J As Long
     
        For I = 0 To Combo.ListCount - 1
     
            If Combo.List(I) = Combo.Text Then
     
                J = J + 1
                ReDim Preserve Tbl(1 To J)
                Tbl(J) = I + 2 '1 pour la ligne d'entêtes et 1 pour la base 0 de la liste des combobox
     
            End If
     
        Next I
     
        ComboBox1.Clear
        ComboBox2.Clear
        ComboBox3.Clear
        ComboBox4.Clear
     
        With Worksheets("Feuil1")
     
            For I = 1 To UBound(Tbl)
     
                ComboBox1.AddItem .Cells(Tbl(I), 1).Value
                ComboBox2.AddItem .Cells(Tbl(I), 2).Value
                ComboBox3.AddItem .Cells(Tbl(I), 3).Value
                ComboBox4.AddItem .Cells(Tbl(I), 4).Value
     
            Next I
     
        End With
     
    End Sub
    Hervé.

  3. #3
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Bonjour Thézé,
    Merci beaucoup pour ta réponse.
    J'ai testé et j'ai 2 pb qui ne semblent pas grave, mais que je ne peux pas corriger dans la procédure Private Sub RemplirCombo(Combo As MSForms.ComboBox) :


    et un pb, plus gênant, avec ce code, je n'ai des données que dans la ComboBox1, les autres sont vides, donc je ne peux pas interroger à partir des autres combos.

    Merci

  4. #4
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Bonjour à tous
    Je viens de trouver une solution, ce n'est pas celle à laquelle j'avais pensée, mais elle fonctionne parfaitement.
    Je l'ai trouvée dans la page de Jacques Boisgontier http://boisgontierjacques.free.fr/pa...irecascade.htm, sous le titre Recherche intuitive dans toutes les colonnes.

    Comme toujours pour moi sur ce site, ça me dépasse beaucoup...
    Mais je progresse aussi, et j'ai réussi à l'adapter à mes besoins. Je serai bien sûr incapable de le refaire toute seule...

    Comme toujours un très grand merci à Jacques Boisgontier et à Theze.

    Au plaisir de vous retrouver

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

Discussions similaires

  1. [Joomla!] Formulaire permettant de faire des combobox dépendantes
    Par touff972 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 23/08/2012, 17h58
  2. Faire des combobox dynamiques
    Par lordatef dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 19/09/2011, 22h03
  3. [XL-2007] Faire interagir 2 combobox
    Par Aurel.89 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 01/03/2010, 11h28
  4. Réponses: 2
    Dernier message: 21/07/2007, 01h12
  5. [C# 2.0]Faire interagir des user controls
    Par cmoiscrat dans le forum Windows Forms
    Réponses: 10
    Dernier message: 28/06/2006, 10h30

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