IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Obliger la saisie numérique dans plusieurs textbox [XL-2010]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Obliger la saisie numérique dans plusieurs textbox
    Bonjour,
    Je débute en VBA excel, et j'avoue ne pas tout comprendre malgré mes recherches perso et sur les forums. Quelqu'un pourrait-il m'aider sur le problème suivant ?
    J'ai crée 3 USF comprenant chacun 280 textbox et je souhaitais obliger l'utilisateur à saisir uniquement des nombres J'ai donc passé le code ci-après. Celui-ci fonctionne seulement pour l'Usf2 lorsque je n'intègre pas le code des Usf 3 & 4; dès que j'intègre le code sur les 3 Usf, il ne fonctionne plus, pourtant je fais bien référence à des textbox différents, j'ai déclaré mes variables et j'ai bien codifié le module de classe.
    Pouvez vous me dire d'où vient le problème car je ne trouve pas la solution ?
    Avec mes Remerciements

    `Code Module de classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public WithEvents txtBox As MSForms.TextBox
    Private Sub txtBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then
    KeyAscii = 0
    MsgBox "Vous devez saisir un nombre !"
    End If
    End Sub
    ` Code Userform 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim i As Integer
    Dim txtBox(1 To 280) As New Classe1 'Pour 280 TextBox
    Dim n, x As Integer
    Dim ctrl As Control
    'Rentrer un nombre pour les 280 premières Textbox
    Private Sub txtBox_change()
    For Each ctrl In Controls
    For n = 1 To 280
    If ctrl.Name = "TextBox" & n Then
    x = x + 1
    Set txtBox(x).txtBox = ctrl
    End If
    Next n
    Next
    ` Code Userform 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim i As Integer
    Dim txtBox(281 To 560) As New Classe1 'Pour 280 TextBox
    Dim n, x As Integer
    Dim ctrl As Control
    'Rentrer un nombre pour les 281 à 560 premières Textbox
    Private Sub txtBox_change()
    For Each ctrl In Controls
    For n = 281 To 560
    If ctrl.Name = "TextBox" & n Then
    x = x + 1
    Set txtBox(x).txtBox = ctrl
    End If
    Next n
    Next
    ` Code Userform 4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim i As Integer
    Dim txtBox(561 To 840) As New Classe1 'Pour 280 TextBox
    Dim n, x As Integer
    Dim ctrl As Control
    'Rentrer un nombre pour les 561 à 840 premières Textbox
    Private Sub txtBox_change()
    For Each ctrl In Controls
    For n = 561 To 840
    If ctrl.Name = "TextBox" & n Then
    x = x + 1
    Set txtBox(x).txtBox = ctrl
    End If
    Next n
    Next

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, voir le tuto de Didier ici, sinon il y a ceci et je suppose d'autres.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Salut KIKI29,

    Un grand merci pour ta réponse, mais j'ai trouvé le résultat suivant qui n'est pas vraiment "professionnel" mais qui correspond à ce que je souhaitais et qui fonctionne très bien.
    1. j'ai supprimé le module de classe
    2. j'ai intégré le code suivant dans chacun des 3 Usf concernés (1 à 280 textbox dans le 1er Usf, 281 à 560 textbox dans le 2ème Usf, 561 à 940 textbox dans le 3ème Usf)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    'pour obliger à saisir dans 280 textbox uniquement numériques du 1er Usf
    Private Sub Cmd7_click()
        For i = 1 To 280
            If Me.Controls("TextBox" & i) = "" Then MsgBox "Case" & i & "vide" & vbNewLine & "si vide mettre un 0": Exit Sub
        Next i
        Const T = 280
        For n = 1 To 280
            With Me.Controls("TextBox" & n)
                If .Value > "" And .Value <> Abs(Fix(Val(.Value))) Then
                MsgBox "Vous avez par erreur saisi du texte dans certaines cases dédiées aux nombres, Veuillez Vérifier, Corriger et Valider après correction !!!", vbOKOnly, "ATTENTION, ERREUR !!!"
                Exit For
                End If
            End With
        Next
        If n > T Then
    Encore Merci pour ta disponibilité
    KENAVO!!!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 25/11/2022, 13h51
  2. Autoriser seulement du numérique dans plusieurs textbox
    Par Coco39 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/03/2013, 09h07
  3. Obliger une saisie numérique dans une VSFlexGrid?
    Par GOLDINGMAROC dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/12/2012, 12h23
  4. [MFC]Saisie Numérique dans un TextBox
    Par torNAdE dans le forum MFC
    Réponses: 1
    Dernier message: 09/05/2006, 06h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo