none
Le type MSForms.ReturnInteger n'est pas défini RRS feed

  • Question

  • Bonjour,

    Je voudrais forcer la saisie numérique dans une TextBox en VISUAL STUDIO VISUAL BASIC. J'ai fureté dans différents forums et tutoriels et j'ai glané le code suivant :

    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

        If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0 : Beep()

    End Sub

    Mais lorsque j'insère ce code dans mon module, je reçois le message d'erreur :

    Le Type 'MSForms.ReturnInteger' n'est pas défini

    Que manque-t-il dans mon Projet ?

    Merci d'avance pour vos réponses

    Jedou

    dimanche 7 février 2016 15:36

Réponses

  • Quelle est votre version de VS que vous utilisez? MSForms est utilisé dans VB6 et par VBA,  MSforms2...

    (https://support.microsoft.com/fr-fr/kb/224305) regardez aussi ce thread sur le problème.

    Pour votre textbox en .NET avec forçage de valeur numérique utilisez quelque chose comme ceci:

     Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
            e.Handled = IsItNumeric(Asc(e.KeyChar))
    
        End Sub
        Private Function IsItNumeric(ByVal EnteredKey As String) As Boolean
            'Teste si le caractère est numérique 0 (48) à 9 (57) ou backspeace (8). 
            'Teste si le signe décimale . (46) ou , (44) cela dépend de la localisation... pourrait être mieux testé en forçant une seule fois par nombre
            'Aussi - (45) ceci seulement sur le premier caractère (je vous laisse faire :) ).
            If (EnteredKey >= 48 And EnteredKey <= 57) Or EnteredKey = 8 Or (EnteredKey = 46 Or EnteredKey = 44 Or EnteredKey = 45) Then
                IsItNumeric = False
            Else
                IsItNumeric = True
            End If
        End Function


    Cyrille Precetti <br/>

    dimanche 7 février 2016 19:05
  • Bonsoir Cyrille,

    Un chaleureux merci pour votre réponse si rapide.

    Ma version est : Visual Studio Community 2015, donc normal que ça ne marche pas !

    Un grand merci surtout pour le code, je vais l'appliquer dès demain (ce soir, je me suis un peu embrouillé dans une autre partie de mon programme, il faut que j'y remette de l'ordre).

    Heureusement que des bricoleurs comme moi peuvent être secourus par des pros comme vous !

    Bien cordialement

    jedou

    • Marqué comme réponse jedou lundi 8 février 2016 11:16
    dimanche 7 février 2016 21:49
  • Bonjour Cyrille,

    En complément à mon message d'hier soir :

    Je viens d'essayer, ça marche parfaitement

    Mille Merci

    jedou 

    • Marqué comme réponse jedou lundi 8 février 2016 11:16
    lundi 8 février 2016 11:16

Toutes les réponses

  • Quelle est votre version de VS que vous utilisez? MSForms est utilisé dans VB6 et par VBA,  MSforms2...

    (https://support.microsoft.com/fr-fr/kb/224305) regardez aussi ce thread sur le problème.

    Pour votre textbox en .NET avec forçage de valeur numérique utilisez quelque chose comme ceci:

     Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
            e.Handled = IsItNumeric(Asc(e.KeyChar))
    
        End Sub
        Private Function IsItNumeric(ByVal EnteredKey As String) As Boolean
            'Teste si le caractère est numérique 0 (48) à 9 (57) ou backspeace (8). 
            'Teste si le signe décimale . (46) ou , (44) cela dépend de la localisation... pourrait être mieux testé en forçant une seule fois par nombre
            'Aussi - (45) ceci seulement sur le premier caractère (je vous laisse faire :) ).
            If (EnteredKey >= 48 And EnteredKey <= 57) Or EnteredKey = 8 Or (EnteredKey = 46 Or EnteredKey = 44 Or EnteredKey = 45) Then
                IsItNumeric = False
            Else
                IsItNumeric = True
            End If
        End Function


    Cyrille Precetti <br/>

    dimanche 7 février 2016 19:05
  • Bonsoir Cyrille,

    Un chaleureux merci pour votre réponse si rapide.

    Ma version est : Visual Studio Community 2015, donc normal que ça ne marche pas !

    Un grand merci surtout pour le code, je vais l'appliquer dès demain (ce soir, je me suis un peu embrouillé dans une autre partie de mon programme, il faut que j'y remette de l'ordre).

    Heureusement que des bricoleurs comme moi peuvent être secourus par des pros comme vous !

    Bien cordialement

    jedou

    • Marqué comme réponse jedou lundi 8 février 2016 11:16
    dimanche 7 février 2016 21:49
  • Bonjour Cyrille,

    En complément à mon message d'hier soir :

    Je viens d'essayer, ça marche parfaitement

    Mille Merci

    jedou 

    • Marqué comme réponse jedou lundi 8 février 2016 11:16
    lundi 8 février 2016 11:16