Bonsoir didier
Tu avait 2 bugs dans ta macro :
1er le 457 de la collection
2ème un souci de sélection de la plage filtré
le 1er bug se déclenchait en premier masquant le deuxième, et le on error corrigeant le 1er à mis en évidence le deuxième.
ton deuxième bug :
en indiquant comme plage: .Range('D2', .Range('D65536')
lorsque tu sélectionnait ton premier élément de listbox la seule ligne visible de la plage filtré etait la ligne 2.
et comme vba ne sait pas interpréter d2:d2 en plage filtré il te sélectionnait toutes la feuille
La seul parade que j'ai trouvé sans devoir tout refaire c'est de faire commencer la sélection de la plage filtrée en D1 au lieu de D2.
et donc de corriger le renvoi de la collection en passant par une boucle for to commencant à 2 pour éviter la ligne d'entête.
le code :
Set Plage = .Range('D1', .Range('D65536').End(xlUp)).SpecialCells(xlCellTypeVisible)
On Error Resume Next
For Each Cel In Plage
valeur = Cel.Address
Col.Add Cel.Text, Cel.Text
Next Cel
.AutoFilterMode = False
End With
On Error GoTo 0
For i = 2 To Col.Count
ListBox_composants.AddItem Col(i)
Next i
ce code corrige chez moi les deux bugs.
en espérant avoir été clair.
salut