Recherche d'une valeur dans un tableau

Résolu
Bonjour à tous !

Je cherche un moyen d'obtenir un code qui me permette de vérifier l'appartenance d'une cellule saisie à un tableau présent dans la feuille.
En cas de réponse positive, un message doit apparaître et me rediriger vers une autre feuille.

Cependant je n'arrive à faire quelque chose de potable. Mes lignes de code n'activent rien...
Voyez plutôt:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim MaValeur As String, INTERSECT As Object, MSG As String

MaValeur = Range("C17")

Set INTERSECT = Application.INTERSECT(Range("C17"), Range("F200:H221"))
If Not INTERSECT Is Nothing Then
MSG = MsgBox("Toto", vbOKOnly)
Sheets("Feuil2").Select
End If

End Sub

le "Dim MaValeur" me sert à rien mais je le garde pour me rappeler quelle cellule je dois comparer :-p

Pouvez-vous m'aider?

Merci infiniment,

Ark.

4 réponses

  1. Contributeur
    Bonjour

    Intersect n'est pas une variable Objet mais une Méthode VBA de l'objet application
    MSG ne sert a rien

    Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim MaValeur As String
    MaValeur = Range("C17")
    If Not Application.INTERSECT(Range("C17"), Range("F200:H221")) Is Nothing Then
    MsgBox "Toto", vbOKOnly
    Sheets("Feuil2").Select
    End If
    End Sub

    Bon WE

    pour apprendre VBa
    https://bidou.developpez.com/article/VBA/

    très complet mais ne se lit pas comme un roman policier (hélas!) :o)

    Michel
    0
    1. Contributeur
      Bonjour,

      INTERSECT(Range("C17"), Range("F200:H221")) retournera toujours nothing puisque l'intersection des plages est vide.
      Je crois que c'est plutôt de .find que tu as besoin.
      Ca sera qcq chose comme :
      dim c as range
      
      Set c = Range("F200:H221").Find(Range("C17"), LookIn:=xlvalues, LookAt:=xlWhole)
      if not c is nothing then
      Sheets("Feuil2").Select
      endif
      eric
      0
      1. Contributeur
        Bonjour Eric, ça va ?

        Heu!... ma rentrée des classes n'est pas fameuse !!!

        Private Sub Worksheet_Change(ByVal Target As Range)
        
        Dim MaValeur As String
        MaValeur = Range("C17")
        If Target.Address = "$C$17" Then
        If Application.CountIf(Range("F200:H221", Target)) > 0 Then
        MsgBox "Toto", vbOKOnly
        Sheets("Feuil2").Select
        End If
        End If
        End Sub


        Michel
        0
        1. Contributeur
          Salut michel,

          oui, j'ai vu que tu étais un peu endormi ;-), J'ai essayé de ne pas faire trop de bruit...
          eric
          0
      2. Bonjour,

        Merci beaucoup pour vos réponses, elles m'ont été très utiles et mon code fonctionne dorénavant :-)

        Je vais consulter le site que vous m'avez fourni afin de pouvoir résoudre moi-même ces problèmes à l'avenir.

        Bonne journée !

        Ark
        0