Comportement touche ENTER pour une cellule spécifique

Bonjour à tous

Je souhaiterais assigner à une cellule précise la modification du comportement de la touche ENTER. Je sais qu'une option est possible pour l'ensemble du fichier, mais comment insérer cette spécificité sur une seule cellule sans modifier le comportement des autres.

Par exemple, j'ai un champ de recherche (cellule) et aimerait que lors de sa validation on reste dessus sans passer à la cellule en dessous. Le raccourci clavier avec la touche CTRL fonctionne, mais j'aimerais m'en passer.

Merci d'avance de me dire si c'est possible et si ou avec quelle fonction ?

Belle journée

Bonjour

Cela oblige à coder en VBA...

Merci ;) Dans ce cas, sans coder directement en VBA, y'a t'il possibilité de lancer une Macro dans cette condition précise :

- Si je suis sur la cellule H2 et que j'appuie sur ENTER, alors lancer une macro nommée MonterUnEtage

Je pensais créer une macro en l'enregistrant en direct, mais qu'elle ne soit appliquée que dans cette condition. Suis-je sur la bonne voix ou faut il vraiment coder ?

Bonjour,

De mémoire, l'utilitaire gratuit Keyboard Manager permet de remplacer une touche par une autre. Il faut installer les Power Toys (gratuit, Microsoft)

Daniel

RE

Dans ce cas nommer le cellule (TRUC à adapter et mettre ceci dans le module de la feuille concernée

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [TRUC]) Is Nothing Then [TRUC].Select
End Sub

Magnifique et limpide ! Mille merci, ça fonctionne à merveille !

@ 78chris

Par curiosité, est-il possible de procéder autrement que de sélectionner la cellule après avoir l'avoir sauvée, par exemple en remplaçant la touche "Enter" par "Ctrl+Enter" quand on est sur une cellule bien précise ? Parce qu'avec ton code, on passe furtivement par la cellule d'en-dessous.

J'ai trouvé des codes que j'ai essayé d'adapter comme suit mais aucun ne fonctionne ;

Private Sub Worksheet_Change(ByVal Target As Range)

If ActiveCell = Range("B3") Then
Application.OnKey "~"
Application.SendKeys "^~"
End If

End Sub

Ou ;

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "B3" Then
Application.OnKey "~"
Application.SendKeys "^~"
End If

End Sub

En fait ça marche mais il y a un message d'erreur, bizarre.

RE

Le Change est fait donc le déplacement standard aussi : activecell n'est plus B3

Donc tes codes agissent sur une autre cellule

Ok, mais justement, comment peut-on faire pour que quand on tape "Enter", ce soit compris comme "Ctrl+Enter", pour ne pas changer de cellule ? Uniquement pour une cellule précisée dans le code.

RE

Un code ne peut pas intervenir en cous de saisie

Tu dois pouvoir coder ça avec keyboard manager

Daniel

Ok merci, je pensais que ce serait plus simple.

RE

Tu dois pouvoir coder ça avec keyboard manager

Je doute que cela marche pour une unique cellule d'un unique onglet d'un unique classeur

Bonjour à tous,

Passer par l'événement sélection_change.

Car il est toujours antérieur au change

Lorsque le target est sur B3 modifier la valeur de la touche Entrée en CTRL Entrée

Pour toutes les autres cellules rétablir la touche Entrée à sa valeur habituelle (laisser vide)

RE

Bonjour à tous,

Passer par l'événement sélection_change.

Car il est toujours antérieur au change

Lorsque le target est sur B3 modifier la valeur de la touche Entrée en CTRL Entrée

Pour toutes les autres cellules rétablir la touche Entrée à sa valeur habituelle (laisser vide)

J'y ai pensé mais n'ai pas trouvé comment faire : peux-tu détailler

A nouveau,

Voici le code avec selection_change

Private sub Worksheet_selectionChange(byval Target as Range)
If Target. Address = $B$3 then
ActiveSheet. ScrollArea = "B3"
Application. Ontime Now + TimeValue("00:00:02"), "Reprise"
End if
End sub

'Et dans un module normal
Sub Reprise()
ActiveSheet. ScrollArea = ""
End sub

Ayant répondu de mon téléphone car en déplacement le switch Enter et CTRL Enter pose en effet un souci d' alerte. Mais on peut quand même passer par sélection_change, la temporisation peut être modifiée si besoin.

Bonsoir,

j'ai testé mais ça n'a pas d'effet ; quand je clique sur Enter ça passe à la cellule en-dessous (B4).

D'après ce forum qui évoquait le même sujet, il y aurait un souci de boucle entre Enter et Alt+Enter (et je suppose que c'est pareil avec Ctrl+Enter) ;

https://www.edureka.co/community/171084/vba-excel-replace-enter-key-with-alt-enter

it appears that Alt-Enter calls the procedure for the "Enter" part of "Alt-Enter" again, resulting in an infinite loop the first time you push enter after clicking the button, and you must restart your Excel application to clean it up.

Il a aussi posté là ;

https://stackoverflow.com/questions/70348270/vba-excel-replace-enter-key-with-alt-enter

J'ai tenté de remplacer Enter par d'autres signes (dans le code que j'avais posté plus haut) mais ça n'a pas d'effet.

Bonjour, suite et fin

Correction du code avec selection_change.

Private sub Worksheet_selectionChange(byval Target as Range)
'If Target.Address = $B$3 then
If Target.Address = "$B$3" then
Application.MoveAfterReturn = False
Else: Application.MoveAfterReturn = True
End if
End sub

Edit: Rétablissement des "" omis en ligne Target.Adress suite à la recopie (pour aller plus vite) de ma macro de la veille. Merci à Doux Rêveur de l'avoir remarqué.

Bingo, ça marche !

J'ai juste dû rajouter des guillemets autour de $B$3.

Bravo c'est top !

Rechercher des sujets similaires à "comportement touche enter specifique"