Neutraliser la touche "Entrée"

Anonyme
2021-12-07T13:56:05+00:00

Bonjour,

Comment neutraliser la touche Entrée. Par exemple, on dit que la cellule A1 est limitée à 10. Quand cette valeur limite est dépassée, on déclenche une MsgBox.

Ma question est : après un clic sur la touche OK de la MsgBox, j’aimerai bloquer la touche Entrée pour que la sélection ne passe pas à la cellule voisine et par la même occasion, vider la valeur erronée.

Merci pour votre aide

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

42 réponses

  1. DanielCo 107.1K Points de réputation
    2021-12-07T18:43:34+00:00

    Pas vu. Ce ... de forum supprime les sauts de ligne. Si tu écris sur une seule ligne, il faut mettre une virgule :

    Public Direction As Integer, ResDir As Boolean

    Sinon :

    Public Direction As Integer

    Public ResDir As Boolean

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2021-12-07T17:47:31+00:00

    Dans le module il y a un souci

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. DanielCo 107.1K Points de réputation
    2021-12-07T16:52:35+00:00

    Ca complique un peu.

    Dans ThisWorkbook, mets :

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.MoveAfterReturn = ResDir
    If Direction <> 0 Then Application.MoveAfterReturnDirection = Direction
    End Sub

    Private Sub Workbook_Open()
    ResDir = Application.MoveAfterReturn
    If Application.MoveAfterReturn = True Then
    Direction = Application.MoveAfterReturnDirection
    Application.MoveAfterReturn = False
    Else
    Direction = 0
    End If
    End Sub

    Dans un module standard, mets :

    Public Direction As IntegerPublic ResDir As Boolean

    Dans la feuille, mets

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
    If Target > 10 Then
    MsgBox ">10"
    Application.EnableEvents = False
    Target = ""
    Application.EnableEvents = True
    [A1].Select
    End If
    End If
    Select Case Direction
    Case 0: Exit Sub
    Case -4121: Target.Offset(1).Select
    Case -4159: Target.Offset(, -1).Select
    Case -4161: Target.Offset(, 1).Select
    Case -4162: Target.Offset(-1).Select
    End Select
    End Sub

    Vérifie que ça marche et qu'après fermeture et réouverture d'Excel, le déplacement vers la droite est bien paramétré dans le cas où A1 est inférieur à 10.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2021-12-07T15:24:04+00:00

    Dans l'absolu ton code fonctionne. Mais le hic est que B1 est sollicité en même temps que MsgBox et c'est cela que j'aimerai éviter.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. Anonyme
    2021-12-07T15:07:11+00:00

    Le souci est que quand tu tapes 11 par exemple la MsgBox est activée mais B1 est aussi activée

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire