Cells.Find

Alecks

XLDnaute Nouveau
Bonjour tout le monde!


Set a = Cells.Find(What:= "qqch")
rangee = a.row


J'utilise cette commande pour retrouver un mot dans un texte, mais j'ai remarquer que si je fait un Ctrl+F pour rechercher moi même dans mon document et que je change les options pour qu'il cherche par colonne plutôt que par ligne, la prochaine fois que j'exécuterai ma macro, il cherchera par colonne. Mais je veux qu'il cherche par ligne quoiqu'il arrive. Y'a-t-il quelque chose que je puisse ajouter?

Merci
 

ROGER2327

XLDnaute Barbatruc
Re : Cells.Find

Bonjour Alecks
Tout est là (aide d'Excel) :
Méthode Find telle qu'elle s'applique à l'objet Range.
(...)
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.
Magique, la touche F1 !​
ROGER2327
 

Cousinhub

XLDnaute Barbatruc
Re : Cells.Find

Bonjour,

Tu démarres l'enregistreur de macro..

Tu fais ta recherche par Ctrl + F, avec tes options désirées

Tu stoppes l'enregistreur..

Puis, tu cliques sur Find, puis sur F1..

tu auras toutes les explications concernant le code..

Bonne découverte
 

Alecks

XLDnaute Nouveau
Re : Cells.Find

Je crois bien tout ce que j'ai de besoin c'est le "SearchOrder:=xlByRows pour que ça fonctionne. Seul petit détail : j'ai utilisé cette fonction 97 fois dans ma macro monstre qui est en fait 6 à 8 macro qui s'exécute une à la suite de l'autre. Tout est réparti dans une 20aine de module. Il est donc assez ardu d'ajouter la commande à chaque fois que j'utilise Cells.Find. Est-ce qu'il est possible de poser le SearchOrder pour toute la durée de la macro sans être obliger de l'écrire à chaque fois que j'utilise la fonction?

Merci.
 

Alecks

XLDnaute Nouveau
Re : Cells.Find

J'ai fait le test et il semblerait que non. Une fois utilisé, il revient à la valeur par défaut que j'ai posé manuellement.

En fait la recherche par ligne est posée par défaut quand on commence un nouveau document excel, il me faudrait donc une commande qui réinitialise toutes les options de excel au début de la macro, de cette façon il chercherait toujours par ligne.
 

Pierrot93

XLDnaute Barbatruc
Re : Cells.Find

Re

tu avais bien modifié le code que je t'avais donné, j'avais mis "xlByColumns" au lieu de "xlByRows"...

Code:
Set a = Cells.Find(What:="qqch", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False)

@+
 

Alecks

XLDnaute Nouveau
Re : Cells.Find

Non j'ai mis "xlByRows" parce que je veux chercher par rangee. Sauf que ça ne fonctionne que sur le premier puisque c'est le seul à qui j'ai écrit cela. Ensuite il cherche par colonne pour les autres parce que c'est le setting maintenant par défaut qui est dans mon document.
 

Cousinhub

XLDnaute Barbatruc
Re : Cells.Find

Re-,

refais une recherche manuelle par ligne, et ainsi, il le gardera en mémoire..

Sinon, le meilleur moyen est bien de mettre tous les arguments..

Ainsi, pas d'erreurs (et tant pis pour le temps pris, il sera rentabilisé....)
 

ROGER2327

XLDnaute Barbatruc
Re : Cells.Find

Re...
Re-,

refais une recherche manuelle par ligne, et ainsi, il le gardera en mémoire..

Sinon, le meilleur moyen est bien de mettre tous les arguments..

Ainsi, pas d'erreurs (et tant pis pour le temps pris, il sera rentabilisé....)
Avis partagé : je crains que la sureté soit à ce prix !
Philosophons un peu : les petites économies (variables non typées, arguments optionnels négligés, structuration laxiste des données, et tutti quanti) sont la source de grandes dépenses... Comme disait quelqu'un (certainement quelqu'un de bien) : Tout est dans tout et réciproquement.
Bon courage !
ROGER2327
 

Alecks

XLDnaute Nouveau
Re : Cells.Find

Re-,

refais une recherche manuelle par ligne, et ainsi, il le gardera en mémoire..

Sinon, le meilleur moyen est bien de mettre tous les arguments..

Ainsi, pas d'erreurs (et tant pis pour le temps pris, il sera rentabilisé....)

C'est ce que j'ai fait. C'est seulement une protection que je veux mettre parce que je ne serai pas le seul à utiliser cette macro.

Je vais seulement laisser une mise en garde dans ce cas là

Merci bien tout le monde.
 

Discussions similaires

Réponses
7
Affichages
445

Statistiques des forums

Discussions
312 691
Messages
2 090 992
Membres
104 721
dernier inscrit
Hmidou