J'ai eu un problème similaire. J'ai un bouton dans un classeur. Si le bouton est cliqué, je veux qu'Excel ouvre la boîte de dialogue de recherche avec l'option "rechercher dans tous les classeurs" déjà sélectionnée au lieu de la valeur par défaut "dans la feuille", quoi qu'il arrive.
De plus, je voulais que le bouton fonctionne en tenant compte des options cachées ou affichées et que quelqu'un fasse ou non des modifications manuellement. C'est délicat car Excel par défaut n'affiche pas les options au démarrage mais s'en souvient et les affiche à nouveau la prochaine fois si quelqu'un les a déjà affichées.
Pour vous assurer que les frappes fonctionnent, nous avons besoin d'une série de frappes qui définit le paramètre indépendamment de l'état initial. A pris un peu de bricolage, mais j'en ai trouvé un qui fonctionne.
Voici mon code pour la version anglaise d'Excel, pour les autres langues, vous devez modifier les clés en conséquence.
Sub Commanbutton_Click()
Cells(1, 1).Select
SendKeys "^f", True
SendKeys "{TAB 15}"
SendKeys " ", True
SendKeys "%t%t", True
SendKeys "{TAB 2}", True
SendKeys "{DOWN}{DOWN}{ENTER}", True
SendKeys "%t%t", True
End Sub
Vous pouvez l'essayer manuellement:
Appuyez sur CTRL + F pour la boîte de dialogue de recherche Appuyez 15 fois sur la touche TAB pour que vous atterrissiez sur "Options" ou sur la liste déroulante "Rechercher dans".
Espace presse et soit
1) Les options sont affichées ou 2) la liste déroulante est activée et rien ne se passe
Appuyez deux fois sur Alt + T pour réinitialiser le curseur dans la zone de saisie de recherche
Appuyez deux fois sur TAB, cela vous amènera à la recherche dans la liste déroulante, quoi qu'il en soit (car les étapes précédentes garantissent que les options sont en fait affichées!)
Appuyez deux fois sur la flèche BAS pour sélectionner "Classeur" et ENTER pour sélectionner
Appuyez deux fois sur ALT + T pour réinitialiser le curseur dans la zone de saisie de recherche.
J'espère que cela aide quelqu'un d'autre qui a un problème similaire. Beaucoup de googleurs m'ont seulement dit qu'il n'est pas possible de présélectionner "rechercher dans tous les classeurs" avec VBA mais que cela fonctionne!
Pour le faire fonctionner avec différentes langues, vous devez vérifier la langue et utiliser CASE pour passer à la bonne routine avec les bons raccourcis.