OVH Cloud OVH Cloud

Contrôle d'erreur de recherche

2 réponses
Avatar
JeNeVois
Bonjour,

pour une fonction de recherches multiples j'utilise l'instruction
suivante :

On Error GoTo errhand
fvoc.Cells.Find(What:=mot, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:=True, _ SearchFormat:=False).Activate

Si l'item recherché n'est pas trouvé, une erreur se produit et
via le errorhandler l'action est récanalisée vers l'item suivant.

Mais mis à part que cette façon de procéder me paraît manquer
un peu de rigueur, elle ne fonctionne qu'une seule fois car
lors du deuxième mot non-trouvé, l'erreur d'éxécution no. 91
arrête tout directement sur l'instruction qui suit le
"On Error GoTo errhand", ayant pourtant nécessairement
"passé dessus" juste avant.

Merci pour toute réponse

Salutations

2 réponses

Avatar
JB
Bonjour,

Recherche avec Find:

Sub cherche()
nomCherche = InputBox("Nom cherché? ")
On Error Resume Next
[A:A].Find(What:=nomCherche, LookIn:=xlValues,
LookAt:=xlWhole).Select
If Err = 0 Then
Range(ActiveCell).Select
Else
MsgBox "Pas trouvé"
End If
On Error GoTo 0
End Sub

Sub cherche2()
nomCherche = InputBox("Nom cherché? ")
Set result = [A:A].Find(What:=nomCherche, LookIn:=xlValues,
LookAt:=xlWhole)
If result Is Nothing Then
MsgBox "Non trouvé"
Else
result.Select
End If
End Sub

Sub cherche_plusieurs()
nom = InputBox("Nom cherché?")
Set champ = [A:A]
Set c = champ.Find(nom, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
premier = c.Address
Do
c.Interior.ColorIndex = 4
Set c = champ.FindNext(c)
Loop While Not c Is Nothing And c.Address <> premier
End If
End Sub

http://cjoint.com/?mEh478DMKQ

Cordialement JB

Bonjour,

pour une fonction de recherches multiples j'utilise l'instruction
suivante :

On Error GoTo errhand
fvoc.Cells.Find(What:=mot, After:¬tiveCell, LookIn:=xlFormulas, L ookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:=True, _ SearchFormat:úlse).Activate

Si l'item recherché n'est pas trouvé, une erreur se produit et
via le errorhandler l'action est récanalisée vers l'item suivant.

Mais mis à part que cette façon de procéder me paraît manquer
un peu de rigueur, elle ne fonctionne qu'une seule fois car
lors du deuxième mot non-trouvé, l'erreur d'éxécution no. 91
arrête tout directement sur l'instruction qui suit le
"On Error GoTo errhand", ayant pourtant nécessairement
"passé dessus" juste avant.

Merci pour toute réponse

Salutations


Avatar
JeNeVois
Bonjour "JB",

merci, c'est parfait.
Et d'ores et déjà bonne année ! :)

Salutations


Bonjour,

Recherche avec Find:

Sub cherche()
nomCherche = InputBox("Nom cherché? ")
On Error Resume Next
[A:A].Find(What:=nomCherche, LookIn:=xlValues,
LookAt:=xlWhole).Select
If Err = 0 Then
Range(ActiveCell).Select
Else
MsgBox "Pas trouvé"
End If
On Error GoTo 0
End Sub

Sub cherche2()
nomCherche = InputBox("Nom cherché? ")
Set result = [A:A].Find(What:=nomCherche, LookIn:=xlValues,
LookAt:=xlWhole)
If result Is Nothing Then
MsgBox "Non trouvé"
Else
result.Select
End If
End Sub

Sub cherche_plusieurs()
nom = InputBox("Nom cherché?")
Set champ = [A:A]
Set c = champ.Find(nom, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
premier = c.Address
Do
c.Interior.ColorIndex = 4
Set c = champ.FindNext(c)
Loop While Not c Is Nothing And c.Address <> premier
End If
End Sub

http://cjoint.com/?mEh478DMKQ

Cordialement JB

Bonjour,

pour une fonction de recherches multiples j'utilise l'instruction
suivante :

On Error GoTo errhand
fvoc.Cells.Find(What:=mot, After:¬tiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:=True, _ SearchFormat:úlse).Activate

Si l'item recherché n'est pas trouvé, une erreur se produit et
via le errorhandler l'action est récanalisée vers l'item suivant.

Mais mis à part que cette façon de procéder me paraît manquer
un peu de rigueur, elle ne fonctionne qu'une seule fois car
lors du deuxième mot non-trouvé, l'erreur d'éxécution no. 91
arrête tout directement sur l'instruction qui suit le
"On Error GoTo errhand", ayant pourtant nécessairement
"passé dessus" juste avant.

Merci pour toute réponse

Salutations