ComboBox 3 niveaux sans doublons et lignes vide

  • Initiateur de la discussion Initiateur de la discussion sebcane
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sebcane

XLDnaute Nouveau
Bonjour,
Je vous joint mon code que j'aimerais améliorer, sans doublon et ligne vide dans le combobox2.
Malgrés plusieurs tentatives je n'y arrive pas. (débutant de chez débutant 🙂)

Code:
Dim Tbl(), a, b
Private Sub UserForm_Initialize()

  a = Range("article").Value
  b = Range("SHIP_SHIP").Value
  Set d1 = CreateObject("Scripting.Dictionary")
  For Each c In b
    d1(c) = ""
  Next c
  Me.ComboBox1.List = d1.keys
End Sub
Private Sub ComboBox1_Change()

   If Me.ComboBox1.ListIndex = -1 Then
     Set d1 = CreateObject("Scripting.Dictionary")
     tmp = UCase(Me.ComboBox1) & "*"
     For Each c In b
       If UCase(c) Like tmp Then d1(c) = ""
     Next c
     Me.ComboBox1.List = d1.keys
     Me.ComboBox1.DropDown
   Else
     Condition = Me.ComboBox1
     If Condition = "" Then Exit Sub
     ligne = 0
     ReDim Tbl(1 To UBound(a))
     For i = LBound(a) To UBound(a)
       If b(i, 1) = Condition Then ligne = ligne + 1: Tbl(ligne) = a(i, 1)
     Next i
     ReDim Preserve Tbl(1 To ligne)
     Me.ComboBox2.List = Tbl
     Me.ComboBox2.SetFocus
     If Val(Application.Version) > 10 Then SendKeys "{f4}"
   End If
End Sub
Private Sub ComboBox2_Change()

 If Me.ComboBox2.ListIndex = -1 Then
  Set d1 = CreateObject("Scripting.Dictionary")
  tmp = UCase(Me.ComboBox2) & "*"
  For Each c In Tbl
     If UCase(c) Like tmp Then d1(c) = ""
  Next c
  Me.ComboBox2.List = d1.keys
  Me.ComboBox2.DropDown
 Else
   tmp1 = Me.ComboBox1: tmp2 = Me.ComboBox2
   For p = 1 To UBound(a)
     If b(p, 1) = tmp1 And a(p, 1) = tmp2 Then Me.TextBox1 = Range("référence")(p)
   Next p
  End If
End Sub
Private Sub CommandButton1_Click()

 If Me.ComboBox1 <> "" And Me.ComboBox2 <> "" Then
  ActiveCell = Me.ComboBox1
  ActiveCell.Offset(, 1) = Me.ComboBox2
  ActiveCell.Offset(, 2) = Me.TextBox1
  Unload Me
  Range("A4").Select
 Else
   MsgBox "Incomplet!"
   Exit Sub
 End If
End Sub
Ceci est un code réalisé grace à Mr Boisgontier
Merci d'avance
 
Re : ComboBox 3 niveaux sans doublons et lignes vide

Re comme convenu voici le fichier.
Mr Boisgontier je me suis servi du code de votre fichier joint mais ca bloque au niveau de la combobox2 et je ne vois pas d'où vient le problème.
Document Cjoint
J'aimerais que le combobox1 me donne le code en format nombre pour être utilisé dans des formules, et avoir une intuitivité.
Et aussi ci possible que le combobox2 soit trouvé avec les lettres contenu.
La combobox3 peut être remplacé par une textbox car il n 'y aura qu'une possibilité.
 
Dernière édition:
Re : ComboBox 3 niveaux sans doublons et lignes vide

Bonjour,

-Frapper les premières lettres des codes pour niv 1
-Frapper les premières lettres ou lettres contenues des codes pour niv 2

Pour le niv1, on pourrait afficher les 2 colonnes A et B dans le comboBox.

cf PJ

JB
 

Pièces jointes

Dernière édition:
Re : ComboBox 3 niveaux sans doublons et lignes vide

Super Mr Boisgontier, je préfére ce code car il garde la mise en forme d'excel.
Pour scinder la colonne A et B dans le premier comboBox pourquoi pas cela pourrait rendre pas mal.
Merci A toi ainsi qu'a Dranreb pour votre aide.
Et sinon de ou venait l'erreur pour l'affichage du premier comboBox ?
 
Re : ComboBox 3 niveaux sans doublons et lignes vide

>Et sinon de ou venait l'erreur pour l'affichage du premier comboBox ?

Numérique comparé à combobox (texte)

Voir PJ pour 2 colonnes au niveau 1

Sans titre.gif

http://boisgontierjacques.free.fr/fichiers/Formulaire/FormIntuitif2Colonnes4.xls

JB
 

Pièces jointes

  • EGBvbNp3XkO_extrait1C.xls
    EGBvbNp3XkO_extrait1C.xls
    79 KB · Affichages: 40
  • Sans titre.gif
    Sans titre.gif
    34.6 KB · Affichages: 44
  • Sans titre.gif
    Sans titre.gif
    34.6 KB · Affichages: 41
Dernière édition:
Re : ComboBox 3 niveaux sans doublons et lignes vide

Super comme ça,
Par contre j'aurais voulu savoir si dans un userform on pouvais faire apparaitre dans une textbox le resultat d'un calcul (matricielle sur 2 onglets différent) ? style:
Code:
=SIERREUR(SI(B3<>"";(INDEX(ZSD!$J$2:$J$10000;EQUIV(1;(B3=ZSD!$A$2:$A$10000)*(C3=ZSD!$E$2:$E$10000);0))*RECHERCHEV(C3;ref_ref;67;0)+RECHERCHEV(M3;Bacs!A:BO;67;FAUX));"");(SI(B3<>"";(INDEX(ZSD!$J$2:$J$10000;EQUIV(1;(B3=ZSD!$A$2:$A$10000)*(C3=ZSD!$E$2:$E$10000);0))*RECHERCHEV(C3;ref_ref;67;0)+RECHERCHEV(K3;Bacs!A:BO;67;FAUX));"")))
 
Re : ComboBox 3 niveaux sans doublons et lignes vide

Bonjour Mr Boisgontier je viens de faire des essais avec votre fichier, et le mien modifié.
Je viens de m'appercevoir qu'il y a une eereur au niveau de l'emballage (colonne LQ2) il me trouve pas le bon emballage après quelque essais.
Pourriez vous y jeter un oeil ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
264
Réponses
3
Affichages
565
Réponses
10
Affichages
509
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
991
Réponses
3
Affichages
832
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
215
Réponses
3
Affichages
262
Retour