Arguments pour xlDialogFormulaFind

[Résolu/Fermé]
Signaler
Messages postés
492
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
-
Messages postés
492
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
-
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

Messages postés
24200
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 octobre 2021
6 929
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
Messages postés
492
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
30
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.
Messages postés
492
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
30
« 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.
Messages postés
24200
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 octobre 2021
6 929
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
Messages postés
492
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
30
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.
Messages postés
24200
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 octobre 2021
6 929
Bonjour,

6 jours pour pondre ça...
« (faut pas être ceinture noire d'excel pour ça) » : votre mépris envers les utilisateurs est décevant.
C'est l'inverse.
Au contraire de toi je pense qu'ils sont tout à fait capable d'utiliser les bases d'excel pour peu qu'on prenne le temps de leur expliquer.
Je ne les prend pas pour des demeurés qu'ils ne sont pas et les pousse vers l'autonomie maximale.
Et tiens toi bien : j'y arrive. Incroyable non ?

Pour le reste, vu le ton employé je ne prendrais pas plus de temps pour te ré-expliquer différemment, j'ai suffisament détaillé. Relis, tu finiras par comprendre (tu vois, je ne désespère jamais et j'ai confiance).
Je t'ai aidé sur pas mal de sujets dont certains avec beaucoup de temps, celui-ci sera le dernier.
Allez, bonne continuation
eric
Messages postés
492
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
30 >
Messages postés
24200
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 octobre 2021

Je peux seulement vous dire qu'en enseignement, répondre à quelqu'un que ça ne prend pas [choisissez l'expression] ou qu'il ne faut pas être [choisissez l'expression] pour comprendre ça, c'est anti-pédagogique. C'est ce qu'on nous apprend à l'université, c'est ce qu'on apprend aussi avec l'expérience.

Chacun part avec son bagage de connaissance, et si une personne n'est pas à l'aise avec un outil, j'essaie d'en simplifier l'utilisation le plus possible, sans juger, quitte à me casser la tête parfois de mon côté.

Vous avez votre opinion, j'ai la mienne.

Et je vous assure que c'est impossible d'expliquer chacune des finalités de l'outil que j'ai construit à chaque utilisateur. (Par expérience, je sais à quel point les outils technologiques peuvent pour certains demeurer très mystérieux! Pour avoir enseigné le logiciel, vous seriez surpris à quel point même la base peut parfois être inconnue...)

Je n'aime pas participer à des débats publics qui personnalisent les échanges, je n'ai aucunement l'intention de vous insulter. Or, je me suis sentie insultée par votre réponse qui ne me semblait pas aidante ni en lien avec mes besoins, et j'ai senti du mépris envers mes collègues. Si je me suis trompée, vous m'en voyez désolée. Si j'avais pu vous répondre autrement, je l'aurais fait, mais nous n'avons pas les coordonnées personnelles des utilisateurs.

Je vous remercie de votre aide, et peut-être que c'est seulement une question d'interprétation, c'était peut-être une incompréhension de mon besoin de votre part.

Je m'excuse sincèrement si j'ai mal interprété vos propos.

L'outil est maintenant utilisé, sans l'option souhaitée! Nous verrons bien...

Merci et bonne journée!