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 :

Filtre sans doublons dans ComboBox


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
    Juillet 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 14
    Par défaut Filtre sans doublons dans ComboBox
    Bonjour a tous.

    Je poste ici car j'ai vraiment besoin d'aide, je galère depuis déja 2 jours sur ce truc..

    Voila, je dois faire un formulaire type "annuaire" et je bloque dans les comboBox..

    Alors voila, j'ai une combo "Nom" et je voudrai qu'a la frappe du nom la combos "Prénom" me propose les choix qui correspondent, dans le cas ou il y a des personne avec le meme nom mais pas forcement le meme prénom.
    Ensuite même principe pour le numéro de telephone, mais sa, je pourrais bien adapter, si vous pouviez m'aider à completer le début de code que j'ai adapté, sa m'arrangerai bien

    Le problème pour l'instant est que La liste du combo n'est pas exclusive au nom déja entré, j'ai donc pour le même nom tous les prénoms de ma feuille.
    Et puis pour pauffiner, mais c'est pas trop important, la liste m'affiche plein de ligne vide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub UserForm_Initialize()
     
    Dim Cell As Range
        Me.ComboBox3.Clear
     
        For Each Cell In Worksheets("feuil1").Range("E2:E65536")
            Me.ComboBox3 = Cell
            If Me.ComboBox3.ListIndex = -1 Then _
                Me.ComboBox3.AddItem Cell
     
        Next Cell
     
    End Sub




    Ma combo 2 est celle du nom, la 3 celle du prénom et la 5 celle du tel :






    Voila voila, je n'aime pas trop demander aux autres mais je suis pressé par le temps cette fois ci..

    Par contre si quelqu'un me repond, je suis débutant je comprends pas encore tout en VB. ^^

    En tout cas merci beaucoup d'avance !

  2. #2
    Membre expérimenté Avatar de ilcocodrillo
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Âge : 19
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    Bonjour,

    Tu peux t'inspirer de ce sujet dans la FAQ

    Comment remplir une ComboBox sans doublon et trié par ordre croissant ?

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 14
    Par défaut
    hummm, j'ai trouvé la partie qui m'interesse, j'ai quelque probleme a la faire fonctionner, voila comme je l'ai arrangée, pouvez vous me dire ou est l'erreur svp ?

    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
    Private Sub Alim_Combo(CbxIndex As Integer, Optional Cible As Variant)
        Dim j As Integer
        Dim Obj As Control
     
        Set Obj = Me.Controls("ComboBox" & CbxIndex)
     
        Obj.Clear
     
        If CbxIndex = 2 Then
            For j = 2 To NbLignes
                Obj = Ws.Range("E" & j)
               If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("E" & j)
            Next j
        Else
             For j = 2 To NbLignes
                If Ws.Range("E" & j).Offset(0, CbxIndex - 2) = Cible Then
                    Obj = Ws.Range("E" & j).Offset(0, CbxIndex - 1)
                    If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("E" & j).Offset(0, CbxIndex - 1)
                End If
            Next j
       End If
     
       Obj.ListIndex = -1
    End Sub
    Bien entendu j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub ComboBox2_Change()
     
    Alim_Combo 3, ComboBox2.Value
     
    End Sub
     
    Private Sub ComboBox3_Change()
     
     Alim_Combo 4, ComboBox3.Value
     
    End Sub
    Et j'ai changer ma combo telephone qui est passé la 4 au lien de la 5 pour les regrouper (2,3,4)

    Merci !

  4. #4
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 14
    Par défaut
    he hop, merci moi même. Apres un gros mal de crane et des conseil d'un collegue voila mon code :

    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
    Private Sub ComboBox2_AfterUpdate()                                         'nom
     
    Worksheets("Feuil1").Activate
    Cells(2, 4).Select
    X = 2
    Me.ComboBox3.Clear
     
     
    Do While (Cells(X, 4).Value) <> ""
        If ComboBox3.Value = "" Then
                If (Cells(X, 4).Value) = ComboBox2.Value Then
                    ActiveCell.Offset(0, 1).Activate
                    Me.ComboBox3.AddItem ActiveCell.Value
                    ActiveCell.Offset(0, -1).Activate
                End If
            X = X + 1
            ActiveCell.Offset(1, 0).Activate
        Else
                If (Cells(X, 5).Value) = ComboBox3.Value And (Cells(X, 4).Value) = ComboBox2.Value Then
                    ActiveCell.Offset(0, 2).Activate
                    Me.ComboBox5.AddItem ActiveCell.Value
                    ActiveCell.Offset(0, -3).Activate
                    Me.ComboBox2.AddItem ActiveCell.Value
                    ActiveCell.Offset(0, 1).Activate
                End If
            X = X + 1
            ActiveCell.Offset(1, 0).Activate
        End If
    Loop
    la c'est juste le pour le Combox "nom"

    maintenant j'aurai aimé un tout ptit peu d'aide pour la fonction Lcase, car j'aimerai que les combo ne tienne pas compte de la casse pour les données dans la liste. Le problème etant que je ne connais pas cette fonction.

    Edit : me suis emballé, c'est bon !

    Et une fois tout ça fini ! hop je simplifie le code et fini !

Discussions similaires

  1. [XL-2003] Filtres sans doublons et Combobox // VBA
    Par jonleboss44 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 21/05/2014, 13h11
  2. Réponses: 17
    Dernier message: 11/03/2009, 09h35
  3. Renseigner une liste sans doublon dans une feuille ou dans un userform
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 26/01/2009, 14h54
  4. Réponses: 6
    Dernier message: 19/01/2009, 21h39
  5. Liste de choix sans doublons dans une colonne
    Par LouFels dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2008, 22h58

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