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 sans doublon à partir d'un critère


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 306
    Par défaut combobox sans doublon à partir d'un critère
    Bonsoir à tous,

    je suis confronté à petit problème. J'ai regardé si il existait, mais à priori non.

    Voilà, j'ai dans une feuille excel une colonne nom et dans une autre colonne des produits.

    ma ComboBox3.list contient une liste de nom correspondant à ma colonne nom. elle a été créée par ComboBox3.list = array("", "nomA", "nomB", ... , "nomN"). (tous les noms sont différents !)

    Dans un UserForm, L'utilisateur choisit dans le menu déroulant du ComboBox3, le nom qu'il souhaite. C'est alors que la macro va rechercher dans la colonne produits, tous les produits rattachés au nom choisit. Cela a pour effet d'enrichir la liste du ComboBox4 de produits. La ComboBx4 ne doit pas avoir de doublons.

    j'ai un début de mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For ligne = 9 To Sheets("Base").Range("J" & Rows.Count).End(xlUp).Row
    If Cells(ligne, 4).Value = ComboBox3.Value Then
    ComboBox4.AddItem Cells(ligne, 10).Value
    ElseIf Me.ComboBox4.ListIndex = -1 Then
    Me.ComboBox4.AddItem Cells(ligne, 10).Value
    End If
    End If
    Next ligne
    Si vous savez m'aider, je vous remercie par avance. Je ne sais pas comment m'y prendre.

    Au plaisir de vous lire.

  2. #2
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    Tu peux utiliser l'objet dictionary. Avec lui, on peut tester si une valeur est déjà dedans et l'ajouter dans le cas contraire.

    Tu trouveras là, de bonnes explications et des exemples pour comprendre :
    http://boisgontierjacques.free.fr/pa...#ListeSansDoub

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 306
    Par défaut
    merci,

    mais cela ne marchera pas, j'ai déjà consulté ce site. ça ne marchera pas car son tableau est rangé. je m'explique les doublons se suivent. or dans mon cas les doublons ne suivent pas forcément...

    Donc comment faire ?

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Bien que tu sois persuadé que le dictionnaire ne donnera pas le résultat attendu, il ne faut pas hésiter à faire le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim mondico
    Dim Ligne As Long
        Set mondico = CreateObject("Scripting.Dictionary")
        Me.ComboBox4.Clear
        For Ligne = 9 To Sheets("Base").Range("J" & Rows.Count).End(xlUp).Row
            If Cells(Ligne, 4).Value = ComboBox3.Value Or Me.ComboBox3.ListIndex = -1 Then
                mondico(Cells(Ligne, 10).Value) = ""
            End If
        Next Ligne
        ComboBox4.List = Application.Transpose(mondico.keys)
    Cordialement.

  5. #5
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 306
    Par défaut
    Bonjour,

    Merci gtz d'avoir écrit le code avec "mondico" car je ne suis pas fort en vba. Je vais tenter pour voir.

    Cependant j'ai cru comprendre qu'avec la methode "mon dico" suivant qu'on avait un pc ou un mac la methode n'est pas compatible.

    Cependant j'ai "bricolé" autrement, mais je vous fais parvenir tout cela ce soir...

    Merci pour le moment aux 2 intervenants pour votre aide, c'est gentil.

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bonjour,

    sur MAC comme sous Windows il est possible d'effectuer les mêmes opérations via l'objet VBA Collection
    ou encore en combinant une variable tableau et la fonction EQUIV, tout dépend du volume à traiter,
    quelques exemples dans les discussions de ce forum …


    _________________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …

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

Discussions similaires

  1. Combobox sans doublons
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/03/2016, 14h30
  2. [XL-2003] ComboBox Sans Doublon: ça ne marche jamais
    Par Otmanes dans le forum Excel
    Réponses: 2
    Dernier message: 14/07/2009, 11h53
  3. Remplissage de combobox sans doublon
    Par Shadow5 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/04/2008, 20h06
  4. combobox sans doublon (colonne de reference avec cellule vide)
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/04/2008, 17h08
  5. Combobox sans doublon
    Par Psychoze dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/03/2008, 19h18

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