Pourquoi ai-je une erreur lors d'une recherche si la valeur n'existe pas ?

cs_prophecy Messages postés 1 Date d'inscription dimanche 4 juin 2006 Statut Membre Dernière intervention 16 mars 2009 - 16 mars 2009 à 17:12
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 - 18 mars 2009 à 08:57
Bonjour,

J'essaye de faire une recherche dans un tableau excel à partire d'une macro.
Si la valeur que je recherhce n'est pas dans le tableau la macro bug et me met une erreur par contre si la valeur est bien dans le tableau pas de souci.

J'ai fait plusieur recherche sur le net et j'ai trouvé ceci :
http://vb.developpez.com/faqvba/?page=3.4.2#Find

Mais lorsque je met ce code à l'identique, j'ai une erreur 13 : Incompatibilité de type.

Quelqu'un a une solution ?

Merci

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
17 mars 2009 à 14:15
Salut
Ton lien affiche des pages de code, cela ne nous dit pas où se trouve la recherche.
Ton lien est celui d'un autre site : Pose la question sur le forum de ce site et plus particulièrement à l'auteur de ces lignes
Une erreur survient sur une ligne : Dis-nous laquelle
Essaye de nous coller les quelques lignes importantes de ta macro (on n'a pas le temps de lire des romans)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
18 mars 2009 à 08:57
Salut,
la methode find renvoi toujours une erreur si la valeur recherchée n'a pas été trouvée.

il est donc preferable de faire comme ceci:

<code class="vb_keyword1">With
Range
(
"
A2:C21
"
)
On Error Resume Next
Set
objCell
=
.
Find
(What:
=
"
170
"
, After:
=
ActiveCell, LookIn:
=
xlValues, LookAt:
=
xlPart, SearchOrder:
=
xlByRows, SearchDirection:
=
xlNext)
If
Not
Err = 0
Then
PremAdresse
=
objCell
.
Address

Do

If
PlageResult
Is
Nothing
Then

Set
PlageResult
=
objCell
Else

Set
PlageResult
=
Application
.
Union
(objCell, PlageResult)
End
If

Set
objCell
=
.
FindNext
(objCell)
Loop
While
Not
objCell
Is
Nothing
And
objCell
.
Address
<
>
PremAdresse
End
If

End
With

</code>
0
Rejoignez-nous