Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

eliot raymond

XLDnaute Occasionnel
Bonjour a tous et toutes

J'ai adopter ce petit bout de code ci-dessous que j'ai trouver sur le site qui marche bien, mais je souhaiterais 3 petits trucs en plus si possible.
(1) Autoriser la virgule
(2) L'euro, €
(3) Tester aussi la longueur

Ce petit bout de code ne fonctionne pas correctement, me mets souvent le premier message de la MsgBox ci-dessous longueur va pas bien non plus doit pas aimer quelque chose mais je ne vois pas quoi, un oeil expert saura t'il voir ou ca coince, svp merci bien


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
'-> tribute to Pierrot93
If InStr("0123456789,€", Target.Text) = 0 And Len(Target) < 8 Then
MsgBox "Ne saisir que du numerique", vbExclamation, "Saisie invalide"
Target.ClearContents
Target.Select
End If
End If
End Sub

Merci beaucoup et a vous lire avec plaisir

RAYMOND bonne Après midi
 
Dernière édition:
Re : Saisie caractères

Bonjour

Essaie ceci

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
'-> tribute to Pierrot93
If InStr("0123456789,€", Target.Text) = 0 And Len(Target) < 8 Then
MsgBox "Ne saisir que du numerique", vbExclamation, "Saisie invalide"
Target.ClearContents
Target.Select
End If
End If
End Sub

A+
 
Re : Saisie caractères

Bonjour

Vois pas la différence entre les deux codes mais j'ai peut-être mal vu.

Sinon
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10")) Is Nothing And Not (IsEmpty(Target)) Then
    '-> tribute to Pierrot93
    For i = 1 To Len(Target)
        z = Mid(Target.Value, i, 1)
        If InStr("0123456789,€", z) = 0 Then Err = 1: Exit For
    Next i
    If Err = 1 Or Len(Target) < 8 Then
        MsgBox "Ne saisir que du numerique", vbExclamation, "Saisie invalide"
        Target.ClearContents
        Target.Select
    End If
End If
End Sub

Par contre s'il manque juste un caractère je trouve dommage de supprimer les 7 autres !
 
Re : Saisie caractères

Bonjour chris, bonjour forum,

je suis triste rien qu'a l'idée de te dire que ton petit code ne marche pas bien,je l'ai bidouiller mais je n'arrive pas le faire fonctionner correctement, je ne repost pas deja vu le sujet.

si tu as le temps de regarder stp ca m'aiderai bien sinon plus tard

bonne journée et merci bien

Raymond
 
Re : Saisie caractères

Bonjour Pierrot93, forum,

Voila je ne voulais pas reposter vu que c'était deja fait sur le sujet, je ne trouvais plus ce bout de code, enfin bref je l'ai essayer et j'ai signaler a Chris car il ne fonctionne pas bien ni celui de vbascrumble, penser pas mal faire.

merci et Bonne journée malgré le retour de la pluie

raymond
 
Re : Saisie caractères

Bonjour

Bizarre je l'ai testé et cela fonctionne sur la plage prévue A1 à A10.

As-tu bien mis le code dans le module de la feuille concernée.

Quand tu dis "ne marche pas bien" précises ce qui se passe.

Tu devrais pouvoir faire la même chose par une MFC si c'est + facile.
 
Re : Saisie caractères

Bonjour chris, et forum

erreur de compilation, variable non definie, j'ai mis Dim i mais pareil et ce plusieurs fois
sur excel 2007 et vista

voila je ne permets pas ce peux que je me trompe, je debute en vba et pour MFC ca ne m'interesse pas pour l'instant, si j'ai besoin je ferais, prefere VBA

bonne apres midi si tu peux corriger si vraiment bug merci ca serai bien

mis code dans bonne feuille et plage ok et desolé j'ai oublie de te repondre hier voila c'est reparé

Raymond
 
Dernière édition:
Re : Saisie caractères

Bonjour tous

Et comme cela, ça marche ?

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Byte
Dim z As String
If Not Intersect(Target, Range("A1:A10")) Is Nothing And Not (IsEmpty(Target)) Then
    '-> tribute to Pierrot93
    For i = 1 To Len(Target)
        z = Mid(Target.Value, i, 1)
        If InStr("0123456789,€", z) = 0 Then Err = 1: Exit For
    Next i
    If Err = 1 Or Len(Target) < 8 Then
        MsgBox "Ne saisir que du numerique", vbExclamation, "Saisie invalide"
        Target.ClearContents
        Target.Select
    End If
End If
End Sub

PS: chris: j'avais du faire une erreur de copier/coller car en effet
les codes sont identiques
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
746
Retour