Plusieurs macros sous Worksheet_SelectionChange avec commande via touche
Bonjour,
J'ai fait le tour du forum mais, difficile de trouver une réponse.
J'ai quatre cellules qui me servent à faire des recherches, et qui doivent lancer une macro spécifique quand j'appuie sur la touche Enter.
J'arrive à faire fonctionner la dernière mais pas les autres en parallèle.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Recherche par n° de Devis
If Not Intersect(Me.Range("E4"), Target) Is Nothing Then
' affectation aux touches Entrée de l'exécution d'une macro
Application.OnKey Key:="{RETURN}", procedure:="Recherche_devis_f": Application.OnKey Key:="{ENTER}", procedure:="Recherche_devis_f"
Else
' restauration action standard des touches Entrée
Application.OnKey Key:="{RETURN}": Application.OnKey Key:="{ENTER}"
End If
' Recherche par Nom Prénom
If Not Intersect(Me.Range("E6"), Target) Is Nothing Then
' affectation aux touches Entrée de l'exécution d'une macro
Application.OnKey Key:="{RETURN}", procedure:="Recherche_devis_nom": Application.OnKey Key:="{ENTER}", procedure:="Recherche_devis_nom"
Else
' restauration action standard des touches Entrée
Application.OnKey Key:="{RETURN}": Application.OnKey Key:="{ENTER}"
End If
' Recherche par Adresse
If Not Intersect(Me.Range("E8"), Target) Is Nothing Then
' affectation aux touches Entrée de l'exécution d'une macro
Application.OnKey Key:="{RETURN}", procedure:="Recherche_devis_adresse": Application.OnKey Key:="{ENTER}", procedure:="Recherche_devis_adresse"
Else
' restauration action standard des touches Entrée
Application.OnKey Key:="{RETURN}": Application.OnKey Key:="{ENTER}"
End If
' Recherche par Ville
If Not Intersect(Me.Range("E10"), Target) Is Nothing Then
' affectation aux touches Entrée de l'exécution d'une macro
Application.OnKey Key:="{RETURN}", procedure:="Recherche_devis_ville": Application.OnKey Key:="{ENTER}", procedure:="Recherche_devis_ville"
Else
' restauration action standard des touches Entrée
Application.OnKey Key:="{RETURN}": Application.OnKey Key:="{ENTER}"
End If
End SubJ'ai besoin de vos lumières, merci.
Bonjour et bienvenu sur le forum
La macro évènementiel sélection change ne fonctionne pas avec la touche entrée...
Un fichier est TOUJOURS le bienvenu....
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Recherche par n° de Devis
If Not Intersect(Me.Range("E4"), Target) Is Nothing Then
call Recherche_devis_f 'si recherche_devis_f est une macro
ElseIf Not Intersect(Me.Range("E6"), Target) Is Nothing Then
' Recherche par Nom Prénom
call Recherche_devis_nom
ElseIf Not Intersect(Me.Range("E8"), Target) Is Nothing Then
' Recherche par Adresse
call Recherche_devis_adresse
elseIf Not Intersect(Me.Range("E10"), Target) Is Nothing Then
' Recherche par Ville
call Recherche_devis_ville
End If
End Sub
A+ François
Merci François, d'avoir pris le temps de me répondre.
Je te joins le fichier, ça sera plus clair.
La macro évènementielle sélection change avec la touche Enter pour l'activer. J'arrive à la faire fonctionner mais uniquement sur une cellule (E10) et pas les autres E4,E6,E8.
Sûrement parce que c'est la dernière sur la feuille de code.
Si tu tapes dans recherche ville : Onex elle marche et tu peux même effacer le filtre en appuyant sur enter encore une fois.
Mais pas le reste, veut pas...
PS les macros d'appel sont vers la fin du module 1.
Bonjour Tippedpanic
Pour la macro de fanfan38, essayez d'utiliser l'évènement Worksheet_Change plutôt que Worksheet_SelectionChange.
Bonjour
Je me suis battu pendant une demi journée avec tes filtres et j'ai abandonné...
Ci joint ma solution
A+ François
Bonjour,
Le premier code de François avec la modification de Mafraise, marche parfaitement.
Je peux faire des recherches à critère multiple tout en conservant la mise en forme conditionnelle et les diverses particularités, et on peut modifier les données du tableau dynamiquement.
C'est juste parfait, mieux ce serait moins bien.
Désolé François pour ton après-midi.
Je remets le code au propre avec la fonction recherche tableau si ça peut servir.
à mettre dans la feuille.
Private Sub Worksheet_Change(ByVal Target As Range)
' Recherche par n° de Devis
If Not Intersect(Me.Range("E4"), Target) Is Nothing Then
Call Recherche_devis_f 'si recherche_devis_f est une macro
ElseIf Not Intersect(Me.Range("E6"), Target) Is Nothing Then
' Recherche par Nom Prénom
Call Recherche_devis_nom
ElseIf Not Intersect(Me.Range("E8"), Target) Is Nothing Then
' Recherche par Adresse
Call Recherche_devis_adresse
ElseIf Not Intersect(Me.Range("E10"), Target) Is Nothing Then
' Recherche par Ville
Call Recherche_devis_ville
End If
End Subà mettre dans le module.
Sub Recherche_devis_f()
ActiveSheet.ListObjects("Tableau3").Range.AutoFilter Field:=1, Criteria1:="=*" & Range("E4").Value & "*"
End Sub