1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| Option Explicit
Private Sub UserForm_Initialize()
Dim LastLig As Long, i As Long
Dim MonDico As Object
With Wbk.Worksheets("Feuil1") 'Correspond à Feuil1 de ClasseurB
LastLig = .Cells(.Rows.Count, "B").End(xlUp).Row
.Range("B1:B" & LastLig).Sort Key1:=.Range("B2"), Order1:=xlAscending, Header:=xlYes
Set MonDico = CreateObject("scripting.dictionary")
For i = 2 To LastLig
If Trim(.Range("B" & i).Value) <> "" Then MonDico(UCase(.Range("B" & i).Value)) = 1
Next i
Me.ListBox1.List = MonDico.keys
Set MonDico = Nothing
End With
End Sub
Private Sub Transfert_Click()
With Me.ListBox1
If .ListIndex > -1 Then
Me.ListBox2.AddItem .List(.ListIndex)
.RemoveItem .ListIndex
.ListIndex = -1
End If
End With
End Sub
Private Sub Valider_Click()
Dim Sh As Worksheet
Dim LastLig As Long
Dim i As Integer
Dim Tblo() As String
Application.ScreenUpdating = False
If Me.ListBox2.ListCount > 0 Then
ReDim Tblo(1 To Me.ListBox2.ListCount)
For i = 0 To Me.ListBox2.ListCount - 1
Tblo(i + 1) = Me.ListBox2.List(i)
Next i
Set Sh = Wbk.Worksheets.Add 'Ajoute une feuille tampon sur classeurB
With Wbk.Worksheets("Feuil1") 'Correspond à Feuil1 de ClasseurB
.AutoFilterMode = False
LastLig = .Cells(.Rows.Count, "B").End(xlUp).Row
.Range("B1:B" & LastLig).AutoFilter field:=1, Criteria1:=Tblo, Operator:=xlFilterValues
.Range("A1:X" & LastLig).SpecialCells(xlCellTypeVisible).Copy Sh.Range("A1")
.AutoFilterMode = False
.UsedRange.ClearContents
Sh.UsedRange.Cut .Range("A1")
End With
Application.DisplayAlerts = False
Sh.Delete
Application.DisplayAlerts = True
Set Sh = Nothing
Unload Me
Wbk.Close True
Set Wbk = Nothing
Else
MsgBox "Aucune donnée à traiter"
End If
End Sub |