OVH Cloud OVH Cloud

Besoin d'explication

6 réponses
Avatar
azza
Bonjouor,
J'essai de voir la différence entre :
Set c = [plage].Find(2,LookIn:=xlValues)
et
Set c = [plage].Find(2)
et je ne trouve aucune, sinon il sert à quoi le 2eme parametre?.

Merci de votre aide.

6 réponses

Avatar
Nicolas B.
Salut azza,

Extrait de l'aide sur la fonction Find :

"Les paramètres des arguments LookIn, LookAt, SearchOrder et MatchByte
sont enregistrés chaque fois que vous utilisez cette méthode. Si vous ne
spécifiez aucun paramètre pour ces arguments lors du prochain appel de
la méthode, les paramètres enregistrés sont utilisés. Le fait de définir
les paramètres de ces arguments modifie les paramètres de la boîte de
dialogue Rechercher, ce qui a pour effet de changer les paramètres
enregistrés qui sont utilisés lorsque vous ne spécifiez pas les
arguments. Pour éviter toute ambiguïté, définissez ces arguments de
façon explicite chaque fois que vous utilisez cette méthode. "

Donc si par hasard tu fais un Find avec comme paramètre
LookIn:=xlFormulas, lorsque tu appellera Find de nouveau sans préciser
xlValues, il retiendra la valeur précédemment utilisée, c'est-à-dire
xlFormulas. Il vaut donc mieux préciser systématiquement les 4 arguments.


A+
Nicolas B.


azza wrote:
Bonjouor,
J'essai de voir la différence entre :
Set c = [plage].Find(2,LookIn:=xlValues)
et
Set c = [plage].Find(2)
et je ne trouve aucune, sinon il sert à quoi le 2eme parametre?.

Merci de votre aide.




Avatar
Michel Gaboly
Bonjour,

Si tu fais une recherche manuelle dans une feuille Excel, tu
peux choisir de chercher dans les formules, les valeurs ou
les commentaires.

Quand tu utilises Find en VBA, si tu ne précises pas xlValues
(ou xlFormulas, ou xlNotes,selon le cas), la recherche utilise
comme option celle correspondant à la recherche précédente,
que celle-ci ait été déclenchée manuellement ou par VBA.

En précisant xlValues, tu es sûr que la recherche se fera dans
les valeurs, ce qui n'est pas le cas autrement.

C'est pourquoi si tu fais 2 recherches à la suite, une avec ce
paramètre, puis l'autre sans, il n'y a aucune différence.

Par contre fais une recherche avec le paramètre xlValues, puis
une recherche manuelle en choisissant les formules, puis à
nouveau une recherche en VBA sans préciser ni xlValues, ni
xlFormulas, ni xlNotes, et tu constateras que la recherche se
fait dans les formules.



Bonjouor,
J'essai de voir la différence entre :
Set c = [plage].Find(2,LookIn:=xlValues)
et
Set c = [plage].Find(2)
et je ne trouve aucune, sinon il sert à quoi le 2eme parametre?.

Merci de votre aide.


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
azza
Merci Nicolas B.
"Nicolas B." a écrit dans le message
de news:
Salut azza,

Extrait de l'aide sur la fonction Find :

"Les paramètres des arguments LookIn, LookAt, SearchOrder et MatchByte
sont enregistrés chaque fois que vous utilisez cette méthode. Si vous ne
spécifiez aucun paramètre pour ces arguments lors du prochain appel de
la méthode, les paramètres enregistrés sont utilisés. Le fait de définir
les paramètres de ces arguments modifie les paramètres de la boîte de
dialogue Rechercher, ce qui a pour effet de changer les paramètres
enregistrés qui sont utilisés lorsque vous ne spécifiez pas les
arguments. Pour éviter toute ambiguïté, définissez ces arguments de
façon explicite chaque fois que vous utilisez cette méthode. "

Donc si par hasard tu fais un Find avec comme paramètre
LookIn:=xlFormulas, lorsque tu appellera Find de nouveau sans préciser
xlValues, il retiendra la valeur précédemment utilisée, c'est-à-dire
xlFormulas. Il vaut donc mieux préciser systématiquement les 4 arguments.


A+
Nicolas B.


azza wrote:
Bonjouor,
J'essai de voir la différence entre :
Set c = [plage].Find(2,LookIn:=xlValues)
et
Set c = [plage].Find(2)
et je ne trouve aucune, sinon il sert à quoi le 2eme parametre?.

Merci de votre aide.






Avatar
azza
Un grand merci à tous

PS: Gaboly , ton site est chouette, bonne continuation.

"Michel Gaboly" a écrit dans le message de news:

Bonjour,

Si tu fais une recherche manuelle dans une feuille Excel, tu
peux choisir de chercher dans les formules, les valeurs ou
les commentaires.

Quand tu utilises Find en VBA, si tu ne précises pas xlValues
(ou xlFormulas, ou xlNotes,selon le cas), la recherche utilise
comme option celle correspondant à la recherche précédente,
que celle-ci ait été déclenchée manuellement ou par VBA.

En précisant xlValues, tu es sûr que la recherche se fera dans
les valeurs, ce qui n'est pas le cas autrement.

C'est pourquoi si tu fais 2 recherches à la suite, une avec ce
paramètre, puis l'autre sans, il n'y a aucune différence.

Par contre fais une recherche avec le paramètre xlValues, puis
une recherche manuelle en choisissant les formules, puis à
nouveau une recherche en VBA sans préciser ni xlValues, ni
xlFormulas, ni xlNotes, et tu constateras que la recherche se
fait dans les formules.



Bonjouor,
J'essai de voir la différence entre :
Set c = [plage].Find(2,LookIn:=xlValues)
et
Set c = [plage].Find(2)
et je ne trouve aucune, sinon il sert à quoi le 2eme parametre?.

Merci de votre aide.


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
michdenis
Bonjour Azza,

Si je peux y aller de mes 2 cents !!!

Le paramètre "LookIn" de la méthode "Find" peut prendre 2 valeurs : xlValues ou xlFormulas.

Ces 2 valeurs équivalent en fait aux 2 propriétés de l'objet "Range" : .value et .formula

*******exemple 1********
Suppose que dans la cellule A1, tu ais la valeur 25

A = Range("A1").value Retourne 25
B = Range("A1").formula Retourne "25"

Dans les 2 cas (xlvalues et xlformulas), la méthode find trouvera.

*******exemple 2********

Suppose que dans la cellule A1, tu ais la valeur 25 qui résulte d'une formule
dans A1 = B1+C1
A = Range("A1").value Retourne 25
B = Range("A1").formula Retourne "= B1+C1"

La conséquence de ceci, si dans ce cas, tu utilises la méthode find avec xlvalues ...la méthode find trouvera la valeur
recherchée même si elle résulte d'une cellule contenant une valeur. Si tu avais défini le paramètre à xlFormulas, la méthode
find n'aurait pas trouvé puisque que Range("A1").Formula retourne "= B1+C1" et non 25. Cependant, si tu demandais à la
méthode "Find" avec le paramètre xlFormulas de trouver "= B1+C1" elle identifierait correctement la cellule A1.


En conclusion, la méthode "Find" effectue sa recherche à partir de la propriété "Value" ou "Formula" de l'objet "Range" selon
que tu auras défini le paramètre "LookIn" à "xlValues" ou "xlFormulas" . En aucune manière, cela signifie que la méthode Find
se limitera seulement aux cellules de la plage désignée contenant seulement des Valeurs (excluant celles contenant des
formules) si tu lui donnes en paramètre LookIn:=xlvalues. Je crois que c'était là une nuance importante !


Salutations!





"azza" a écrit dans le message de news:
Bonjouor,
J'essai de voir la différence entre :
Set c = [plage].Find(2,LookIn:=xlValues)
et
Set c = [plage].Find(2)
et je ne trouve aucune, sinon il sert à quoi le 2eme parametre?.

Merci de votre aide.
Avatar
Michel Gaboly
Merci pour le commentaire ;-))


Un grand merci à tous

PS: Gaboly , ton site est chouette, bonne continuation.

"Michel Gaboly" a écrit dans le message de news:

Bonjour,

Si tu fais une recherche manuelle dans une feuille Excel, tu
peux choisir de chercher dans les formules, les valeurs ou
les commentaires.

Quand tu utilises Find en VBA, si tu ne précises pas xlValues
(ou xlFormulas, ou xlNotes,selon le cas), la recherche utilise
comme option celle correspondant à la recherche précédente,
que celle-ci ait été déclenchée manuellement ou par VBA.

En précisant xlValues, tu es sûr que la recherche se fera dans
les valeurs, ce qui n'est pas le cas autrement.

C'est pourquoi si tu fais 2 recherches à la suite, une avec ce
paramètre, puis l'autre sans, il n'y a aucune différence.

Par contre fais une recherche avec le paramètre xlValues, puis
une recherche manuelle en choisissant les formules, puis à
nouveau une recherche en VBA sans préciser ni xlValues, ni
xlFormulas, ni xlNotes, et tu constateras que la recherche se
fait dans les formules.



Bonjouor,
J'essai de voir la différence entre :
Set c = [plage].Find(2,LookIn:=xlValues)
et
Set c = [plage].Find(2)
et je ne trouve aucune, sinon il sert à quoi le 2eme parametre?.

Merci de votre aide.


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com