Question sur la fonction FIND

Bonjour à toutes et à tous,

n'ayant pas trouvé une réponse parmi toutes les votre, voici ma question :

comment écrire la fonction find de telle façon que si elle ne trouve pas la variable recherchée,

elle afficher un message que moi j'aurais prévu ?

Merci

Bonjour

En général

SET Variable = object.find...

If Variable is nothing then ....

Merci Chris

mais bien que j'ai déjà réalisé plus de 20 applications sous Excel,

je n'ai pas encore eu à gérer la fonction find quand elle ne trouve pas la variable demandée.

Ta réponse est un bon début mais je l'ai testée cependant il me manque un exemple car

je ne parviens pas à finaliser ma macro-commande.

d'avance Merci

RE

Donne ton code actuel... ce sera plsu simple pour adapter

Voici mon code

'Variable Vnom = variable à rechercher dans ma feuille

Cells.Find(What:=Vnom, After:=ActiveCell, LookIn _

:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _

xlNext, MatchCase:=False, SearchFormat:=False).Activate

merci

Pour être plus précis voici ton code que j'ai remanié pour simplifié :

Set re = .Range("A1:J639").Find(Vnom, LookAt:=xlPart, LookIn:=xlValues)

If re Is Nothing Then

MsgBox (Vnom & " non trouvé !")

End If

Bonsoir dj3039,

Je crois bien qu'il manque une instruction très importante après ton MsgBox :

Option Explicit

Sub Essai()
  Dim re As Range
  ' ...
  With Worksheets("Feuil1")
    Set re = .Range("A1:J639").Find(Vnom, LookAt:=xlPart, LookIn:=xlValues)
    If re Is Nothing Then
      MsgBox Vnom & " non trouvé !": Exit Sub ' sortie, pour éviter le traitement qui suit le End If
    End If
    ' suite du traitement à faire quand Vnom a été trouvé
    ' ...
  End With
End Sub

de plus, tu auras remarqué que les parenthèses du MsgBox sont inutiles !

elles sont obligatoires seulement avec : réponse = MsgBox(..)

dhany

Merci Dhany,

j'ai bien testé ton code cependant bien qu'il ne s'arrête pas sur "non trouvé",

la prog ne se positionne pas sur la case où il a trouvé Vnom !

Y a-t-il une variable système du genre activecell.address avec laquelle je

pourrai atteindre cette case ?

Merci

Bonjour

De façon générale en VBA on essaie de ne pas sélectionner les cellule.

re correspond à la cellule trouvée : tu peux agir dessus par VBA sans qu'elle soit la cellule active.

A défaut

 re.select

Merci

Bonjour dj3039,

Je suis d'accord avec 78chris (salut) : c'est mieux d'éviter de sélectionner la cellule et de faire directement le travail qui est à faire dessus : par exemple en lire la valeur, lui appliquer une mise en forme, ou autre ; donc en principe, re.Select doit être utilisé seulement si c'est le but-même qu'on recherche : se positionner sur la cellule trouvée.


Sans avoir à sélectionner la cellule trouvée, ceci peut t'être utile (exemples en rouge : si la cellule trouvée est G5) :

a) si tu as besoin de l'adresse complète : re.Address$G$5

b) si tu as besoin de seulement la colonne : re.Column7 (colonne G)

c) si tu as besoin de seulement la ligne : re.Row5 (ligne n° 5)


Pour tout ce qui précède, le choix doit donc être fait selon le but que tu cherches à atteindre :

à toi d'adapter en conséquence ton programme VBA.

dhany

Rechercher des sujets similaires à "question fonction find"