'Récupération données des titres de colonnes
Private Sub UserForm_Initialize()
Dim Cell As Range
' Pour les colonnes noms
With Liste1
.ColumnCount = 2 '2 colonnes dans la ListBox
.ColumnWidths = "190;0" 'dont la deuxième cachée
'.BoundColumn = 2 'La propriété "Value" renverra la valeur de la colonne cachée
For Each Cell In Rows(2).SpecialCells(xlCellTypeConstants, 3)
.AddItem Cell.Text '1ère colonne : les prénoms
.List(.ListCount - 1, 1) = Cell.Column '2ème colonne : les numéros de colonnes correspondantes
Next Cell
.ListIndex = 0
End With
With Liste2
.ColumnCount = 2
.ColumnWidths = "190;0"
End With
End Sub
'------------------------------------------------------------------------
'Ajouter de Colonne 1 vers Colonne 2 avec BOUTON
Private Sub Ajouter_Click()
If Liste1.ListIndex <> -1 Then
Liste2.AddItem Liste1.List(Liste1.ListIndex, 0)
Liste2.List(Liste2.ListCount - 1, 1) = Liste1.List(Liste1.ListIndex, 1)
Liste1.RemoveItem Liste1.ListIndex
End If
End Sub
'------------------------------------------------------------------------
'Ajouter de Colonne 1 vers Colonne 2 avec DOUBLE CLIC
Private Sub Liste1_Dblclick(ByVal Cancel As MSForms.ReturnBoolean)
If Liste1.ListIndex <> -1 Then
Liste2.AddItem Liste1.List(Liste1.ListIndex, 0)
Liste2.List(Liste2.ListCount - 1, 1) = Liste1.List(Liste1.ListIndex, 1)
Liste1.RemoveItem Liste1.ListIndex
End If
End Sub
'------------------------------------------------------------------------
'Retirer de Colonne 2 vers Colonne 1 avec DOUBLE CLIC
Private Sub Liste2_Dblclick(ByVal Cancel As MSForms.ReturnBoolean)
If Liste2.ListIndex <> -1 Then
Liste1.AddItem Liste2.List(Liste2.ListIndex, 0)
Liste1.List(Liste1.ListCount - 1, 1) = Liste2.List(Liste2.ListIndex, 1)
Liste2.RemoveItem (Liste2.ListIndex)
End If
End Sub
'------------------------------------------------------------------------
'Retirer de Colonne 2 vers Colonne 1 avec BOUTON
Private Sub Retirer_Click()
If Liste2.ListIndex <> -1 Then
Liste1.AddItem Liste2.List(Liste2.ListIndex, 0)
Liste1.List(Liste1.ListCount - 1, 1) = Liste2.List(Liste2.ListIndex, 1)
Liste2.RemoveItem (Liste2.ListIndex)
End If
End Sub
'------------------------------------------------------------------------
'Vider Liste2 avec le BOUTON
Private Sub Nettoyer_Click()
For i = 0 To Liste2.ListCount - 1
Liste1.AddItem Liste2.List(i, 0)
Liste1.List(Liste1.ListCount - 1, 1) = Liste2.List(i, 1)
Next i
Liste2.Clear
End Sub
'------------------------------------------------------------------------
'Masquer les colonnes listées dans la liste2
Private Sub Masquer_Click()
'ici on démasque tout d'abord toutes les colonnes pour annuler la sélection précédente
Worksheets("Feuil1").Columns("A:Z").EntireColumn.Hidden = False
If Liste2.ListCount <> 0 Then
For i = 0 To Liste2.ListCount - 1
Worksheets("Feuil1").Columns(CInt(Liste2.List(i, 1))).EntireColumn.Hidden = True
Next i
End If
Unload Me
End Sub