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

C

ctheberge

Guest
Bonjour, je désire récupérer les données sur la feuil1 dans un usf dans lequel un combobox liste sans doublon la colonne "A" et selon la sélection, un second combobox liste les valeurs concordantes de la colonne "B" et selon cette dernière sélection, quatre textbox affichent les valeurs de cette ligne pour les colonnes "C", "D", "E" et "F".

J'arrive à gérer les combobox ou les textbox, mais pas les deux ensemble.

Merci pour l'assistance.
 
Re : Combobox et textbox

Bonjour CtHeberge, bonjour le forum,

Je vois que c'est ton premier post alors je ne peux commencer sans te souhaiter la bienvenue mais aussi sans te recommander vivement de lire la Lien supprimé du forum. Tu comprendras mieux pourquoi il serait souhaitable que tu mettes en pièce jointe un fichier exemple basé sur ton propre fichier avec l’UserForm, en respectant la structure de ton original.
Juste histoire de nous éviter de faire tout le boulot…
 
Re : Combobox et textbox

Bonjour Robert,

Mercipour l'accueil et les précisions.

Voici où j'en suis avec mes faibles connaissances et des codes récupérés ici et là.

Si cela peut aider, tant mieux.


Option Explicit
Dim TableauTemp As Variant

Private Sub UserForm_Initialize()
Dim Ligne As Long

With Sheets(2)
Ligne = .Range("A65536").End(xlUp).Row
TableauTemp = .Range(.Cells(1, 1), .Cells(Ligne, 7)).Value
End With
MajCBox ComboBox1, 0
End Sub

Private Sub ComboBox1_Change()
Dim Ligne As Long
'Remise à zéro
For Ligne = 1 To UBound(TableauTemp, 1)
TableauTemp(Ligne, 7) = 0
Next Ligne
'MAJ du ComboBox2 avec un flag de niveau 1
MajCBox ComboBox2, 1, ComboBox1.Text
'Remise à zéro du ComboBox2
ComboBox2.Clear
End Sub

Private Sub ComboBox2_Change()
'MAJ du ComboBox2 avec un flag de niveau 2
MajCBox ComboBox2, 2, ComboBox1.Text
End Sub

Private Sub MajCBox(Combo As ComboBox, Niv As Byte, Optional V As String)
Dim Coll As New Collection
Dim Ligne As Long
'Gestion du flag de niveau dans la colonne supplémentaire (5) du tableau
For Ligne = 1 To UBound(TableauTemp, 1)
If Niv = 0 Then
'RAZ du flag de niveau
TabTemp(Ligne, 7) = 0
Else
TableauTemp(Ligne, 7) = Application.WorksheetFunction.Min(TableauTemp(Ligne, 7), Niv - 1)
'Si l'élément est retenu alors on incrémente le flag de niveau
If TableauTemp(Ligne, Niv) = V Then
TableauTemp(Ligne, 7) = TableauTemp(Ligne, 7) + 1
End If
End If
Next Ligne
'Détermination de la liste sans doublon
On Error Resume Next
For Ligne = 1 To UBound(TableauTemp, 1)
If TableauTemp(Ligne, 7) = Niv Then
Coll.Add TableauTemp(Ligne, Niv + 1), CStr(TableauTemp(Ligne, Niv + 1))
End If
Next Ligne
On Error GoTo 0
'Mise à jour du combobox
Combo.Clear
For Ligne = 1 To Coll.Count
Combo.AddItem Coll.Item(Ligne)
Next Ligne

'Affiche dans le TextBox1 la cellule de la colonne C (3)
TextBox1 = Sheets("Données").Cells(Ligne, 3)
'Affiche dans le TextBox2 la cellule de la colonne D (4)
TextBox2 = Sheets("Données").Cells(Ligne, 4)
'Affiche dans le TextBox3 la cellule de la colonne E (5)
TextBox3 = Sheets("Données").Cells(Ligne, 5)
'Affiche dans le TextBox4 la cellule de la colonne F (6)
TextBox4 = Sheets("Données").Cells(Ligne, 6)
End Sub
 
Re : Combobox et textbox

Bonsoir,

remplace tout le code de ton USF par celui-ci :

Code:
Option Explicit
Dim TableauTemp As Object
Dim DerLig As Long, Lig As Long
Dim I As Byte
Dim Cel As Range

Private Sub UserForm_Initialize()
Set TableauTemp = CreateObject("Scripting.Dictionary")
With Sheets("Données")
    DerLig = .Range("A65536").End(xlUp).Row
    For Each Cel In .Range("A2:A" & DerLig)
        TableauTemp.Item(Cel.Value) = Cel.Value
    Next Cel
End With
Me.ComboBox1.List = Application.Transpose(TableauTemp.Items)
End Sub

Private Sub ComboBox1_Change()
Me.ComboBox2.Clear
With Sheets("Données")
    For Each Cel In .Range("A2:A" & DerLig)
        If Cel.Value = Me.ComboBox1 Then Me.ComboBox2.AddItem Cel.Offset(0, 1).Value
    Next Cel
End With
End Sub

Private Sub ComboBox2_Change()
With Sheets("Données")
    Lig = .Columns(2).Find(Me.ComboBox2).Row
    For I = 1 To 4
        Me.Controls("TextBox" & I).Value = .Cells(Lig, I + 2).Value
    Next I
End With
End Sub

Si tu le désires, néanmoins....
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
335
Retour