Chargez combobox 2 par apport à la combobox1

creolia

XLDnaute Impliqué
bonjour à tous

je viens vous pour u problème lier au remplissage d'une combobox selon le combobox1

dans une base de donnée j'ai 3 choix

choix1

choix2

choix 3

qui sont situer de A1:C3 se sont mes entete de colonne il sont charger au demarage de mon usf dans la combobox1

sous chaque choix une liste qui lui est propre comment puis je faire pour en choisissant choix1 dans ma combobox1 dans la combobox 2 la liste correspondant se charge svp merci
 

Pièces jointes

  • Classeur2.xls
    18 KB · Affichages: 54
  • Classeur2.xls
    18 KB · Affichages: 58
  • Classeur2.xls
    18 KB · Affichages: 57

klin89

XLDnaute Accro
Re : Chargez combobox 2 par apport à la combobox1

Bonjour creolia,
Bonjour le forum,

Un Userform, 2 Combobox :

VB:
Private Sub ComboBox1_Click()
choix = Me.ComboBox1.ListIndex
'Me.ComboBox2.ListIndex = -1
Me.ComboBox2.List = [Liste2].Offset(, choix).Resize(Application.CountA([Liste2].Offset(, choix))).Value
End Sub

Private Sub UserForm_Initialize()
Me.ComboBox1.List = Application.Transpose(Range("Liste1"))
End Sub

Zones à nommer par le menu > Insertion > Nom > Définir

Liste1
=DECALER(Feuil1!$A$1;;;;NBVAL(Feuil1!$1:$1))
Liste2
=DECALER(Feuil1!$A$2;;;NBVAL(Feuil1!$A:$A)-1)

Klin89
 

creolia

XLDnaute Impliqué
Re : Chargez combobox 2 par apport à la combobox1

BONJOUR fohest et klin89 avant tous merci fohest pour ton astuce je me pencherais en detail dessus

en ce qui concerne klin n étant pas un grand pro j'ai tenter d'adapter ta solution en ajoutant une colonne supplémentaire et j’avoue je viens de passer presque 2 heure et j'arrive pas à comprendre la logique de la formule.

dans combobox1 j'ai essayer de mettre un choix 4 et il ne me prend que 3 choix meme en essayant bidouiller.

comment puis je faire car la je nage complet svp
 

creolia

XLDnaute Impliqué
Re : Chargez combobox 2 par apport à la combobox1

Re bonjour à tous je remercie Klin89 pour sont aide mais j'ai beau me pencher sur sa solution rien n'y fais je recreer deux fois la meme chose et j'ai deux action totalement opposer si quelqu'un à une solution pour mon probleme avec une autre methode je suis preneur car la j'avance plus du tout c'est bien la premiere fois lol merci d'avance
 

creolia

XLDnaute Impliqué
Re : Chargez combobox 2 par apport à la combobox1

Bonsoir à tous

je reviens vers vous pour au sujet du meme probleme la solution proposer klind89 fonctionne le soucis c'est j'ai une erreur tant que j'ajoute pas au moins 2 choix

comment puis je faire pour que la solution fonctionne dés le premier choix svp merci
 

Pièces jointes

  • TESTE.xls
    31 KB · Affichages: 49
  • TESTE.xls
    31 KB · Affichages: 51
  • TESTE.xls
    31 KB · Affichages: 52

Robert

XLDnaute Barbatruc
Repose en paix
Re : Chargez combobox 2 par apport à la combobox1

Bonjour le fil, bonjour le forum,

Le code de Klin fait référence à une plage nommé qui n'existe pas dans tes fichiers exemples... J'ai donc modifié et commenté pour que tu puisses mieux comprendre...

Le code :
Code:
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
    'alimente la ComboBox1 des valeure de la première ligne, transposée en colonne (colonne A à dernière colonne éditée)
    Me.ComboBox1.List = Application.Transpose(.Range(Cells(1, 1), Cells(1, Application.Columns.Count).End(xlToLeft).Address(0, 0)))
End With 'fin de la prise enc compte de l'onglet "Feuil1"
End Sub


Private Sub ComboBox1_Click()
Dim col As Byte 'déclare la variable col (COLonne)

col = Me.ComboBox1.ListIndex + 1 'définit la colonne col par rapport au ListIndex de la ComboBox1
ComboBox2.Clear 'vide la ComboBox2
'alimente la ComboBox2
With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
    Me.ComboBox2.List = .Range(Cells(2, col), Cells(Application.Rows.Count, col).End(xlUp)).Value
End With 'fin de la prise enc compte de l'onglet "Feuil1"
End Sub
Le fichier :
 

Pièces jointes

  • Creolia_V01.xls
    18 KB · Affichages: 39
  • Creolia_V01.xls
    18 KB · Affichages: 43
  • Creolia_V01.xls
    18 KB · Affichages: 38

creolia

XLDnaute Impliqué
Re : Chargez combobox 2 par apport à la combobox1

RE bonjour robert et merci pour ton intervention

j'ai recreer ton fichier avec les usf que tu ma donnée mais quand une seul colonne est renseigner j'ai toujour ce message d'erreur

IMPOSSIBLE DE DEFINIR LA PROPRIETE LIST.INDEST TABLE PROPRIETER NON VALIDE

et sa n'arrive que quand j'ai aucune ou une seule entête à partir de 3 entete tous fonctionne.

voir erreur dans le fichier exemple
 

Pièces jointes

  • Creolia_V02.xls
    32.5 KB · Affichages: 35

creolia

XLDnaute Impliqué
Re : Chargez combobox 2 par apport à la combobox1

Re bonjour à tous je reviens vers vous pour mon probleme je rappel juste le soucis ont ma gentillement proposer des solution mais ces dernier me font une erreur tant qu'il y a pas au moins deux entete dans la base de donnee comment puis je faire pour que meme si il ya qu'une entete celle ci sois alimenter dans ma combobox et aussi ne creer pas une erreur merci d'avance
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Chargez combobox 2 par apport à la combobox1

Bonjour le fil, bonjour le forum,

Je te rappelle quand même l'intitulé de ton fil : Chargez combobox 2 par apport à la combobox1 où il s'agissait d'alimenter une ComboBox2 par rapport à un choix dans la ComboBox1. Maintenant tu ne veux plus de choix dans la ComboBox1 mais tu veux que le code fonctionne quand même... C'est à se la prendre, se la mettre dans un sac de congélation et se la mettre au congel pendant une semaine histoire de se calmer un peu non !?

En pièce jointe une version 4 avec le code ci-dessous :
Code:
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
    If Application.WorksheetFunction.CountA(Rows(1)) = 1 Then 'si le nombre de valeur de la ligne 1 est égal à 1
        Me.ComboBox1.AddItem Range("A1").Value 'alimente la ComboBox1
    Else 'sinon
        'alimente la ComboBox1 des valeure de la première ligne, transposée en colonne (colonne A à dernière colonne éditée)
        Me.ComboBox1.List = Application.Transpose(.Range(Cells(1, 1), Cells(1, Application.Columns.Count).End(xlToLeft).Address(0, 0)))
    End If
End With 'fin de la prise enc compte de l'onglet "Feuil1"
End Sub
Le fichier :
 

Pièces jointes

  • Creolia_V04.xls
    34.5 KB · Affichages: 48

Discussions similaires