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 :

Combobox en cascades


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 30
    Par défaut Combobox en cascades
    Bonjour,

    J'ai une liste de véhicules

    Nom : 1.PNG
Affichages : 2066
Taille : 26,1 Ko


    et un userform avec 2 combobox.

    Dans la premiere combobox il y a la marque de véhicules et dans la deuxième il y a le modèle du véhicule.

    Le code pour afficher la première combobox avec la liste des véhicules est :


    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
    Private Sub userform_initialize()
     
     
     Set f = Sheets("vehicules")
      Tbl1 = f.Range("A2:D" & f.[A65000].End(xlUp).Row).Value
      n = 0: Dim Tbl2()
      For i = 1 To UBound(Tbl1)
        If Tbl1(i, 1) <> "" Then
          n = n + 1
          ReDim Preserve Tbl2(1 To UBound(Tbl1, 2), 1 To n)
          For k = 1 To UBound(Tbl1, 2): Tbl2(k, n) = Tbl1(i, k): Next k
        End If
      Next i
      Me.louer_v.Column = Tbl2
     
    End Sub
    Je ne peux pas changer ce code car j'ai un userforme qui permet d'ajouter des véhicules.

    Lorsque j'ai Deux véhicules de la même marque, par exemple Wv, j'aimerais qu'apparaisse dans la deuxième combobox uniquement les 2 modèles de chez VW. Je ne peux donc pas afficher la liste de la deuxième combobox avec Vlookup, puisqu'il y a deux modèles :/

    J'ai essayer mais je n'y arrive pas. Quelqu'un pourrais il m'aider svp, cela dépasse mes compétences.

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    Dim f, BD(), NbCol
    Option Compare Text
    Private Sub UserForm_Initialize()
      Set f = Sheets("vehicules")
      Set d = CreateObject("Scripting.Dictionary")
      BD = f.Range("A3:E" & f.[A65000].End(xlUp).Row).Value
      Me.ListBox1.List = BD
      d("*") = ""
      For i = LBound(BD) To UBound(BD)
         d(BD(i, 1)) = ""
      Next i
      Me.ComboBox1.List = d.keys
      '-- en têtes listbox
      NbCol = 5
      Me.ListBox1.ColumnCount = NbCol
      x = Me.ListBox1.Left + 10
      y = Me.ListBox1.Top - 12
      For i = 1 To NbCol
        Set Lab = Me.Controls.Add("Forms.Label.1")
        Lab.Caption = f.Cells(2, i)
        Lab.Top = y
        Lab.Left = x
        x = x + f.Columns(i).Width * 1#
        temp = temp & f.Columns(i).Width * 1# & ";"
      Next
      Me.ListBox1.ColumnWidths = temp
      '--
      For i = 1 To NbCol
        Me("label" & i) = f.Cells(2, i)
        Me("textbox" & i).Width = f.Columns(i).Width * 1#
      Next i
    End Sub
     
    Private Sub ComboBox1_click()
      Marque = Me.ComboBox1
      n = 0
      Dim TblDest()
      For i = 1 To UBound(BD)
         If BD(i, 1) Like Marque Then
           n = n + 1: ReDim Preserve TblDest(1 To UBound(BD, 2), 1 To n)
           For k = 1 To UBound(BD, 2): TblDest(k, n) = BD(i, k): Next k
         End If
      Next i
      Me.ListBox1.Column = TblDest
    End Sub
     
    Private Sub ListBox1_Click()
      Marque = ListBox1: modele = ListBox1.Column(1): immatriculation = Me.ListBox1.Column(3)
      For i = LBound(BD) To UBound(BD)
         If BD(i, 1) = Marque And BD(i, 2) = modele And BD(i, 4) = immatriculation Then
           For k = 1 To NbCol
             Me("textbox" & k) = Me.ListBox1.Column(k - 1)
           Next k
         End If
      Next i
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 30
    Par défaut Merci
    Tout simpement merci Jacques,

    Le Userform que tu m'as envoyé en fichier attaché est parfait. Cela est très ergonomique, et répond à mon problème.

    Je m'en vais de se pas l'adapter à mon fichier.

    Cordialement,

    Pierre

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Version avec Modif,Création,Suppression


    Boisgontier
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme ComboBox en cascade
    Par YOP33 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 17/01/2010, 15h08
  2. fonction pour filtrage avec des combobox en cascade
    Par Montor dans le forum Contribuez
    Réponses: 3
    Dernier message: 09/11/2009, 12h05
  3. [E-00] ComboBox en cascade + TextBox
    Par couistelle dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/11/2008, 10h32
  4. Combobox en cascade et sans doublons
    Par humbp dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/11/2007, 13h54
  5. [VBA-E] ComboBox en cascade avec correspondance dans matrice
    Par ViperSpy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/06/2006, 17h01

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