Recherche par ComboBox

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

crackwood01

Guest
Bonjour voilà plusieurs heures déjà que j'essaye et je n'ai toujours pas réussi à programmer ce dont j'ai besoin.

J'ai un petit tableau dans lequelle se retrouve plusieurs donnée.
Une colonne particulière se nomme: Chauffeur

Je veux générer dans une ComboBox tout les nom qui se retrouve dans cette colonne SANS les doublons.

De plus, j'aimerais que suite à la sélection d'un nom, pouvoir copier et coller TOUTES les lignes dans lesquelles se retrouvent ce nom vers une autre feuille.

Problême No1. J'arrive à générer la combobox mais je n'arrive pas à effacer les Doublons.
Problême No2. J'arrive à sélectionner une ligne à la fois mais pas toutes d'un coup.

je joint un petit fichier qui aidera a comprendre
 

Pièces jointes

Re : Recherche par ComboBox

Bonjour crackwood01,

Un essai dans le fichier joint (on copie de la feuille "Liste" vers la feuille "Bon-Chauffeur").

Edit : la ligne On Error Resume Next doit pouvoir être supprimée.

VB:
Option Explicit

Private Sub UserForm_Initialize()
Dim tablo, dico, i&
  With Worksheets("Liste")
    If .AutoFilterMode Then .Cells.AutoFilter
      tablo = .Range("L3", .Range("L" & .Rows.Count).End(xlUp)).Value
      Set dico = CreateObject("scripting.dictionary")
      For i = 1 To UBound(tablo): dico(tablo(i, 1)) = "": Next i
      ComboBox1.List = dico.keys
  End With
End Sub

Private Sub CommandButton1_Click()
Dim n, xrg As Range
  Application.ScreenUpdating = False
  With Worksheets("Liste")
    If .AutoFilterMode Then .Cells.AutoFilter
    n = .Range("L" & Rows.Count).End(xlUp).Row
    On Error Resume Next
    .Range("a2:o" & n).AutoFilter Field:=12, Criteria1:=ComboBox1
    Set xrg = .Range("a2:o" & n).SpecialCells(xlCellTypeVisible)
      With Worksheets("Bon-Chauffeur")
        .Range("a2:o" & 21).EntireRow.ClearContents
        xrg.Copy .Range("a2")
        MsgBox "La copie de " & .[a2].CurrentRegion.Rows.Count - 1 & _
               " ligne(s) de donnée est terminée.", vbInformation
      End With
    If .AutoFilterMode Then .Cells.AutoFilter
  End With
  Application.ScreenUpdating = True
End Sub
 

Pièces jointes

Dernière édition:
- 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
2
Affichages
164
Réponses
5
Affichages
961
Retour