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-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 67
    Par défaut Combobox en cascade
    Citation Envoyé par Vba14 Voir le message
    Bonjour,

    J'ai ce fichier qui m'a été utile pour mes applications.
    Pièce jointe 580996
    Bon courage
    Merci pour ce fichier.

    j'ai un premier combobox sur un usf qui est alimenté par des valeurs uniques d'une feuille.

    ce que j'ai du mal à faire , c'est alimenter le deuxième combobox , mais avec des valeurs multiples qui se trouvent sur une autre feuille

    par exemple
    en colonne A de ma première feuille , j'ai les valeurs bleu, blanc, verte, jaune
    et en colonne Y de ma deuxième feuille, j'ai les valeurs Bleu, jaune, verte, blanc, verte, bleu,
    et en colonne Z, les valeurs correspondant que je voudrais retrouver dans mon comboBox2 en fonction de la couleur sélectionnée dans le combobox1
    Faut il que je passe par un recherchev dans la formule ?

    je bloque un peu

    merci

  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.

    Pourrais-tu donner ta version d'Excel?

    Si c'est Excel365, tu pourrais t'inspirer de mon billet qui illustre comment utiliser les nouvelles fonctions 365 pour réaliser ce que tu souhaites.
    "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 confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 67
    Par défaut
    Pardon, j'ai oublié de l'indiquer c'est fait...

    xl 2016

  4. #4
    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
    Pour d'autres versions que 365, voici comment je procéderais, en m'appuyant bien entendu sur des tableaux structurés. L'idée est de trier les valeurs sur base de la couleur puis d'extraire la plage correspondante à la couleur choisie:

    Dans un module standard, j'initialise le userform avec la liste triée des couleurs grâce à une fonction
    A la modification du combobox des couleurs dans le userform, on adapte la liste des valeurs liées à la couleur choisie grâce à une fonction du module standard qui trie les valeurs sur base des couleurs et qui extrait celles qui correspondent au choix.

    Sur base d'un tableau des couleurs t_Couleurs et d'un tableau des valeurs t_Valeurs

    Nom : 2020-12-14_163621.png
Affichages : 118
Taille : 5,9 Ko


    La fonction d'un module standard qui renvoie un array VBA avec les couleurs triées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function getColors()
      With Range("t_Couleurs").ListObject.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("t_Couleurs[couleur]")
        .Apply
      End With
      getColors = Range("t_Couleurs[Couleur]")
    End Function
    La fonction d'un module standard qui renvoie les valeurs triées pour une couleur donnée. On doit un peu finasser sur la fin car il faut traiter le cas d'une couleur sans valeur ou d'une seule valeur pour la couleur choisie, car List impose un tableau et Range.Value ne renvoie pas un tableau pour un range monocellule.
    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
    Function getValues(Color As String)
      Dim Values As Range
      Dim Pos, CountOf As Long, t()
     
      With Range("t_Valeurs").ListObject.Sort
        .SortFields.Clear
        .SortFields.Add Range("t_Valeurs[Couleur]")
        .SortFields.Add Range("t_Valeurs[Valeur]")
        .Apply
      End With
      CountOf = Application.CountIfs(Range("t_Valeurs[Couleur]"), Color)
      If CountOf > 0 Then
        Pos = Application.Match(Color, Range("t_Valeurs[Couleur]"), 0)
        Set Values = Range("t_Valeurs[Valeur]")(Pos).Resize(CountOf)
        If Values.Cells.Count = 1 Then
          ReDim t(1 To 1, 1 To 1)
          t(1, 1) = Values.Value
        Else
          t = Values.Value
        End If
        getValues = t
        Erase t
      End If
    End Function
    Le code d'amorçage du userform dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Test()
      With UserForm1
        .cboColors.List = getColors()
        .Show
      End With
    End Sub

    Le code du userform qui gère le choix d'une couleur
    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 cboColors_Change()
      SetValues
    End Sub
     
    Sub SetValues()
      Dim Values
     
      Values = getValues(cboColors.Value)
      If Not IsEmpty(Values) Then
        cboValues.List = Values
      Else
        cboValues.Clear
      End If
    End Sub

    Le fichier: comboBox-Cascade.xlsm
    "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...
    ---------------

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 67
    Par défaut
    Merci

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 10
    Par défaut
    Citation Envoyé par yalefe Voir le message
    Merci
    oh là là mais j'aie rien compris à ce qui est marqué

    vous etes tous aussi doués ?

    j'ose meme pas demander de l'aide...

  7. #7
    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
    @Jeanne,

    Il faut peut-être commencer par le début... A, puis B, puis C...
    "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...
    ---------------

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

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