Recherche d'une valeur dans un tableau

Résolu/Fermé
Ark - 6 sept. 2013 à 16:42
 Ark - 9 sept. 2013 à 10:27
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.
A voir également:

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 6/09/2013 à 17:39
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
7 sept. 2013 à 17:24
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 8/09/2013 à 08:25
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
8 sept. 2013 à 11:06
Salut michel,

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