Lancer une macro avant CTRL+F

Etienne2323

XLDnaute Impliqué
Bonjour à tous,
je me demande s'il est possible de programmer quelque chose qui me permettrait de lancer une macro juste avant que s'affiche la fenêtre de recherche (CTRL + F) de Excel lorsqu'un utilisateur la sélectionne. Je me demande donc comment, de manière systématique, arriver à coller une macro à cette fonction.

Par exemple, chaque fois que l'utilisateur fait un CTRL+F, la cellule A1 est sélectionnée.

Merci beaucoup,

Étienne
 

Softmama

XLDnaute Accro
Re : Lancer une macro avant CTRL+F

Bonjour Etienne2323 et MJ13,

En affectant le raccourci à une macro Ctrl+F, tu peux lancer ce quetu veux comme code avant d'afficher la boîte de dialogue xlDialogFormulaFind.
Simple mais efficace je pense.

Cf. fichier ci-joint.
 
Dernière édition:

Etienne2323

XLDnaute Impliqué
Re : Lancer une macro avant CTRL+F

Salut Michel, Softmama, le forum,
alors voici les conclusions suite aux propositions soumises plus haut.

@ Michel
: La piste vers OnKey était très pertinente. J'ai effectivement trouvé de nombreux posts sur le forum à ce sujet, avec d'excellents exemples (notamment ceux de Pierrot). Par contre, cette méthode n'arrive pas à remplir tout à fait mon besoin.

@ Softmama : Votre piste est celle que j'ai utilisée. Effectivement, pour lancer systématiquement une macro ou simplement un petit bout de code avant une commande Excel (CTRL+F dans mon cas), affecter le même raccourci clavier que la commande (CTRL + F ici) à une nouvelle macro et ensuite recréer la commande après la mini opération fonctionne à merveille.

À noter : le
Code:
Application.Dialogs(xlDialogFormulaFind).Show
ne fonctionnait pas bien en Excel 2007.

Pour 2007, à rempacer par
Code:
Application.CommandBars.ExecuteMso "FindDialogExcel"
ou encore
Code:
Application.CommandBars.FindControl(ID:=1849).Execute
Ce dernier fonctionne autant sur 2003 que 2007. Pas testé sur les autres versions par contre.

Donc, finalement, voici ma soluton.
Je cherchais à décocher systématiquement la case "Totalité du contenu de la cellule" lors d'une recherche. La solution consiste donc à lancer une fausse recherche en ne demandant pas la totalité du contenu (LookAt:=xlPart). Comme Excel conserve en mémoire la dernière demande, alors quand j'affiche le CTRL + F, la case est décochée à tous coups.
À noter que j'ai attribué le contrôle clavier "CTRL+F" à cette macro.

VB:
Sub Decocher_la_case()
    Set Lig = Range("A1").Find("", LookIn:=xlValues, LookAt:=xlPart)
    If Not Lig Is Nothing Then Exit Sub
    Application.CommandBars.ExecuteMso "FindDialogExcel"
End Sub

Merci à tous pour votre aide !

Cordialement,

Étienne
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
248

Statistiques des forums

Discussions
312 352
Messages
2 087 536
Membres
103 581
dernier inscrit
Boodur