Bonjour à tous,

Tout d'abord un grand merci à celles et ceux qui prendront le temps de s'arrêter sur mon petit soucis.
Ayant parcouru de long en large developpez.net ainsi que d'autres en vain, je me permets de vous solliciter.
Peut-être n'est-ce guère possible.

Topo rapide :

J'ai trois macros qui font des filtres avancés automatiquement en fonction de critères.

  • La première macro génère un filtre avancé basé sur un seul critère.
  • La deuxième sur le premier critère et sur un second.
  • La troisième sur les deux premiers et sur un troisième.



Je souhaiterai savoir s'il est possible de créer un raccourci clavier Enter afin d'activer les macros (1ère difficulté), en reconnaissant automatiquement s'il faut activer la Macro 1 (si un seul critère est mentionné dans la zone de critère), la Macro 2 (si les deux premiers critères sont mentionnés) et la Macro 3 (si les trois critères sont mentionnés).

Voici mes codes pour le moment :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub Recherche1Critère()
 
'Ce code permet d'automatiser l'action de filtres avancés :
    'Notre source d'information est bien l'onglet BDD (sont préalablement copiées ici toutes les informations liés au P&L déjà traîtés)
    'Nous sélectionnons la plage de A2 à U139
    'Dans notre onglet de travail, la zone de critère préatablie se situe sur la plage A2 à H3 (de AYANTS-DROIT à NON OEUVRE)
    'Enfin, nous souhaitons que la plage filtrée soit copiée en cellule A13
    Sheets("BDD").Range("A2:U139").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A2:H3"), CopyToRange:=Range("A13"), Unique:=False
    Range("A3").Select
End Sub
 
Sub Recherche2Critères()
 
'Ce code est quasiment identique à celui d'une recherche mono critère, seule la plage de critère change pour prendre en compte les lignes 2 et 4 :
    Sheets("BDD").Range("A2:U139").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A2:H4"), CopyToRange:=Range("A13"), Unique:=False
    Range("A3").Select
End Sub
 
Sub Recherche3Critères()
 
'Ce code est quasiment identique à celui d'une recherche mono critère, seule la plage de critère change pour prendre en compte les lignes 2 à 5 :
    Sheets("BDD").Range("A2:U139").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A2:H5"), CopyToRange:=Range("A13"), Unique:=False
    Range("A3").Select
End Sub
Par avance merci grandement pour votre aide,

arochab