Modifier un petit code

Bonjour a tous, forum bonjour

Je souhaiterai svp adapter le code ci-dessous pour une plage A2:A20

afin que le code fonctionne sur ma Feuil1.

Je remercie pour votre aide, bonne fin d'après midi a vous.

Raymond

Private Sub txtFeuille_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

  If InStr("1234567890,-", Chr(KeyAscii)) = 0 Or txtFeuille.SelStart > 0 And Chr(KeyAscii) = "-" _
     Or InStr(txtFeuille.Value, ",") <> 0 And Chr(KeyAscii) = ","  Then KeyAscii = 0
  End If
End sub

Salut,

tu as essayé ceci ?

Private Sub txtFeuille_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

 With Feuil1.Range("A2:A20")

  If InStr("1234567890,-", Chr(KeyAscii)) = 0 Or txtFeuille.SelStart > 0 And Chr(KeyAscii) = "-" _
     Or InStr(txtFeuille.Value, ",") <> 0 And Chr(KeyAscii) = ","  Then KeyAscii = 0
  End If

End With

End sub

Bonne journée

Bonjour à tous,

Rékiss, tu ajoutes un With que tu n'utilises pas. Elle est où la logique ?

Eliot, keypress n'est pas un événement feuille. Tu as dû tirer ça du traitement d'un textbox.

Donc soit tu n'as pas tout dit, soit il faut utiliser l'évenement Worksheet_Change.

Mais ne compte pas pouvoir modifier au fil de la saisie, le contrôle ne pourra se faire qu'à la fin, lors de la validation de la saisie.

eric

Bonjour Eliot, bonjour le forum,

Ce code ne s'utilise que sur un contrôle éditable (TextBox par exemple). On ne peut pas le transférer pour une cellule/plage car il n'existe pas d'événement réagissant à l'appui d'une touche. Il n'y aurait que l'événementielle Change mais il réagit à la validation finale (touche [Entrée] par exemple) et non pas à l'appui d'une seule touche du clavier.

On pourrait essayer d'utiliser cet événement Change si la cellule n'acceptait qu'un seul caractère mais sinon, ça risque de devenir très vite une usine à gaz ingérable...

[Édition]

Bonjour Rékiss, Éric , nos posts se sont croisés...

Salut a vous

Merci pour vos réponses, et pour les infos , je savais pas, c'est cool a vous.

Bon, j'ai trouver le code sur le net, et je pensais que ça fonctionnerai sur ma Feuil1

On peux essayer si tu veux sur avec (cet événement Change)

je viens de tester le code modifier ça ne fonctionne pas du tout.

Merci d'avance

Raymond

Re,

Quelles serait la liste (en gros) des valeurs acceptées ou celle des valeurs refusées. Et si ce n'est pas trop compliqué une simple validation de données pourrait faire l'affaire même si, vu le code, j'en doute...

Re,

au moins on est d'accord Thautheme

J'ai l'impression qu'il ne veut que des décimaux :

sélectionner A2:A20

Données / Outils des données / Validation des données

choisir Autoriser : Décimal.

eric

SAut ThauTheme,

on doit accepter "123456789,-" et un ou deux chiffres pas plus.

en VBA je préfère svp que je puisse par la suite ajouter des autres tests si j'ai besoin.

Merci pour ton aide

bonne soirée

Raymond

Salut a tous, forum bonjour,

Salut eriiic,

Ce lien ne fonctionne pas quand je clic dessus ça me faire revenir a mon message ???

https://forum.excel-pratique.com/viewtopic.php?p=852538#p852538

Salut ThauThème,

J'ai trouver un début de réponse a ma demande avec le code ci-dessous qui a l'air de fonctionner

par contre je n'arrive pas a tester l'interdiction d'entrer un zéro et pas plus de deux chiffres

pour n'avoir que de 1 à 99 autoriser.

Comment svp modifier le code pour résoudre mon soucis.

Bonne journée a vous et merci.

Cdlt Raymond

Dim rcell As Range
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("H2:H25")) Is Nothing Then
For Each rcell In Intersect(Target, Range("H2:H25")).Cells
        If Len(rcell.Value) > 0 And Not IsNumeric(rcell.Value) Then

            Application.EnableEvents = False
                MsgBox "Désolé recommencer."
                rcell.Value = vbNullString
            Application.EnableEvents = True
            rcell.Select
        End If
  Next rcell
    End If
End Sub

Re,

Je me disais aussi... Ça me parle ça. J'ai répondu sur un autre forum à un certain dudulle mais il semblerait que le code proposé ne lui convienne pas. Pourtant mes tests me paraissent convenables. À tout hasard :

Private TEST As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
Dim MSG As String

If Intersect(Target, Range("H2:H90")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If TEST = True Then Exit Sub
MSG = "Entrée non valide ! Veuillez recommencez."
Select Case Len(Target.Value)
    Case Is > 2
        TEST = True: Target.ClearContents: MsgBox MSG
    Case 2
        If Target.Value = "00" Then TEST = True: Target.ClearContents: MsgBox MSG: Target.Select
        If Left(Target.Value, 1) = "0" Then Target.Value = Right(Target.Value, 1): TEST = False
        If IsNumeric(Target.Value) = False Then Target.Value = ClearContents: MsgBox MSG: Target.Select: TEST = False
    Case 1
        If Target.Value = "0" Then TEST = True: Target.ClearContents: MsgBox MSG: Target.Select
        If IsNumeric(Target.Value) = False Then Target.ClearContents: MsgBox MSG: Target.Select
End Select
If Target.Value = "" Then MsgBox "Seules sont autorisées les valeurs entières de 1 à 99": Target.Select: TEST = False
End Sub

Bonjour,

Salut eriiic,

Ce lien ne fonctionne pas quand je clic dessus ça me faire revenir a mon message ???

Non, il ne te fait pas revenir à ton message mais à ma proposition restée sans réponse.

Tu as juste à ajouter tes limites : entier en 1 et 99.

Nul besoin de vba pour ça...

eric

Salut ThauThème,

Merci de ta réponse, plus on devient vieux plus on est têtu.

Merci pour ton code, j'ai tester et voila ce qui ne va pas pour moi.

Ma colonne (H) est au format (Standard).

Quand j'entre une lettre ça ne passe pas c'est ok mais j'ai les 3 messages qui s'affichent l'un derrière l'autre.

Quand j'entre un zéro ça ne passe pas ça c'est ok mais j'ai 2 messages qui s'affichent l'un derrière l'autre.

Quand j'entre 3 chiffres ça ne passe pas c'est ok mais j'ai 2 messages qui s'affichent l'un derrière l'autre.

Quand j'entre l'un des signes (-) ou (+) ça ne passe pas mais j'ai les 3 messages qui s'affichent l'un derrière l'autre.

Merci pour ton aide, je te souhaite une bonne journée.

Cdlt Raymond

Salut eriiic,

Désoler j'ai zapper ma réponse.

Je suis rester sur mon idée et oublier.

Donc merci de ta réponse et proposition mais je préfère reste sur le VBA du moins pour ce que j'ai commencer.

Et puis après ce fichier j'envisage de changer de version Excel 2007 pour migrer vers je ne sais pas encore laquelle.

Encore merci a toi je te souhaite la bonne journée.

Cdlt Raymond

Pourquoi s'entêter à faire une machine à gaz pour remplacer ce qu'excel fait déjà très bien ?

Et si vraiment tu as d'autres conditions, il sera temps de compléter par un petit code vba, 98% du boulot sera déjà fait.

Mais bon, chacun voit midi à sa porte...

eric

Rechercher des sujets similaires à "modifier petit code"