Arguments pour xlDialogFormulaFind

Résolu/Fermé
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - Modifié par ButteDuLac le 21/11/2016 à 14:38
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 7 déc. 2016 à 19:03
Bonjour,

Pour la commande
Application.Dialogs(xlDialogFormulaFind).Show
, je trouve la liste des arguments : text, in_num, at_num, by_num, dir_num, match_case, match_byte

Est-ce que quelqu'un peut me guider pour la description et les critères de ces arguments?

J'ai trouvé :
Text = quelle valeur chercher, laisser vide si texte saisi par l'utilisateur
In_num = pour chercher dans les formules (1), dans les valeurs (2), dans les commentaires (3)

Je crois avoir compris que :
By_num = par ligne (1), par colonne (2)
Match_case = vrai/faux (rechercher totalité du contenu de la cellule)

J'aimerais savoir si je suis exacte dans ce que je pense savoir déjà, et connaître la signification de : at_num, dir_num et match_byte.

Aussi, si je veux que la recherche se fasse dans la feuille ou dans le classeur, quel est l'argument? (Et lequel est feuille, lequel est classeur?) Est-ce que ce serait « at_num »? Avec xlWhole (classeur?) ou xlPart (feuille?). Mais alors lequel est 1 et lequel est 2?

Merci d'avance!

2 réponses

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
21 nov. 2016 à 15:24
Bonjour,

Déjà la boite de dialogue xlDialogFormulaFind n'est pas la même que celle de Ctrl+F, tu n'y trouves pas 'Dans classeur/feuille'.
Match_case = vrai/faux => respect de la casse (majuscules)
Avec xlWhole (classeur?) ou xlPart (feuille?) : non => Cellule entière ou partie.
De toute façon cette boite sert à sélectionner la cellule suivante répondant aux critères, je n'en vois pas trop l'intérêt en vba. Oblige à utiliser ActiveCell pour connaitre la cellule.
Si l'utilisateur n'a pas à changer les paramètres ni à choisir entre plusieurs possibilités utilises plutôt Range.Find (voir aide).
Fixe bien les paramètres LookIn et LookAt car ils dépendent de la dernière utilisation de Ctrl+F
Si tu dois faire la recherche sur plusieurs feuilles c'est à toi de le gérer en la lançant sur les feuilles concernées par une boucle.
eric
0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
22 nov. 2016 à 16:40
En fait, pour la fenêtre régulière, c'est :
Application.CommandBars.FindControl(ID:=1849).Execute


Mais je parlais bien de la commande
Application.Dialogs(xlDialogFormulaFind).Show


Je crois avoir trouvé la réponse ici : https://www.mrexcel.com/board/threads/value-find-dialog-box-macro.259489/

Private Sub FindBox()

Columns("A:A").Select

Application.Dialogs(xlDialogFormulaFind).Show "123", 2, 2, xlByRows, xlNext, True ',True
'arg1 text What text to find
'arg2 in_num LookIn formulas (1) or values (2) or comments (3)
'arg3 at_num LookAt whole cells (1 or xlWhole) or part (2 or xlPart)
'arg4 by_num SearchOrder xlByRows (1) or xlByColumns (2)
'arg5 dir_num SearchDirection xlNext (1) or xlPrevious (2)
'arg6 match_case MatchCase True or False
'arg7 match_byte MatchByte True or False

End Sub


Ne me reste plus qu'à l'essayer, quand j'en aurai le temps... toutefois, il ne semble pas qu'on puisse chercher dans une feuille seulement, comme avec la FindControl.

Est-ce qu'on peut, avec la commande
Application.CommandBars.FindControl(ID:=1849).Execute
, prédéterminer que la recherche se fait dans une feuille seulement?

Le fichier sera utilisé par des personnes n'ayant peu ou aucune connaissance en Excel, donc cela doit être le plus simple possible comme rendu pour eux.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
Modifié par eriiic le 22/11/2016 à 19:45
Bonjour,

bien vu pour .FindControl(ID:=1849)

Est-ce qu'on peut, avec la commande Application.CommandBars.FindControl(ID:=1849).Execute, prédéterminer que la recherche se fait dans une feuille seulement?
Que ce soit l'une ou l'autre boite la recherche sera définie sur la feuille active si la boite est affichée à partir de vba, même si tu as sélectionné Classeur auparavant.
Par contre tu ne peux pas lui passer de paramètres, mais comme elle conserve les précédents paramètres utilisés tu peux faire une recherche bidon pour les fixer avant de l'afficher.
Set c = [A1].Find(what:="toto", LookIn:=xlValues, lookat:=xlWhole, _
        searchorder:=xlByColumns, searchdirection:=xlNext, MatchCase:=False)
Application.CommandBars.FindControl(ID:=1849).Execute

En général on défini systématiquement les 3 premiers paramètres, auxquel tu peux ajouter MatchCase si ça joue sur la recherche et que tu crains que qq'un l'ait cochée.
Et si tu veux le plus simple xlDialogFormulaFind devrait suffire.
Je te le redis vu que tu n'as eu aucune réaction : si tu sais ce qu'il faut chercher et que l'utilisateur n'apporte rien il faut utiliser .find sans boite.
eric
0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
23 nov. 2016 à 20:57
C'est que dans mon menu d'accueil, j'ai un bouton de recherche que je veux qu'il cherche dans tout le classeur. Dans une autre feuille spécifique, je souhaite qu'il cherche seulement dans cette feuille, en boucle. Je ne veux pas qu'ils aient accès à « remplacer » ou tout autre option pour que ça « semble » plus compliqué... Ce sont des personnes qui ne connaissent aucunement Excel.
0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
Modifié par ButteDuLac le 23/11/2016 à 21:00
« Je te le redis vu que tu n'as eu aucune réaction : si tu sais ce qu'il faut chercher et que l'utilisateur n'apporte rien il faut utiliser .find sans boite.
eric »


Il s'agit d'un registre de documents.
Je veux que les gens puissent chercher un document par mot clé, donc ce n'est pas une recherche prédéfinie.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
Modifié par eriiic le 23/11/2016 à 22:42
Bonjour,

Ben le mieux c'est encore de leur apprendre à s'en servir, tout le monde est gagnant.

A partir de vba tu ne peux pas faire une recherche sur plusieurs feuilles directement via la boite de dialogue.
Donc soit tu leur apprends comment choisir Classeur dans la liste déroulante (faut pas être ceinture noire d'excel pour ça) , soit tu leur demande les mots clés dans une inputbox (ou un userform plus complet), fait un code qui balaie les feuilles pour chercher ce que tu veux et tu leur proposes le résultat de la recherche qu'ils choisissent le document.
Il y a peut-être mieux mais là c'est tellement abstrait sans fichier ni connaissance exacte du besoin.
eric
0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
Modifié par ButteDuLac le 29/11/2016 à 17:15
Bonjour,

« le mieux c'est encore de leur apprendre à s'en servir, tout le monde est gagnant » : cela signifierait que je doive m'asseoir avec 500 personnes pour leur montrer... votre conseil, bien que logique, est utopique, donc superflu!

« A partir de vba tu ne peux pas faire une recherche sur plusieurs feuilles directement via la boite de dialogue » : c'est faux, puisque justement, la fenêtre rechercher cherche directement dans plusieurs feuilles et c'est ce que je ne veux pas.

« soit tu leur apprends comment choisir Classeur dans la liste déroulante » : vous parlez de quoi au juste? Les seules listes déroulantes disponibles dans la fenêtre rechercher réduite sont « Rechercher par ligne/colonne » et « Regarder dans formules/valeurs/commentaires ». S'il y avait cette option, je n'aurais pas à poser cette question ici!

« (faut pas être ceinture noire d'excel pour ça) » : votre mépris envers les utilisateurs est décevant. Il s'agit de personnel salarié de différents corps de métier, aucunement des informaticiens.

« soit tu leur demande les mots clés dans une inputbox (ou un userform plus complet) » les fenêtres de recherche xlDialogFormulaFind existent déjà, vous me proposez de réinventer la roue!!!

« et tu leur proposes le résultat de la recherche qu'ils choisissent le document » : cette phrase n'est pas très claire... je veux simplement qu'ils puissent faire une recherche pour trouver un mot dans le classeur (qui sert de registre de documents)

Je ne crois pas que vous ayez besoin du fichier (qui serait beaucoup trop volumineux, et qui est confidentiel par le fait même) pour simplement me dire s'il y avait moyen d'avoir l'option « Dans » comme pour la fenêtre « Rechercher et remplacer » complète, mais sans avoir l'option de remplacer (donc la fenêtre xlDialogFormulaFind plus option « Dans feuille/classeur »).

Si ce n'est pas possible, une réponse qui dit que ce n'est pas possible, je m'en contenterais, mais attention aux jugements, svp.
0