Bonsoir,
Voici une partie de code que j'utilise pour choisir la feuille qui alimentera une suite de combobox.
Private Sub ComboBox12_Change()
Sheets("Prod").Range("B84").Value = Me.ComboBox12
ColcléCombo = Array(5, 7, 6, 1) ' colonnes des combobox( à adapter)
If Sheets("Prod").Range("B84").Value <> "" Then Set f = Sheets(Sheets("Prod").Range("B84").Value) Else Set f = Sheets("EXEMPLE")
Set d1 = CreateObject("Scripting.Dictionary")
BD = f.Range("A4:N" & f.[A65000].End(xlUp).Row).Value ' Array pour rapidité (à adapter)
ColClé1 = ColcléCombo(0)
For i = LBound(BD) To UBound(BD): d1(BD(i, ColClé1)) = "": Next
Me.ComboBox1.List = d1.keys
End Sub
Au départ la déclaration de f était :
Set f = Sheets(Sheets("Prod").Range("B84").Value)
Le problème était que si on effaçait la recherche dans la combobox12, la cellule B84 était vide et là : erreur
J'ai donc modifié par cette ligne :
If Sheets("Prod").Range("B84").Value <> "" Then Set f = Sheets(Sheets("Prod").Range("B84").Value) Else Set f = Sheets("EXEMPLE")
Cela à résolu mon problème, mais celui que je vient de découvrir : c'est si la valeur tapées dans la combobox12 n'existe pas :
je vous le donne en mille : erreur
Je souhaiterai finalement écrire :
If Sheets("Prod").Range("B84").Value EXISTE Then Set f = Sheets(Sheets("Prod").Range("B84").Value) Else Set f = Sheets("EXEMPLE")
Mais je ne vois pas comment.