XL 2016 RechercheV avec combobox

  • Initiateur de la discussion Initiateur de la discussion Mimi
  • 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 !

Mimi

XLDnaute Occasionnel
Bonjour à Tous,
Voilà je voudrais savoir comment faire une rechercheV avec les combobox.
Le premier sert à indiquer le département qui sont dans la base Auvergne,
résultat dans la cellule D3.
Le deuxième sert à rechercher la ville, par exemple en tapant les premières lettres,
résultat dans la cellule D7.
Ensuite en rapport avec la ville inscrite en D7, il faudrait pouvoir remplir les cellules D12, G12 et D15 toujours en rapport avec
le nom de la ville en D7.
D'avance je vous remercie
Mimi
 

Pièces jointes

Bonjour,

Mets ce code dans le module de la feuille :

VB:
Private Sub ComboBox1_Change()
  Dim C As Range
  Me.ComboBox2.Clear
  With Sheets("Auvergne")
    For Each C In .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
      If C.Value = Me.ComboBox1.Value Then
        Me.ComboBox2.AddItem C.Offset(, 1).Value
      End If
    Next C
  End With
End Sub

Private Sub ComboBox2_Change()
  Dim C As Range
  With Sheets("Auvergne")
    For Each C In .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
      If C.Value = [D3] And C.Offset(, 1).Value = [D7] Then
        [D12] = C.Offset(, 2).Value
        [G12] = C.Offset(, 3).Value
        [D15] = C.Offset(, 4).Value
      End If
    Next C
  End With
End Sub

Cordialement.

Daniel
 
Voici ma solution, avec des tableaux structurés dans la feuille Auvergne
VB:
Private Sub ComboBox1_Change()
    Dim rng As Range
    Set rng = Feuil1.Range(Replace(ComboBox1, "-", "_"))
    rng.Name = "nomsVilles"
    ComboBox2.ListFillRange = rng.Name
End Sub

Private Sub ComboBox2_Change()
    Dim i As Long, rng As Range
    i = ComboBox2.ListIndex
    Set rng = Feuil1.Range(Replace(ComboBox1, "-", "_"))
    If i >= 0 Then
        [D12].Value = rng.Cells(i + 1, 2).Value
        [G12].Value = rng.Cells(i + 1, 3).Value
        [D15].Value = rng.Cells(i + 1, 4).Value
    End If
End Sub
Cordialement,
--
LR
 

Pièces jointes

Bonjour.
Juste pour dire que le sens du libellé de la discussion m'apparait en soit comme une aberration, dans la mesure où une ComboBox est déjà équipée d'un dispositif de recherche dans la liste qui lui a été attribuée, et qu'il suffit donc que celle ci soit en relation avec la source (de façon pas forcément directe), pour qu'il soit inutile de faire de recherche dans celle-ci si l'on veille à ce quelle soit directement définie en fonction de sa propriété ListIndex.
 
Cette ressource en dit plus d'une façon générale pour des données où tout est dans un seul tableau et pour des ComboBox dans un UserForm …
Dans votre exemple, si le choix en 1er du département est obligatoire, le principe pourrait être mis en pratique en mettant les tableaux des départements dans une Collection. Un membre d'une Collection peut en effet être accédé par sa position, qu'un CBxDépartmt.ListIndex + 1 donnerait.
 
Si vous tenez à des tableaux séparés pour les départements, la sélection du bon tableau pourrait se faire comme j'ai dit, et ensuite il serait possible d'utiliser un ComboBoxLiées pour pour toutes les infos du tableau sélectionné, si on veut pouvoir chercher d'après d'autres infos que la ville. Si c'est toujours la ville, on pourait se contenter d'affecter au CBxVille.List la 1ère colonne du tableau extrait de la Collection lors du CBxDépartmt_Change.
 
- 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
6
Affichages
639
Réponses
7
Affichages
697
Retour