Valeur combobox en fonction d'une autre combobox

Signaler
-
 ludoja -
Bonjour à tous,

Je me tourne vers vous car je passe pas mal de temps sur votre super forum pour trouver les infos dont j'ai besoin.
Je débute en VBA et souhaite créer une feuille d'accueil regroupant plusieurs combobox.
Mon problème est le suivant:
je souhaite remplir une combobox en fonction du choix fait dans la précédente.
Voici ce que j'ai écrit mais cela ne fonctionne pas...

Public Sub comboBox6_Click()
Dim k As Integer
Dim lot As String

With ComboBox6
    .Clear
    If ComboBox3.Value = "" Then
    ElseIf ComboBox3.Value <> "" Then
        For k = 26 To 110
            lot = Sheets("complet").Cells(k, 1).Value
            If lot = Sheets("Accueil").ComboBox3.Value Then
                Sheets("Accueil").ComboBox6.AddItem Sheets("Complet").Cells(k, 2)
            End If
        Next k
    End If
End With

End Sub


Je vous remercie d'avance pour votre aide.
Pour info la combobox3 est remplie avec la colonne 1 de la feuille 2 et la combobox6 est remplie avec les données de la colonne 2 avec la ligne ou figure le nom de combobox3 choisie.

EX: si dans combobox3 je choisis "toto" alors dans combobox6 je dois avoir tous les choix de la colonne 2 pour lesquels j'ai "toto" en colonne 1.

J'espère que les explications sont assez clairs...

En vous remerciant d'avance!

Ludo

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Salut

VBA n'est pas du VB.Net --> Catégorie modifiée.

Que reproches-tu à ton code ?
Que se passe t-il ?
Que ne se passe t-il pas ?

As-tu utilisé le débogage pour suivre ce que fait ton programme ?
- F9 sur une ligne de code; elle change de couleur
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
- F8 (VB6) ou F10 (.Net) pour avancer d'une ligne de code
- F5 pour continuer normalement

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Bonsoir et merci pour ta réponse.

Le code fonctionne, pas de message d'erreur ni rien.

Simplement quand je change la valeur de la combobox3, la liste contenue dans la combobox6 ne se met pas à jour automatiquement en fonction du nouveau choix dans combobox3.

J'ai fait le même genre de choses (mise à jour d'une combobox en fonction de la valeur prise par la combobox d'avant) pour mettre à jour les noms de fichiers contenus dans un répertoire et cela fonctionne:

Public Sub ComboBox1_Click()

Set fs = CreateObject("Scripting.FileSystemObject")

With ComboBox2
    .Clear
    If ComboBox1.Value = "" Then
    ElseIf ComboBox1.Value <> "" Then
        racine1 = racine + "" + ComboBox1.Value + ""
        Set dossier_racine1 = fs.Getfolder(racine1)
        For Each chantier In dossier_racine1.Files
               
.AddItem Left(chantier.Name, InStr(chantier.Name, ".") - 1)
        Next
    End If
End With

End Sub


Qu'est ce qu'il me manque ou que dois-je changer pour que cela fonctionne?

Bonne soirée
C'est bon j'ai trouvé !
Il fallait juste au lieu de créer un sub pour la combobox6 écrire directement un sub combobox 3_click comme cela:
Public Sub Combobox3_Click()

With ComboBox6
        .Clear
        If ComboBox3.Value = "" Then
            ElseIf ComboBox3.Value <> "" Then
                For k = 26 To 110
                    lot = Sheets("complet").Cells(k, 1).Value
                        If lot = Sheets("Accueil").ComboBox3.Value Then
                            Sheets("Accueil").ComboBox6.AddItem Sheets("Complet").Cells(k, 2)
                        End If
                Next k
        End If
End With

End Sub


Bonne soirée,