Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Recherche par combobox

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

maval

XLDnaute Barbatruc
Bonjour,

Voila j'ai un formulaire avec deux combobox en cascade une recherche le continent et l'autre recherche le pays.
j'ai dans un dossier 5 continents et dans chaque continent des sous dossiers avec les pays correspondant dans chaque pays j'ai des billets et j'aimerais après avoir choisis le continent, le pays avoir les billets s'afficher dans le formulaire.
Je joint mon fichier qui seras plus explicite

Je vous remercie d'avance
 

Pièces jointes

Bonjour.
Utilisez une instruction ChDir avec une concaténation du chemin racine, du continent et du pays puis un NomFic = Dir "*.*" puis une boucle While NomFic <> "" avec dedans N = N + 1: Me("Image" & N).Picture = LoadPicture( NomFic): NomFic = Dir: Wend
Remarque: utilisez un ComboBoxLiées pour gérer les choix: c'est tellement facile.

Edit: Bonjour Robert.
 
Dernière édition:
Bonjour Maval, bonjour le forum,

Peut-être comme ça (non testé) :

VB:
Option Explicit
Dim F As Worksheet
Dim TV As Variant

Private Sub UserForm_Initialize()
Dim MonDico As Object
Dim I As Integer

Set F = Sheets("Feuil1")
TV = F.Range("A1").CurrentRegion
Set MonDico = CreateObject("Scripting.Dictionary")
For I = 2 To UBound(TV, 1)
   MonDico(TV(I, 1)) = ""
Next I
Me.ComboBox1.List = MonDico.keys
End Sub

Private Sub ComboBox1_Change()
Dim MonDico As Object
Dim I As Integer

Set MonDico = CreateObject("Scripting.Dictionary")
For I = 2 To UBound(TV, 1)
    If TV(I, 1) = Me.ComboBox1.Value Then MonDico(TV(I, 2)) = ""
Next I
Me.ComboBox2.List = MonDico.keys
End Sub

Private Sub ComboBox2_Change()
Dim MonDico As Object
Dim I As Integer
Dim F As String
Dim CH As String
Dim J As Byte


If Me.ComboBox1.Value = "" Then
    MsgBox "Vous devez renseigner le continent !"
    Me.ComboBox1.SetFocus
    Exit Sub
End If

Set MonDico = CreateObject("Scripting.Dictionary")
J = 1
For I = 2 To UBound(TV, 1)
    If TV(I, 1) = Me.ComboBox1.Value And TV(I, 2) = Me.ComboBox2.Value Then
        CH = "E:\Le Monde\User_Animation_Monnaies\Continent\" & Me.ComboBox1.Value & "\" & Me.ComboBox2.Value & "\"
        F = Dir(CH & "*.gif")
        Do While F <> ""
            If J = 11 Then Exit Sub
            Me.Controls("Label" & J).Caption = F
            Me.Controls("Image" & J).Picture = LoadPicture(CH & F)
            J = J + 1
            F = Dir
        Loop
        Exit For
    End If
Next I
End Sub

Private Sub CommandButton1_Click()
Unload Me
End Sub

[Édition]
Bonjour Bernard, nos posts se sont croisés...
 
Bonsoir maval
Bonsoir le fil,Le Forum

Tu dis avoir mis ce chemin :
Code:
E:\Le Monde\User_Animation_monnaies\Continent
On peut supposer que tu as oublié le
Code:
/
à la fin , avant le Nom du premier Dossier mais pas sur ??????? Lol
quel message d'erreur as tu ?????
Bonne fin de Soirée
Amicalement
Jean Marie
 
Dernière édition:
Bonsoir le fil, bonsoir le forum,

Ha mon sal*** ! Tu as mis des espaces devant le noms des pays ! J'y ai passé des heures sur ce coup...
Le code modifié :

VB:
Option Explicit
Dim F As Worksheet
Dim TV As Variant

Private Sub UserForm_Initialize()
Dim MonDico As Object
Dim I As Integer

Set F = Sheets("Feuil1")
TV = F.Range("A1").CurrentRegion
Set MonDico = CreateObject("Scripting.Dictionary")
For I = 2 To UBound(TV, 1)
  MonDico(TV(I, 1)) = ""
Next I
Me.ComboBox1.List = MonDico.keys
End Sub

Private Sub ComboBox1_Change()
Dim MonDico As Object
Dim I As Integer

Set MonDico = CreateObject("Scripting.Dictionary")
For I = 2 To UBound(TV, 1)
  If TV(I, 1) = Me.ComboBox1.Value Then MonDico(TV(I, 2)) = ""
Next I
Me.ComboBox2.List = MonDico.keys
End Sub

Private Sub ComboBox2_Change()
Dim MonDico As Object
Dim I As Integer
Dim F As String
Dim CH As String
Dim J As Byte


If Me.ComboBox1.Value = "" Then
  MsgBox "Vous devez renseigner le continent !"
  Me.ComboBox1.SetFocus
  Exit Sub
End If

Set MonDico = CreateObject("Scripting.Dictionary")
J = 1
For I = 2 To UBound(TV, 1)
  If TV(I, 1) = Me.ComboBox1.Value And TV(I, 2) = Me.ComboBox2.Value Then
  CH = "E:\Continent\" & Trim(Me.ComboBox1.Value) & "\" & Trim(Me.ComboBox2.Value) & "\"
  F = Dir(CH & "*.gif")
  Do While F <> ""
  If J = 11 Then Exit Sub
  Me.Controls("Label" & J + 2).Caption = F
  Me.Controls("Image" & J).Picture = LoadPicture(CH & F)
  J = J + 1
  F = Dir
  Loop
  Exit For
  End If
Next I
End Sub

Private Sub CommandButton1_Click()
Unload Me
End Sub
 
Bonjour Robert

Excuse moi je ne le savais pas qu'il y avait des espaces devant le noms des pays.
Le code fonctionne Nickel je te remercie et te souhaite un bon dimanche
Mille excuse pour ce problème....!
 
- 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
40
Affichages
1 K
Réponses
17
Affichages
987
Réponses
22
Affichages
799
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…