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 :

combobox en cascade [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut combobox en cascade
    Bonjour,
    grâce au forum, j'ai pu finir une partie de mon projet qui consistait à remplir des classeurs de planning sous excel à l'aide d'un userform. J'ai donc créé un onglet "saisie" dans cet usf, et j'ai créé aussi une partie "consultation-modification" et je bute sur le remplissage de l'usf, et après je verrais pour un onglet "récapitulatif global"
    je choisis d'abord l'année du planning dans le combobox50(nom des feuilles du classeur) ensuite je choisis dans une liste avec le combobox51 qui doit me remplir les autres combobox et listbox, ça fonctionne, mais si je change mon choix dans le combobox51, il ne se passe rien.

    Je dois aussi rapatrier l'en-tête pour ma plage de couleur dans des combobox, par exemple je dois remplir un combobox avec le N°3(colonnne L) qui correspond à une semaine(début plage de couleur) et 27(fin de plage de couleur,colonne AJ).

    Merci beaucoup pour votre aide.

    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
    Private Sub ComboBox51_DropButtonClick()
     
    Dim Lig As Long, j As Long
    Workbooks("Etudes.xls").Sheets(ComboBox50.Value).Activate
    ComboBox51.Clear
     
    Sheets(ComboBox50.Value).Activate
     
    With Sheets(ComboBox50.Value)
     
    For j = 10 To Range("A65536").End(xlUp).Row
     
                Lig = 10 + Me.ComboBox51.ListIndex + 1
                ComboBox51.AddItem Range("A" & j)
                'End If
                ComboBox51 = Range("A" & j)
                Next j
                'With Cells(j, 1)
     
    ' Récupérer toutes la valeurs pour l'USF
                Me.ComboBox53.Value = .Range("B" & Lig)
                Me.TextBox70.Value = .Range("C" & Lig)
                Me.ComboBox52.Value = .Range("D" & Lig)
                Me.ComboBox55.Value = .Range("E" & Lig)
                Me.ComboBox56.Value = .Range("F" & Lig)
                Me.ComboBox54.Value = .Range("I" & Lig)
               etc...
    End With
     
    End Sub

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 24
    Par défaut Bonjour Avenir 80
    Je ne suis pas très expérimenté, mais lorsque je travaille avec des combobox, au lieu de "DropButtonClick", j'utilise "Change". (ComboBox51_Change)

    J'espère que ça a pu t'aider...


    Bonne chance!

  3. #3
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut bonjour pascal415
    Non désolé, j'avais mis mais auparavant cette option qui est par défaut, mais je n'ai même pas le remplissage des autres contrôles.
    merci quand même

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Étrange quand même.
    Tu choisi un item de ComboBox51
    Ce même ComboBox51 se vide et se remplit de données

  5. #5
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut bonjour mercatog
    je suis novice en vba, que veux-tu dire que le combobox51 se vide et se rempli de données, où ais-je fait une grossière erreur?
    Sincèrement

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub ComboBox51_DropButtonClick()
    ComboBox51.Clear
    Tu vides bien ici ta ComboBox51 sur évènement DropButtonClick.

    Je propose de commencer par expliquer le problème clairement (le but que tu cherche à atteindre). La clarté de la question garantirait des réponses ciblée, claires et efficaces.

  7. #7
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut
    merci mercatog de m'aider,

    Je vais chercher des données présentes sur un classeur dans un tableau de planning, et ce par ligne.
    En fonction du choix dans le combobox51, je voudrais remplir les autres combobox et listbox en cascade de mon usf, et si je change mon choix dans le combobox51, je veux que les autres contrôles suivent.

    suis-je assez clair mercatog?

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    ComboBox51 est liée à quelle colonne de ta feuille annuelle?

    PS. On passera la nuit à ce type de questions réponses.

    Edit: peut être ce que tu n'arrive pas à bien expliquer
    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
    Private Sub ComboBox51_Change()
    Dim LastLig As Long, Lig As Long, j As Long
    Dim c As Range
     
    If Me.ComboBox51.Value <> "" Then
        With Sheets(ComboBox50.Value)
            LastLig = .Range("A65536").End(xlUp).Row
            Set c = .Range("A10:A" & LastLig).Find(Me.ComboBox51.Value, lookat:=xlWhole)
            If Not c Is Nothing Then
                Lig = c.Row
                Me.ComboBox53.Value = .Range("B" & Lig)
                Me.TextBox70.Value = .Range("C" & Lig)
                Me.ComboBox52.Value = .Range("D" & Lig)
                Me.ComboBox55.Value = .Range("E" & Lig)
                Me.ComboBox56.Value = .Range("F" & Lig)
                Me.ComboBox54.Value = .Range("I" & Lig)
                'etc...
                Set c = Nothing
            End If
        End With
    End If
    End Sub

  9. #9
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut
    c'est toujours difficile d'expliquer des choses qui paraissent évidente pour soi..
    merci pour ta patience mercatog.
    le combobox51 correspond à la colonne A

    Cordialement

  10. #10
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    As tu testé le code?
    sur change de combo50, tu alimente combo51
    sur change de combo51, tu remplis les autres contrôles

  11. #11
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut bonjour mercatog
    oui, j'ai testé le code mais ça ne fonctionne pas comme je dois l'utiliser.
    je crois que je ne t'ai pas été très clair dans mes explications une nouvelle fois.
    le combobox50 correspond à mes noms de feuilles (dans mon cas cchois d'une année puisque mon classeur est un planning).
    Une fois l'année choisi, c'est le choix du combobox51 qui me rempli les autres controles, et là cela reste vide.
    les controles se trouvent dans une frame, cela joue-t-il dans la programmation?
    Cordialement

  12. #12
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour,

    Voici un exemple qui traite des Combo en cascades.
    Vois si cela peut t'aider.
    Cordialement

  13. #13
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut bonjour nec14
    J'ai déjà malheureusement essayé pas mal d'exemples(dont celui-ci), mais je n'arrive pas à les adapter à mon travail.
    merci pour l'info

  14. #14
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Et si tu mettais un boût de ton fichier en exemple nous pourrions peut-être t'aider plus facilement.
    Je vais rechercher l'adaption du code dans mon appli et je te le transmets.

  15. #15
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut
    ce que j'ai fourni dans mon premier message n'est pas suffisant, nec14?

  16. #16
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Toutes mes excuses je n'ai pas remonté assez haut.

    Voici les code que j'utilise dans mon appli.
    Je te les donne tels quels car je n'ai pas eu le temps de l'adapter à tes besoins.
    Chez moi cela fonctionne bien.
    Selon le choix fait dans Combo1, une liste d'éléments s'affiche dans Combo2 et selon Combo2 une autre liste dans Comb3

    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
     
    'Chargement de la Combo1
    Private Sub Cb1_Change()
    Lst1.Text = Sheets("Adhé").Range("B" & Cb1.ListIndex + 3)
    End Sub
     
    'Chargement de la Combo2
    Private Sub Cb2_Change()
    Set mondico = CreateObject("Scripting.Dictionary")
        For i = 1 To Range("Motif").Count
            If Range("Profil")(i) = Me.Cb2 Then
            temp = Range("Motif")(i)
            mondico.Add temp, temp
        End If
        Next i
        Me.Cb3.List = mondico.items
    End Sub
     
    'Chargement de la Combo3
    Private Sub Cb3_Change()
    Dim cell As Range
        If Me.Cb3.Value <> "" Then
            For Each cell In Sheets("Données").Range("B2:F57")
                If UCase(Left(cell.Text, Len(Cb3.Text))) = UCase(Cb3.Text) Then
                    Me.T4.Text = cell.Offset(0, 2).Text
                    Me.T5.Text = cell.Offset(0, 1).Text
                    Me.T8.Text = cell.Offset(0, 5).Text
                    Exit Sub
                End If
            Next
        End If
    End Sub
    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
     
    Private Sub UserForm_Initialize()
    Dim Tab1 As Variant
    Dim Tab2 As Variant
    Dim Tab3() As Variant
    Dim Plage As Range
    Dim i As Long
    FrmOp1.Caption = "test"
        AfficheTitleBarre Me.Caption, False
     
    'remplissage des tableaux
    Set Plage = Sheets("Adhé").Range("C3:C800")
    Tab1 = Plage
    Set Plage = Sheets("Adhé").Range("D3:D800")
    Tab2 = Plage
     
    'concaténation des données
    ReDim Tab3(1 To UBound(Tab1))
        For i = LBound(Tab1) To UBound(Tab1)
            Tab3(i) = Tab1(i, 1) & " " & Tab2(i, 1)
        Next i
     
    'remplissage du Combo
    Me.Cb1.List = Tab3
     
    'affichage du 1er élément
    Me.Cb1.ListIndex = 0
     
    Set mondico = CreateObject("Scripting.Dictionary")
        For Each c In Range("Profil")
            If Not mondico.Exists(c.Value) Then mondico.Add c.Value, c.Value
        Next c
        Me.Cb2.List = mondico.items
    End Sub

  17. #17
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut
    bonjour nec14,
    merci de te pencher sur mon problème, j'ai étudié ton code, mail il ne correspond pas à mon projet car je ne fais pas de filtre par combobox.
    je voudrais remplir tous les autres controles automatiquement par le combobox51 après avoir sélectionné ma feuille, les donnés de ces controles sont sur ma feuille par ligne.
    Cordialement

  18. #18
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Dans l'Initialize de ton UF as-tu essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub UserForm_Initialize()
        Dim sh As Worksheet
        Workbooks.Open "ton fichier.xls"
        For Each sh In Sheets
            Me.ComboBox1.AddItem sh.Name
        Next sh
    End Sub

  19. #19
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut
    Oui nec14, cela alimente mon combobox50, mais je n'arrive pas à alimenter en cascade mes controles après avoir fait un choix avec mon combobox51
    Sincèrement

  20. #20
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour avenir80,

    Désolé d'avoir tardé à te répondre, mais un problème de santé m'a contraint à rester au lit.

    Sinon, pour répondre à ta question, non je n'ai pas d'autres solutions. Mon niveau en Vba n'est pas très avancé. Je vais chercher sur la toile et essayer de trouver une solution à ton problème.

    Encore toutes mes excuses
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Probleme ComboBox en cascade
    Par YOP33 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 17/01/2010, 15h08
  2. fonction pour filtrage avec des combobox en cascade
    Par Montor dans le forum Contribuez
    Réponses: 3
    Dernier message: 09/11/2009, 12h05
  3. [E-00] ComboBox en cascade + TextBox
    Par couistelle dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/11/2008, 10h32
  4. Combobox en cascade et sans doublons
    Par humbp dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/11/2007, 13h54
  5. [VBA-E] ComboBox en cascade avec correspondance dans matrice
    Par ViperSpy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/06/2006, 17h01

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