XL 2019 effacer combobox

exe76

XLDnaute Nouveau
Bonjour a toutes et a tous,

Je vous explique, j'ai 2 ComboBox (répertoire téléphonique pour le boulot) avec 2 ComboBox.
La première sélectionne mes feuilles de calculs en fonction du service. (Maintenance, Direction etc...)
la seconde m'affiche les entrées : Nom prénom
Lorsque je sélectionne un nom ou prénom cela m'affiche les différentes colonnes nom, prénom, numéro de téléphone etc... dans des TextBox.

Je me suis rendu compte qu'au fil de l'utilisation si dans la première ComboBox je sélectionne admettons Maintenance et que je me suis trompé de ligne et qu'en fait je sélectionne Direction à la place, les entrées des deux feuilles restent chargés.
Par contre si je sélectionne un nom de Maintenance et qu'ensuite je change pour mettre Direction seul les entrées Direction apparaissent dans la seconde ComboBox.

comment puis-je modifier cela ?

voici le code pour les deux ComboBox

VB:
Private Sub ComboBox1_Change()
If Me.ComboBox1.Value = "" Then Exit Sub
  Dim i As Long
  For i = 2 To Sheets(Me.ComboBox1.Value).Range("A" & Rows.Count).End(xlUp).Row
    Me.ComboBox2.AddItem
    Me.ComboBox2.List(Me.ComboBox2.ListCount - 1, 0) = Sheets(Me.ComboBox1.Value).Range("A" & i)
    Me.ComboBox2.List(Me.ComboBox2.ListCount - 1, 1) = Sheets(Me.ComboBox1.Value).Range("B" & i)
  Next
End Sub

Private Sub ComboBox2_Change()
  Application.ScreenUpdating = True
  If Me.ComboBox2.Value = "" Then Exit Sub
  Me.TextBox1.Value = Sheets(Me.ComboBox1.Value).Range("A" & Me.ComboBox2.ListIndex + 2).Value
  Me.TextBox2.Value = Sheets(Me.ComboBox1.Value).Range("B" & Me.ComboBox2.ListIndex + 2).Value
  Me.TextBox3.Value = Sheets(Me.ComboBox1.Value).Range("C" & Me.ComboBox2.ListIndex + 2).Value
  Me.TextBox5.Value = Sheets(Me.ComboBox1.Value).Range("D" & Me.ComboBox2.ListIndex + 2).Value
  Me.TextBox6.Value = Sheets(Me.ComboBox1.Value).Range("E" & Me.ComboBox2.ListIndex + 2).Value
  Application.ScreenUpdating = True
  Me.ComboBox2.Clear
End Sub

merci d'avance a vous
 
Solution
Bonsoir exe76
Bonsoir Le Forum
sans fichier pas cool
mais bon ! ce que j'ai compris .
VB:
Private Sub ComboBox1_Change()
If Me.ComboBox1.Value = "" Then Exit Sub
   Me.Combobox2.clear 'ici on vide avant de remplir a nouveau'
  Dim i As Long
  For i = 2 To Sheets(Me.ComboBox1.Value).Range("A" & Rows.Count).End(xlUp).Row
    Me.ComboBox2.AddItem
    Me.ComboBox2.List(Me.ComboBox2.ListCount - 1, 0) = Sheets(Me.ComboBox1.Value).Range("A" & i)
    Me.ComboBox2.List(Me.ComboBox2.ListCount - 1, 1) = Sheets(Me.ComboBox1.Value).Range("B" & i)
  Next
End Sub
Jean marie

ChTi160

XLDnaute Barbatruc
Bonsoir exe76
Bonsoir Le Forum
sans fichier pas cool
mais bon ! ce que j'ai compris .
VB:
Private Sub ComboBox1_Change()
If Me.ComboBox1.Value = "" Then Exit Sub
   Me.Combobox2.clear 'ici on vide avant de remplir a nouveau'
  Dim i As Long
  For i = 2 To Sheets(Me.ComboBox1.Value).Range("A" & Rows.Count).End(xlUp).Row
    Me.ComboBox2.AddItem
    Me.ComboBox2.List(Me.ComboBox2.ListCount - 1, 0) = Sheets(Me.ComboBox1.Value).Range("A" & i)
    Me.ComboBox2.List(Me.ComboBox2.ListCount - 1, 1) = Sheets(Me.ComboBox1.Value).Range("B" & i)
  Next
End Sub
Jean marie
 

exe76

XLDnaute Nouveau
merci beaucoup pour ta réponse je suis au boulot et je ne peux pas stocker des fichiers d'ou mon non envoi du fichier dsl :/

j'avais essayer justement le Me.Combobox2.clear mais j'ai pas mis a cet encdroit la je l'avais mit apres le Next
 

ChTi160

XLDnaute Barbatruc
Re
Une vidéo de ce que cela peut donner !
le Code
Code:
Option Explicit

Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub ComboBox1_Change()
If Me.ComboBox1.Value = "" Then Exit Sub
  Dim i As Long
  Dim StrWs$
   StrWs = Me.ComboBox1.Value
   Me.TextBox1.Value = ""
   Me.TextBox2.Value = ""
   Me.TextBox3.Value = ""
  With Me.ComboBox2
         .Clear
  For i = 2 To Sheets(StrWs).Range("A" & Sheets(StrWs).Rows.Count).End(xlUp).Row
         .AddItem Sheets(StrWs).Range("A" & i)
         .List(.ListCount - 1, 1) = Sheets(StrWs).Range("B" & i)
         .List(.ListCount - 1, 2) = Sheets(StrWs).Range("C" & i)
  Next
  End With
End Sub

Private Sub ComboBox2_Change()
  Application.ScreenUpdating = True
  With Me
     .TextBox1.Value = ""
     .TextBox2.Value = ""
     .TextBox3.Value = ""
        With .ComboBox2
        If .Value = "" Then Exit Sub
        Me.TextBox1.Value = .List(.ListIndex, 0)
        Me.TextBox2.Value = .List(.ListIndex, 1)
        Me.TextBox3.Value = .List(.ListIndex, 2)
        Application.ScreenUpdating = True
        End With
  End With
End Sub

Private Sub UserForm_Initialize()
With UserForm1
 With .ComboBox1
  .List = Array("Maintenance", "Direction")
 End With
End With
End Sub
Jean marie
 

Pièces jointes

  • Test annuaire_1.gif
    Test annuaire_1.gif
    95.9 KB · Affichages: 33