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 :

Listbox en fonction de combobox


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
    Alternant Ingénieur Méthodes
    Inscrit en
    Juin 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Alternant Ingénieur Méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2015
    Messages : 25
    Par défaut Listbox en fonction de combobox
    Bonjour à tous,

    Je fais un mini formulaire, voici ma base de donnée :
    Type véhicule Option Clim Pseudo
    Fiat Ducato 2,3L E5+E5b sans clim a200
    Iveco Daily 2,3L E5+E5OBD sans clim a201
    Iveco Daily GMK 2,3L E5B sans clim a202
    Iveco Daily GMK 2,3L E5B avec clim a203
    Iveco Daily GMK 3L E5+E6 sans clim a204
    Iveco Daily GMK 3L E5+E6 avec clim a205

    Dans mon formulaire il y a : combobox1 -> colonne " Type Véhicule "
    combobox2 -> colonne "option clim"
    textbox1 -> la case corespondate aux choix de la combobox

    Par exemple si je prend : combobox1= Iveco Daily GMK 2,3L E5B
    combobox2 = sans clim
    alors textbox1 = a202

    Voici ce que j'ai pour l'instant :

    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
     
    Sub lancement_pseudo()
    Dim i As Integer
    Dim Cell As Range
     
    With Sheets("base").Range("B3") 'Inserer colonne A dans combobox1
    UserForm1.ComboBox1.RowSource = Range(.Cells, .End(xlDown)(1, 1)).Address(External:=True)
    End With
     
     
    For i = 1 To Sheets("base").Range("C65536").End(xlUp).Row
      ComboBox2 = Sheets("base").Range("C" & i)
      If ComboBox2 = -1 Then ComboBox2.AddItem Sheets("base").Range("C" & i)
    Next i
     
        For Each Cell In Worksheets("base").Range("c3:c24")
               UserForm1.ComboBox2 = Cell
            If UserForm1.ComboBox2.ListIndex = -1 Then _
               UserForm1.ComboBox2.AddItem Cell
        Next Cell
     
     
    UserForm1.Show
    End Sub
    Maintenant il n'y a plus qu'à coder la textbox mais je sèhe.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Maintenant il n'y a plus qu'à coder la textbox mais je sèhe.
    Si tu utilises un formulaire, tu peux t'inspirer de cette contribution USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    Alternant Ingénieur Méthodes
    Inscrit en
    Juin 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Alternant Ingénieur Méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2015
    Messages : 25
    Par défaut
    J'ai eu un peu d'aide et cela fonctionne niquel :

    Code de l'userform :
    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
     
    Option Explicit 'rend obligatoire la déclaration des variable (dim,public,private)
     
     
    Private Sub ComboBox1_Click()
        Dim Plage(), i%
        'chargement de la combobox
        Me.ComboBox2.Clear
        Me.TextBox1 = ""
        Plage = Range("Base[[Type véhicule]:[Option Clim]]") ' tableau a(n,1) pour rapidité
        For i = LBound(Plage) To UBound(Plage)
            If Plage(i, 1) = Me.ComboBox1.Text Then
                Me.ComboBox2.AddItem (Plage(i, 2))
                Me.ComboBox2.List(Me.ComboBox2.ListCount - 1, 1) = i
            End If
        Next i
    End Sub
     
     
    Private Sub ComboBox2_Click()
        Me.TextBox1 = Range("Base[Pseudo]").Cells(Me.ComboBox2.List(Me.ComboBox2.ListIndex, 1))
     
    End Sub
     
    Private Sub UserForm_Initialize() ' quand tu ouvre un usf c'est la 1ere macro qui est appelé
        Dim MonDico As Object, Plage(), i%
        'chargement de la combobox
        Set MonDico = CreateObject("Scripting.Dictionary")
        Plage = Range("Base[Type véhicule]") ' tableau a(n,1) pour rapidité
        For i = LBound(Plage) To UBound(Plage)
            If Plage(i, 1) <> "" Then MonDico(Plage(i, 1)) = ""
        Next i
        Me.ComboBox1.List = MonDico.keys
     
      End Sub
    Code dans module :
    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
     
    Sub lancement_pseudo()
    Dim i As Integer
     
    With Sheets("Feuil1").Range("B3") 'Inserer colonne A dans combobox1
    UserForm1.ComboBox1.RowSource = Range(.Cells, .End(xlDown)(1, 1)).Address(External:=True)
    End With
     
     
    For i = 1 To Sheets("feuil1").Range("C65536").End(xlUp).Row
      ComboBox1 = Sheets("feuil1").Range("C" & i)
      If ComboBox2 = -1 Then ComboBox2.AddItem Sheets("feuil1").Range("C" & i)
    Next i
     
    UserForm1.Show
     
    End Sub

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

Discussions similaires

  1. [XL-2007] Filtrer deux listbox en fonction de deux combobox
    Par gaiaprof dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/07/2014, 14h36
  2. Mise à jour d'une listbox en fonction de 3 combobox
    Par Chris171717 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 24/02/2013, 15h23
  3. Réponses: 2
    Dernier message: 03/06/2012, 14h31
  4. [XL-2007] Alimenter listbox en fonction d'un choix combobox
    Par maxval18 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/04/2012, 16h41
  5. [XL-2007] ListBox en fonction du choix d'une combobox
    Par maxval18 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 20/04/2012, 14h36

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