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

Recherche par ComboBox

crackwood01

XLDnaute Nouveau
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

  • Planning.xlsm
    78.3 KB · Affichages: 30
  • Planning.xlsm
    78.3 KB · Affichages: 37

mapomme

XLDnaute Barbatruc
Supporter XLD
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

  • crackwood01- Planning- v1.xlsm
    81.5 KB · Affichages: 34
Dernière édition:

Discussions similaires

Réponses
9
Affichages
719
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…