Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Satanée touche ESCAPE

14 réponses
Avatar
Kolele
Bonsoir à tous,

J'ai une base "journal de bord" très pratique, où je note, via un
formulaire, sur un champ mémo toutes les infos professionnelles du jour.
Seul problème, en cours de saisie, si je tape sur Escape, je perd toute la
saisie. Comment supprimer cette touche, à part avec un maillet et un ciseau?
Je verrais bien une macro qui déclencherait une boite message OUI/NON qui
annulerait l'action, mais je n'arrive pas à l'écrire. Ou une procédure VBA,
mais là je suis balbutie encore plus.
Merci de votre aide !
kolele

10 réponses

1 2
Avatar
pbserv
bonjour,

une solution VBA consiste à intercepter la touche Escape sur
l'évènement 'Touche Appuyée' dans le mémo.
Ca donnerait un truc comme ceci :

Private Sub memo_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyEscape Then
If MsgBox("Souhaitez-vous réellement abandonner vos
modifications ?", _
vbYesNo + vbDefaultButton2 + vbQuestion,
"Confirmation...") = vbNo Then
KeyCode = 0
End If
End If
End Sub

Philippe

On 30 déc, 23:48, Kolele (pitiépasdespam)> wrote:
Bonsoir à tous,

J'ai une base "journal de bord" très pratique, où je note, via un
formulaire, sur un champ mémo toutes les infos professionnelles du jour.
Seul problème, en cours de saisie, si je tape sur Escape, je perd toute la
saisie. Comment supprimer cette touche, à part avec un maillet et un cis eau?
Je verrais bien une macro qui déclencherait une boite message OUI/NON qu i
annulerait l'action, mais je n'arrive pas à l'écrire. Ou une procédu re VBA,
mais là je suis balbutie encore plus.
Merci de votre aide !
kolele


Avatar
Kolele
Philippe, désolé d'etre maladroit : une fois placé le code dans le module, je
mets quoi dans l'evènement Touche appuyée du mémo, pour appeler la procédure ?
chuis en train de bosser le VBA, mais ça rentre pas vite.
Merci
kolele


bonjour,

une solution VBA consiste à intercepter la touche Escape sur
l'évènement 'Touche Appuyée' dans le mémo.
Ca donnerait un truc comme ceci :

Private Sub memo_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyEscape Then
If MsgBox("Souhaitez-vous réellement abandonner vos
modifications ?", _
vbYesNo + vbDefaultButton2 + vbQuestion,
"Confirmation...") = vbNo Then
KeyCode = 0
End If
End If
End Sub

Philippe

On 30 déc, 23:48, Kolele (pitiépasdespam)> wrote:
Bonsoir à tous,

J'ai une base "journal de bord" très pratique, où je note, via un
formulaire, sur un champ mémo toutes les infos professionnelles du jour.
Seul problème, en cours de saisie, si je tape sur Escape, je perd toute la
saisie. Comment supprimer cette touche, à part avec un maillet et un ciseau?
Je verrais bien une macro qui déclencherait une boite message OUI/NON qui
annulerait l'action, mais je n'arrive pas à l'écrire. Ou une procédure VBA,
mais là je suis balbutie encore plus.
Merci de votre aide !
kolele






Avatar
Thierry (ze Titi)
Bonjour Kolele !

Je me permets d'intervenir. En fait, le code proposé par Philippe ne doit pas être mis dans un module. Dans les propriétés de ton mémo, tu vas dans l'onglet "Evenements", tu sélectionnes la ligne "Sur touche appuyée", puis "Procédure évènementielle", tu ouvres l'éditeur VBA et tu copies simplement :

If KeyCode = vbKeyEscape Then
If MsgBox("Souhaitez-vous réellement abandonner vos modifications ?", _
vbYesNo + vbDefaultButton2 + vbQuestion, "Confirmation...") = vbNo Then
KeyCode = 0
End If
End If

dans l'évènement affiché.

Philippe, désolé d'etre maladroit : une fois placé le code dans le module, je
mets quoi dans l'evènement Touche appuyée du mémo, pour appeler la procédure
? chuis en train de bosser le VBA, mais ça rentre pas vite.
Merci
kolele

une solution VBA consiste à intercepter la touche Escape sur
l'évènement 'Touche Appuyée' dans le mémo.
Ca donnerait un truc comme ceci :

Private Sub memo_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyEscape Then
If MsgBox("Souhaitez-vous réellement abandonner vos
modifications ?", _
vbYesNo + vbDefaultButton2 + vbQuestion,
"Confirmation...") = vbNo Then
KeyCode = 0
End If
End If
End Sub



--
Cordialement,
Thierry

tout pour Access :
http://www.mpfa.info


Avatar
Gloops
Bonjour,

Si je peux me permettre, des fois que je ne revienne pas ...

Une fois que "Sur touche appuyée" fonctionnera, ça serait une bonne i dée
aussi de s'intéresser à "Sur annulation" (du même contrôle).

En effet, on peut aussi annuler une saisie autrement que par la touche
Echappement.

Si on gère "Sur annulation" on n'a plus besoin d'intercepter la touche,
mais ce sera probablement plus clair d'aller au bout de la démarche
entamée, avant de reprendre ce que je viens de dire. Donc, je me retire
sur la pointe des pieds, et je laisse l'initiative aux gens qui ont dém arré.

________________________________________________
Thierry (ze Titi) a écrit, le 31/12/2007 14:31 :
Bonjour Kolele !

Je me permets d'intervenir. En fait, le code proposé par Philippe ne doit pas être mis dans un module. Dans les propriétés de ton mémo , tu vas dans l'onglet "Evenements", tu sélectionnes la ligne "Sur touc he appuyée", puis "Procédure évènementielle", tu ouvres l'édite ur VBA et tu copies simplement :

If KeyCode = vbKeyEscape Then
If MsgBox("Souhaitez-vous réellement abandonner vos modification s ?", _
vbYesNo + vbDefaultButton2 + vbQuestion, "Confirmation...") = vbNo Then
KeyCode = 0
End If
End If

dans l'évènement affiché.

Philippe, désolé d'etre maladroit : une fois placé le code dans le module, je
mets quoi dans l'evènement Touche appuyée du mémo, pour appeler la procédure
? chuis en train de bosser le VBA, mais ça rentre pas vite.
Merci
kolele

une solution VBA consiste à intercepter la touche Escape sur
l'évènement 'Touche Appuyée' dans le mémo.
Ca donnerait un truc comme ceci :

Private Sub memo_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyEscape Then
If MsgBox("Souhaitez-vous réellement abandonner vos
modifications ?", _
vbYesNo + vbDefaultButton2 + vbQuestion,
"Confirmation...") = vbNo Then
KeyCode = 0
End If
End If
End Sub







Avatar
Kolele
ça maaarche ! ça fait des mois que je cherchais !
GLOOPS, le truc "sur annulation", tu le gères comment ? ça me protégerait
contre les CTRL Z intempestifs ? si tu pouvais revenir avec ton code sur la
pointe des pieds, je suis preneur !
Auriez-vous un manuel, une méthode digeste pour progresser en VBA pour
ACCESS ? j'en suis à ma troisième tentative infructueuse.

merci à tous et bon réveillon.
kolele.

Bonjour,

Si je peux me permettre, des fois que je ne revienne pas ...

Une fois que "Sur touche appuyée" fonctionnera, ça serait une bonne idée
aussi de s'intéresser à "Sur annulation" (du même contrôle).

En effet, on peut aussi annuler une saisie autrement que par la touche
Echappement.

Si on gère "Sur annulation" on n'a plus besoin d'intercepter la touche,
mais ce sera probablement plus clair d'aller au bout de la démarche
entamée, avant de reprendre ce que je viens de dire. Donc, je me retire
sur la pointe des pieds, et je laisse l'initiative aux gens qui ont démarré.

________________________________________________
Thierry (ze Titi) a écrit, le 31/12/2007 14:31 :
Bonjour Kolele !

Je me permets d'intervenir. En fait, le code proposé par Philippe ne doit pas être mis dans un module. Dans les propriétés de ton mémo, tu vas dans l'onglet "Evenements", tu sélectionnes la ligne "Sur touche appuyée", puis "Procédure évènementielle", tu ouvres l'éditeur VBA et tu copies simplement :

If KeyCode = vbKeyEscape Then
If MsgBox("Souhaitez-vous réellement abandonner vos modifications ?", _
vbYesNo + vbDefaultButton2 + vbQuestion, "Confirmation...") = vbNo Then
KeyCode = 0
End If
End If

dans l'évènement affiché.

Philippe, désolé d'etre maladroit : une fois placé le code dans le module, je
mets quoi dans l'evènement Touche appuyée du mémo, pour appeler la procédure
? chuis en train de bosser le VBA, mais ça rentre pas vite.
Merci
kolele

une solution VBA consiste à intercepter la touche Escape sur
l'évènement 'Touche Appuyée' dans le mémo.
Ca donnerait un truc comme ceci :

Private Sub memo_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyEscape Then
If MsgBox("Souhaitez-vous réellement abandonner vos
modifications ?", _
vbYesNo + vbDefaultButton2 + vbQuestion,
"Confirmation...") = vbNo Then
KeyCode = 0
End If
End If
End Sub











Avatar
pbserv
bonjour et bonne année,

En effet, une deuxième solution plus académique consiste à utiliser
l'évènement "Sur annulation" qui intercepte l'annulation des
modifications mais ne réagit pas sur un Ctrl+Z.

Pour intercepter Escape et Ctrl+Z, on peut développer le code initial
ainsi :

If KeyCode = vbKeyEscape Or (KeyCode = vbKeyZ And Shift = acCtrlMask)
Then
If MsgBox("Souhaitez-vous réellement abandonner vos
modifications ?", _
vbYesNo + vbDefaultButton2 + vbQuestion,
"Confirmation...") = vbNo Then
KeyCode = 0
ElseIf KeyCode = vbKeyZ Then
KeyCode = vbKeyEscape 'Si Ctrl+Z on retourne le code Escape par
équivalence... Autre possibilité plus propre ?
End If
End If

Philippe


On 31 déc 2007, 18:14, Kolele (pitiépasdespam)>
wrote:
ça maaarche ! ça fait des mois que je cherchais !
GLOOPS, le truc "sur annulation", tu le gères comment ? ça me protég erait
contre les CTRL Z intempestifs ? si tu pouvais revenir avec ton code sur l a
pointe des pieds, je suis preneur !
Auriez-vous un manuel, une méthode digeste pour progresser en VBA pour
ACCESS ? j'en suis à ma troisième tentative infructueuse.

merci à tous et bon réveillon.
kolele.



Bonjour,

Si je peux me permettre, des fois que je ne revienne pas ...

Une fois que "Sur touche appuyée" fonctionnera, ça serait une bonne idée
aussi de s'intéresser à "Sur annulation" (du même contrôle).

En effet, on peut aussi annuler une saisie autrement que par la touche
Echappement.

Si on gère "Sur annulation" on n'a plus besoin d'intercepter la touche ,
mais ce sera probablement plus clair d'aller au bout de la démarche
entamée, avant de reprendre ce que je viens de dire. Donc, je me retir e
sur la pointe des pieds, et je laisse l'initiative aux gens qui ont dé marré.

________________________________________________
Thierry (ze Titi) a écrit, le 31/12/2007 14:31 :
Bonjour Kolele !

Je me permets d'intervenir. En fait, le code proposé par Philippe ne doit pas être mis dans un module. Dans les propriétés de ton mémo, tu vas dans l'onglet "Evenements", tu sélectionnes la ligne "Sur touche ap puyée", puis "Procédure évènementielle", tu ouvres l'éditeur VBA e t tu copies simplement :

  If KeyCode = vbKeyEscape Then
     If MsgBox("Souhaitez-vous réellement abandonner vos modif ications ?", _
         vbYesNo + vbDefaultButton2 + vbQuestion, "Confirmat ion...") = vbNo Then
        KeyCode = 0
    End If
  End If

dans l'évènement affiché.

Philippe, désolé d'etre maladroit : une fois placé le code dans le module, je
mets quoi dans l'evènement Touche appuyée du mémo, pour appeler la procédure
? chuis en train de bosser le VBA, mais ça rentre pas vite.
Merci
kolele

une solution VBA consiste à intercepter la touche Escape sur
l'évènement 'Touche Appuyée' dans le mémo.
Ca donnerait un truc comme ceci :

Private Sub memo_KeyDown(KeyCode As Integer, Shift As Integer)
   If KeyCode = vbKeyEscape Then
      If MsgBox("Souhaitez-vous réellement abandonner vos
modifications ?", _
                vbYesNo + vbDefaultButton2 + vbQuest ion,
"Confirmation...") = vbNo Then
         KeyCode = 0
      End If
   End If
End Sub- Masquer le texte des messages précédents -





- Afficher le texte des messages précédents -






Avatar
Kolele
ça marche d'enfer. je colle le code dans toutes mes appli.
merci infiniment !


bonjour et bonne année,

En effet, une deuxième solution plus académique consiste à utiliser
l'évènement "Sur annulation" qui intercepte l'annulation des
modifications mais ne réagit pas sur un Ctrl+Z.

Pour intercepter Escape et Ctrl+Z, on peut développer le code initial
ainsi :

If KeyCode = vbKeyEscape Or (KeyCode = vbKeyZ And Shift = acCtrlMask)
Then
If MsgBox("Souhaitez-vous réellement abandonner vos
modifications ?", _
vbYesNo + vbDefaultButton2 + vbQuestion,
"Confirmation...") = vbNo Then
KeyCode = 0
ElseIf KeyCode = vbKeyZ Then
KeyCode = vbKeyEscape 'Si Ctrl+Z on retourne le code Escape par
équivalence... Autre possibilité plus propre ?
End If
End If

Philippe


On 31 déc 2007, 18:14, Kolele (pitiépasdespam)>
wrote:
ça maaarche ! ça fait des mois que je cherchais !
GLOOPS, le truc "sur annulation", tu le gères comment ? ça me protégerait
contre les CTRL Z intempestifs ? si tu pouvais revenir avec ton code sur la
pointe des pieds, je suis preneur !
Auriez-vous un manuel, une méthode digeste pour progresser en VBA pour
ACCESS ? j'en suis à ma troisième tentative infructueuse.

merci à tous et bon réveillon.
kolele.



Bonjour,

Si je peux me permettre, des fois que je ne revienne pas ...

Une fois que "Sur touche appuyée" fonctionnera, ça serait une bonne idée
aussi de s'intéresser à "Sur annulation" (du même contrôle).

En effet, on peut aussi annuler une saisie autrement que par la touche
Echappement.

Si on gère "Sur annulation" on n'a plus besoin d'intercepter la touche,
mais ce sera probablement plus clair d'aller au bout de la démarche
entamée, avant de reprendre ce que je viens de dire. Donc, je me retire
sur la pointe des pieds, et je laisse l'initiative aux gens qui ont démarré.

________________________________________________
Thierry (ze Titi) a écrit, le 31/12/2007 14:31 :
Bonjour Kolele !

Je me permets d'intervenir. En fait, le code proposé par Philippe ne doit pas être mis dans un module. Dans les propriétés de ton mémo, tu vas dans l'onglet "Evenements", tu sélectionnes la ligne "Sur touche appuyée", puis "Procédure évènementielle", tu ouvres l'éditeur VBA et tu copies simplement :

If KeyCode = vbKeyEscape Then
If MsgBox("Souhaitez-vous réellement abandonner vos modifications ?", _
vbYesNo + vbDefaultButton2 + vbQuestion, "Confirmation...") = vbNo Then
KeyCode = 0
End If
End If

dans l'évènement affiché.

Philippe, désolé d'etre maladroit : une fois placé le code dans le module, je
mets quoi dans l'evènement Touche appuyée du mémo, pour appeler la procédure
? chuis en train de bosser le VBA, mais ça rentre pas vite.
Merci
kolele

une solution VBA consiste à intercepter la touche Escape sur
l'évènement 'Touche Appuyée' dans le mémo.
Ca donnerait un truc comme ceci :

Private Sub memo_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyEscape Then
If MsgBox("Souhaitez-vous réellement abandonner vos
modifications ?", _
vbYesNo + vbDefaultButton2 + vbQuestion,
"Confirmation...") = vbNo Then
KeyCode = 0
End If
End If
End Sub- Masquer le texte des messages précédents -





- Afficher le texte des messages précédents -










Avatar
Kolele
Désolé, il reste une dernière faille dans le risque d'écrasement de mes
champs mémo : lorsque le curseur arrive sur le contrôle, le champ est
entièrement en surbrillance. Si je suis pressé, je réécris dessus et perd les
infos précédentes.
Je n'arrive pas à trouver la propriété permettant de placer le curseur à
l'intérieur du champ, prêt à ajouter du texte sans effacer l'ancien, en
quelque sorte.
L'idéal serait que les autres contrôles restent totalement en surbrillance,
donc de paramétrer seulement mon champ mémo.
Merci à tous et bonne gueule de bois.
Avatar
Eric
Bonjour,

Sur l'évènement Sur Réception du focus:
Private Sub ChampMemo_GotFocus()
If Not IsNull(Me!ChampMemo) Then Me!ChampMemo.SelStart =
Len(Me!ChampMemo) + 1
End Sub

ps: tout le if sur 1 seule ligne

Désolé, il reste une dernière faille dans le risque d'écrasement de mes
champs mémo : lorsque le curseur arrive sur le contrôle, le champ est
entièrement en surbrillance. Si je suis pressé, je réécris dessus et perd les
infos précédentes.
Je n'arrive pas à trouver la propriété permettant de placer le curseur à
l'intérieur du champ, prêt à ajouter du texte sans effacer l'ancien, en
quelque sorte.
L'idéal serait que les autres contrôles restent totalement en surbrillance,
donc de paramétrer seulement mon champ mémo.
Merci à tous et bonne gueule de bois.


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Gloops
Kolele a écrit, le 31/12/2007 18:14 :
ça maaarche ! ça fait des mois que je cherchais !
GLOOPS, le truc "sur annulation", tu le gères comment ? ça me protégerait
contre les CTRL Z intempestifs ? si tu pouvais revenir avec ton code su r la
pointe des pieds, je suis preneur !


Si j'ai bien suivi ça y est c'est fait ?

Auriez-vous un manuel, une méthode digeste pour progresser en VBA pour
ACCESS ? j'en suis à ma troisième tentative infructueuse.


Ah, ça, c'est une question récurrente.
Pour ma part j'ai appris avec l'aide en ligne, c'est vrai qu'il faut
passer un peu de temps dessus pour assimiler.
C'est vrai aussi que j'ai appris avec la version 95, et que dans les
versions plus récentes j'ai noté des choses qui ne sont pas ins tallées
par défaut dans l'aide, et on se retrouve avec des liens morts et/ou des
choses qui ne sont pas expliquées (ou parfois avec des mots-clefs
auxquels je n'aurais pas pensé).

Si les réponses n'apparaissent pas sastisfaisantes et qu'une recherc he
(sur le web et dans les archives du newsgroup) sur des thèmes comme
"débuter Access" ou "notions fondamentales" ne donnent rien, on peut
concevoir d'ouvrir un nouveau fil à ce sujet, mais ça m'ét onnerait un
peu qu'il n'y ait rien.

Il y a aussi des "FAQ" (foires aux questions, frequently asked
questions) proposées sur quelques sites qui offrent un autre éc lairage.
Pas impossible d'ailleurs que l'une d'elles propose des pistes
intéressantes pour découvrir les fondamentaux.

http://groups.google.fr/groups?as_ugroup=microsoft.public.fr.access&as_ usubjectúQ

On trouve par ailleurs des "greniers" et réserves de fonctions qui
peuvent aider, c'est vrai qu'un certain nombre de choses doivent êtr e
programmées par l'utilisateur, ou ... puisées là-dedans. E nfin ça c'est
l'étape suivante.


merci à tous et bon réveillon.



Bonne année, et bon courage dans la découverte d'Access.

1 2