Gestion erreur quand valeur recherchée n'existe pas

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.

Bonjour,

à main levée, il faudra peut-être des adaptations :

dim idx as long
on error resume next
idx=Sheets(Sheets("Prod").Range("B84").Value).index
on error goto 0
if idx then set f = sheets(idx) else msgbox "y'a un os"

eric

Bonjour eric,

Même pas besoin d'adaptation

Merci beaucoup

Rechercher des sujets similaires à "gestion erreur quand valeur recherchee existe pas"