Ton Initialize épurée pour commencer :
Private Sub UserForm_Initialize()
Dim i%
' remplissage de la combobox n°matiere
With Sheets("mat1°")
For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row
ComboBox1.AddItem .Cells(i, 1)
Next i
End With
End Sub
Explications: au chargement du Userform, la ComboBox ne peut être plus "Clear" ! Et ensuite, Initialize ne se déclenchera plus, donc...
Il est recommandé de déclarer ses variables avant utilisation... mais au cas particulier on peut se passer de variables sans que le code s'en trouve allongé.
Ensuite, je veux bien aller charcher le prix le moins cher pour le mettre dans une TextBox, mais cela me paraît incohérent dans une ListBox.
Cordialement.