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 :

TextBox notion de point ou virgule [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Mars 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2011
    Messages : 316
    Par défaut TextBox notion de point ou virgule
    Bonjour,

    Je sais que le sujet de ce post fait l'objet de plusieurs demandes.

    Mais ce post concerne essentiellement l'analyse de l'environnement windows (options régionales et/ou international pour Excel)
    J'appartiens à une entreprise ou il existe 2 versions d'Office (2003 & 2007) et la mutation en 2007 n'est pas finalisé (sachant que l'option régionale est la ",").

    Comme défini au préalable je suis en 2003 (avec option internationale le ".")et j'ai mis en place un USf avec une 20 vingtaine de TexBox ne demandant que des saisies de valeur décimales avec 2 chifffres après la "virgules" (le point pour moi).

    Chaque TextBox à l'ouverture de l'USF reçoit la valeur des cellules.

    Exemple de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub UserForm_Initialize()
    Dim i As Integer
     
    UserForm1.TextBox1.Value = Sheets("DONNEES").Range("B7").Value
    If IsNumeric(TextBox1) Then TextBox1 = Round(TextBox1, 2)
    UserForm1.TextBox73.Value = Sheets("DONNEES").Range("d14").Value
    If IsNumeric(TextBox73) Then TextBox73 = Round(TextBox73, 2)
    UserForm1.TextBox2.Value = Sheets("DONNEES").Range("B8").Value
    If IsNumeric(TextBox2) Then TextBox2 = Round(TextBox2, 2)
    UserForm1.TextBox3.Value = Sheets("DONNEES").Range("B9").Value
    If IsNumeric(TextBox3) Then TextBox3 = Round(TextBox3, 2)
    Et à l'inverse je demande de mettre à jour les valeurs du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox6_Change()
    Sheets("TAUX DE CHARGES").Range("F7") = TextBox6
    End Sub
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub TextBox10_Change()
    If Len(TextBox10) = 0 Then
    TextBox10.MaxLength = 255
    If Right(TextBox10, 1) = "." Or Right(TextBox10, 1) = "," Then
    TextBox1.MaxLength = Len(TextBox10) + 2
    End If
    End If
    Sheets("DONNEES").Range("b26") = TextBox10
    End Sub
    Mais ça se complique avec la mutation 2003 vers 2007, car mes collégues ont le déboguage à l'ouverture pour la valeur.

    En fait j'ai deux questions

    Est-il possible de définir pour l'ensemble des TextBox le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
        If KeyAscii = 46 Then KeyAscii = 44
    End Sub
    Et en fonction de votre réponse ci dessus, est il possible via code VB d'analyser l'environnement international d'Excel et/ou Option Régional pour permettre en fonction de cette dernière de reprendre le code ci dessus (modifié par vos propositions) et d'ajuster le "Keypress"

    Je sais je suis gourmand, mais ça me permettrait déjà de comprendre le fonctionnement API et aussi de voir les erreurs ou oubli que j'ai généré dans mes codes

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Tu ajoute un module dans ton projet pour inclure des fonctions qui peuvent te servir dans tout ton programme.
    Et tien je t’offre la première :

    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
    Public Function converNumerique(V) As Double
        Dim ValNumerique
        ValNumerique = V
        If IsNumeric(ValNumerique) = True Then
            converNumerique = val(ValNumerique)
            Exit Function
        End If
        ValNumerique = Replace(ValNumerique, ",", ".")
        If IsNumeric(ValNumerique) = True Then
            converNumerique = val(ValNumerique)
            Exit Function
        End If
        ValNumerique = Replace(ValNumerique, ".", ",")
        If IsNumeric(ValNumerique) = True Then
           converNumerique = val(ValNumerique)
            Exit Function
        End If
    End Function
    Et tu l’utilise comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("DONNEES").Range("b26") = converNumerique(TextBox10)

  3. #3
    Membre éclairé
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Mars 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2011
    Messages : 316
    Par défaut
    Merci Robert,

    Je ne serais pas du tout parti sur Function. Cela Fonctionne parfaitement.

    Je l'ai sensiblement modifié en mettant pour

    converNumerique = Val(ValNumerique)

    converNumerique = Round(ValNumerique,3) pour avoir 3 chiffres après la virgule.

    J'ai annihilé le "val" car je me suis dit que si la valeur est True à If is Numéric, je n'ai plus besoin de lui demander de le mettre en valeur.

    Par contre j'avais besoin d'avoir 3 chiffrs après la virgule.

    Encore une fois merci

    Je post comme hyper, ultra super résolu

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

Discussions similaires

  1. point et virgule dans textbox
    Par greg06500 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/08/2007, 13h19
  2. [d7]pavé numérique point et virgule
    Par dleu dans le forum Langage
    Réponses: 8
    Dernier message: 28/04/2006, 03h23
  3. [DELPHI WIN32] Remplacer points par virgules
    Par manubrard dans le forum Langage
    Réponses: 3
    Dernier message: 28/03/2006, 15h02
  4. Réponses: 3
    Dernier message: 11/11/2005, 11h59
  5. sprintf : le point devient virgule ?!
    Par jula dans le forum C++
    Réponses: 4
    Dernier message: 17/09/2004, 12h50

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