Doublon dans combobox

bonjour tous j'ai un Userform avec plusieurs combobox et dans la combobox1 liste des noms de clients il ya des doublons ensuite renseigne la combobox2 avec les n° de facture mais liste toutes les facture des client il faudrait seulement celle du client combobox1 j'ai trouver des piste sur ce forum mais quand je les intègres a mon code j'ai des erreur voici mon code actuel merci d'avance

Option Explicit

Dim f As Worksheet
Dim i&, ln&, derln&

Private Sub ComboBox1_Change()
    ln = ComboBox1.ListIndex + 2
    ComboBox2.ListIndex = ln - 2
    TextBox1 = f.Range("K" & ln)
    TextBox2 = f.Range("BN" & ln)

    ComboBox3.ListIndex = 1
End Sub

Private Sub ComboBox2_Change()
    ln = ComboBox2.ListIndex + 2
    ComboBox1.ListIndex = ln - 2
    TextBox1 = f.Range("K" & ln)
    TextBox2 = f.Range("BN" & ln)

    ComboBox3.ListIndex = 1
End Sub

Private Sub CommandButton1_Click()
    f.Range("N" & ln) = ComboBox3
    f.Range("CP" & ln) = TextBox3
    Unload Me
End Sub

Private Sub UserForm_initialize()

   Set f = Sheets("base facturation")
   derln = f.Range("A" & Rows.Count).End(xlUp).Row
   ComboBox1.List = f.Range("C2:C" & derln).Value
   ComboBox2.List = f.Range("A2:A" & derln).Value
   ComboBox3.List = Array("", "Réglé")

End Sub

Bonjour,

Private Sub UserForm_initialize()
    InitCombo
End Sub
Private Sub InitCombo()
    Dim i&, Ws As Worksheet
    Set Ws = Sheets("base facturation")
    With Ws
    'Récupère les données
    For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row
        Me.ComboBox1 = .Range("C" & i)
        Me.ComboBox2 = .Range("A" & i)
        '...et filtre les doublons
        If Me.ComboBox1.ListIndex = -1 Then
        Me.ComboBox1.AddItem .Range("C" & i)
        Me.ComboBox2.AddItem = .Range("A" & i)
        End If
    End With
    Next j
    Me.ComboBox3.List = Array("", "Réglé")
End Sub

A+

merci de ton aide

ca annonce une erreur de compilation sur la ligne

Me.ComboBox2.AddItem = .Range("A" & i)

Fournir le UserForm (en le sélectionnant puis... Avec Exporter un fichier.) ou mieux fournir un classeur bidon avec un embryon de feuille "base facturation".

A+

ok

voila le fichier sur l'onglé facture clique sur règlement facture en haut a gauche (ca ouvre userform conserné)

3facturier-v8.zip (635.56 Ko)

Bonjour,

J'ai fait pas mal de modifications à mon avis indispensable.

Remplacé f par Ws : Les variables avec un seul caractères sont source d'erreur

Dim i, ln et derln n'ont pas lieu d'être en tête du module surtout "i" Seul Ws est vraiment à a place ici.

Eviter d'utiliser le "L" dans les noms de variables surtout en minuscule car on ne le distingue pas du nombre 1 dans le code

J'ai donc remplacé ln par iR et derln par iLR par que R c'est Row (ligne en anglais ) et LR c'est LastRow (dernière ligne en anglais)

Ce sont des noms courament utilisé un peu partout par les habitués...

J'ai rajouté des "Me." un peu partout devant les noms de contrôle c'est une saine habitude à prendre...

J'ai rajouté des On Error Resume Next car à ce stade la définition de ComboBox3 est prématurée. Donc c'est une manière de mettre la poussière sous le tapis, mébon... De toute façon à mon avis ce combo n'a rien à fiche ici. Il faudrait le remplacer par un CheckBox si la facture est réglé...

+ Quelques modif dans ma procédure que je n'avais pas pu tester faute de fichier...

Enfin tu ne peux pas affecter les valeurs des TextBox à une ligne qui n'existe pas encore mais là c'est plus complexe je n'ai pas corrigé car ça m'obligerait à te faire tout ton USF...

A+

merci de ton aide galopin01

mais quand je clic sur le combobox1 nom du client il y a plusieurs fois le même nom client ca n'enlève pas les doublons ,et quand tu sélectionne un client dans la combobox2 il y a aussi les facture des autre client

Oui en fait il faudrait supprimer tous les évènement Combo_Change qui parasitent le système...

Dans ce contexte, il faut faire avec Click seulement !

A+

j'ai supprimé les change effectivement la combobox1 plus de doublon

mais quand tu choisi un nom ca ne change rien dans la combobox2 toujours les même n° de facture

Option Explicit

Dim Ws As Worksheet

Private Sub CommandButton1_Click()
Dim iR&, iLR&
    Ws.Range("N" & iR) = Me.ComboBox3
    Ws.Range("CP" & iR) = Me.TextBox3
    Unload Me
End Sub
Private Sub UserForm_initialize()
    Set Ws = Worksheets("base facturation")
    InitCombo
End Sub
Sub InitCombo()
    Dim i&
    With Ws
    'Récupère les données
    For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row
        Me.ComboBox1 = .Range("C" & i)
        Me.ComboBox2 = .Range("A" & i)
        '...et filtre les doublons
        If Me.ComboBox1.ListIndex = -1 Then
        Me.ComboBox1.AddItem .Range("C" & i)
        Me.ComboBox2.AddItem .Range("A" & i)
        End If
    Next
    End With
    Me.ComboBox3.List = Array("", "Réglé")
End Sub

Évidement :

Tu reviens au cas de figure du premier du premier UserForm, procéder avec un Dico... Mais je ne prendrai pas en charge cette question.

A+

Rechercher des sujets similaires à "doublon combobox"