Private Sub UserForm_Activate() ' Cette macro s'exécute à chaque affichage du formulaire de choix du poste
Poste = "" ' cette variable stocke tous les postes figurant sur la feuille (reste à faire)
CommandButton1.Enabled = False ' désactive le bouton Valider pour éviter une erreur programme si aucun poste n'est choisi dans la liste
With Feuil2 ' toutes ces actions suivantes se font sur la feuille (reste à faire)
.Range("BA2:BA65536").ClearContents ' on efface toutes les lignes sauf la première, dans la colonne BA
' cette colonne (masquée) stocke tous les postes de la feuille (reste à faire), sans doublons
For Each cel In .Range("D11:D" & .Range("D65536").End(xlUp).Row) ' on balaie les cellules en colonne D, de la ligne 11 à la dernière ligne remplie
If Not cel.Value = "Poste" Then ' Si la cellule contient le titre Poste, alors on passe à la cellule suivant
If InStr(Poste, cel.Value) = 0 Then ' si la cellule n'est pas trouvée dans la variable Poste
Poste = Poste & " " & cel.Value ' alors on l'ajoute
.Range("BA" & .Range("BA65536").End(xlUp).Row + 1) = cel.Value ' on l'ajoute également à la suite dans la colonne DA
End If
End If
Next
' On fait un tri alphabétique croissant dans la colonne DA
[COLOR="Red"][B] .Columns("BA:BA").Select
Selection.Sort[/B][/COLOR] Key1:=.Range("BA1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
dlg = .Range("BA65536").End(xlUp).Row ' on stocke le n° de la dernière ligne remplie en colonne DA
ComboBox1.RowSource = "BA2:BA" & dlg ' et on affecte la liste remplie en DA à la liste déroulante du formulaire
ComboBox1.SetFocus ' on place le curseur dans la liste déroulante du formulaire
End With
End Sub