Recherche d'une valeur dans un tableau

Résolu
Ark -  
 Ark -
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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Salut michel,

      oui, j'ai vu que tu étais un peu endormi ;-), J'ai essayé de ne pas faire trop de bruit...
      eric
      0
  4. Ark
     
    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