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

Macros et VBA Excel Discussion :

Imposer un format numérique nombre entier à un textBox. [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Par défaut Imposer un format numérique nombre entier à un textBox.
    Bonsoir à tous,

    Je parviens à imposer le format nombre lors du renseignement d'un textBox mais lorsqu'il arrive à destination, il se change en texte.

    Voici le code utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub textBox1_Change() 'Force le format numérique pour le nombre entier du textBox1
        On Error Resume Next
     
        If Not IsNumeric(Right(TextBox1, 1)) Then
            MsgBox "Le caractere saisi n'est pas valide"
            TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
        End If
    End Sub
    Ce code fonctionne dans la mesure ou il impose de taper du chiffre dans le textBox.
    En revanche, une fois arrivé à destination il renvoie bien le bon nombre mais au format texte malgré que la cellule d'arrivée soit bien au format nombre.

    Pourriez-vous me dire l'erreur que je commet ici.

    J'ajoute que j'ai le même genre d'ennuis pour un numéro de sécurité sociale.

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut

    Je ne vois pas le code qui transmet la valeur à une cellule mais le principe est de transtyper la valeur, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    macellule.value = cdbl(textbox1.text)
    Petite remarque pour le contrôle du contenu du textbox, je serais toi je testerais le fait de contrôler la touche pressée en testant si elle fait partie des valeurs numérique 0 à 9 plus le séparateur décimal, tout ça dans KeyPress plutôt que dans change.
    L'avantage ? J'en vois un très gros !
    Si l'utilisateur à l'idée farfelue de corriger sa saisie en ajoutant un caractère ailleurs qu'en fin de texte :
    "245" puis j'ajoute la lettre "A" entre le 2 et 4 ... ça garde le "A" et ça t'efface le 5...


    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre expérimenté
    Homme Profil pro
    Lean Manufacturing
    Inscrit en
    Janvier 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Lean Manufacturing

    Informations forums :
    Inscription : Janvier 2015
    Messages : 132
    Par défaut
    Bonjour, pardonnez ma question si elle est bête. la saisie dans le textbox est alphanumérique ou entièrement numérique ?

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut

    Pas de question bête.

    Le Textbox à l'origine accepte n'importe quel caractère, donc on peut le décrire comme alphanumérique.
    Ici le but et de faire en sorte qu'il n'accepte que des valeurs numériques.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre expérimenté
    Homme Profil pro
    Lean Manufacturing
    Inscrit en
    Janvier 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Lean Manufacturing

    Informations forums :
    Inscription : Janvier 2015
    Messages : 132
    Par défaut
    Sans aucun doute Qwazerty, quand je lis l'enoncé je comprends que le résultat final(dans sa cellule) n'est pas exploitable en tant que donnée numérique. D'où ma question sur la nature de la saisie car je pense que l'erreur vient d'ici. Il renseigne dans sa cellule des lettres et des chiffres mais ne peut ensuite les exploiter pour du calcul :/

    Ceci dit je peux me tromper car il est tard pour mon pauvre cerveau
    :/

  6. #6
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Par défaut
    Bonsoir à vous,

    Non, je confirme bien que je n'entre que du numérique dans mon textBox1.
    D'autres textBox de mon userform ne renseignent que du texte.

    Le problème est donc bien à l'arrivée.

    Voici le code utilisé pour renseigner les cellules.
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Private Sub CommandButton1_Click()
     
    Dim ctrl As Control
    Dim Colonne As Integer
    Dim derligne As Integer
     
    'TextBox1.Value = Format(TextBox1.Value, "0"" ""00"" ""00"" ""00"" ""000"" ""000"" ""00")
    'TextBox4.Value = Format(TextBox4.Value, "dd/mm/yyyy") 'Voir le Private Sub TextBox4_Change()pour ce control
    'TextBox5.Value = Format(TextBox5.Value, "0000")
    'TextBox7.Value = Format(TextBox7.Value, "00000")
    'TextBox9.Value = Format(TextBox9.Value, "00"" ""00"" ""00"" ""00"" ""00")
    'TextBox10.Value = Format(TextBox10.Value, "00"" ""00"" ""00"" ""00"" ""00")
     
    TextBox1.Value = CDbl(TextBox1)
    'TextBox4.Value = CDbl(TextBox4)
    'TextBox5.Value = CDbl(TextBox5)
    'TextBox7.Value = CDbl(TextBox7)
    'TextBox9.Value = CDbl(TextBox9)
    'TextBox10.Value = CDbl(TextBox10)
     
    'If Not IsDate(TextBox4) Then
            'MsgBox "Format incorrect"
            'TextBox4 = ""
            'Exit Sub
            'Else
            'MsgBox "Format correct"
            '...la suite de la procédure
        'End If
     
    ' derligne est le numéro de la première ligne vide du tableau à remplir
    derligne = Sheets("Répertoire").Range("A2000").End(xlUp).Row + 1
     
    ' Balaye tous les control un par un avec le for ... next
    For Each ctrl In UserForm1.Controls
     
    ' La colonne de destination est donnée par la valeur du TAG de chaque control
    Colonne = Val(ctrl.Tag)
     
    ' Si la valeur du TAG n'est pas 0, l'intersection de derligne et de colonne est une cellule
    ' qui prendra la valeur "ctrl" cad celle contenue dans le control
    If Colonne > 0 Then Sheets("Répertoire").Cells(derligne, Colonne) = ctrl
     
    ' Ici le next fait passer au ctrl suivant
    Next
    End
     
    End Sub
    Désolé j'ai gardé beaucoup de commentaires.

    Merci à vous.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Lean Manufacturing
    Inscrit en
    Janvier 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Lean Manufacturing

    Informations forums :
    Inscription : Janvier 2015
    Messages : 132
    Par défaut
    Entendu, alors dans se cas là pourquoi pas essayer ceci, (a titre d'exemple si la cellule de destination est la C26)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(machin).range("c26") = Sheets(machin).range("c26") * 1
    En multipliant par 1 vous forcez, il me semble, le format numérique.

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

Discussions similaires

  1. Format de nombre décimaux dans TextBox feuille
    Par pitizone dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/02/2011, 08h05
  2. textbox format numérique
    Par abouhossam dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/11/2008, 10h12
  3. Modif format nombre pour 24 TextBox
    Par melouille56 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/12/2007, 21h26
  4. Réponses: 3
    Dernier message: 05/09/2007, 14h00
  5. Format des nombres entiers, séparateurs de milliers
    Par zazaraignée dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2005, 01h25

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