Private Sub ComboBox1_Change()
Dim w As Worksheet, P As Range
ListBox1.Clear 'RAZ
On Error Resume Next 'si la feuille n'existe pas
Set w = Sheets(ComboBox1.Text)
On Error GoTo 0
If w Is Nothing Then Exit Sub
Set P = w.[A1].CurrentRegion
If P.Rows.Count = 1 Then Exit Sub 'on suppose qu'il y a une ligne de titres
ListBox1.ColumnCount = P.Columns.Count 'nombre de colonnes
If P.Columns.Count = 1 Then Set P = P.Resize(, 2) 'au moins 2 cellules
ListBox1.List = P.Offset(1).Resize(P.Rows.Count - 1).Value 'crée la liste
End Sub
Private Sub UserForm_Initialize()
ComboBox1.List = Array("Chauffage", "Ventilation", "Clim")
End Sub