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 :

Utiliser uniquement le séparateur point dans Excel et VBA)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 58
    Par défaut Utiliser uniquement le séparateur point dans Excel et VBA)
    Bonjour,

    Dans le fichier que j'utilise, suite à des problèmes avec les séparateurs décimaux "point" et "virgule », j'ai décider de n'utiliser que le "point" (plus simple avec le clavier numérique)

    J'ai donc dans les Options Excel modifié le séparateur "," par "."

    J'utilise dans mon fichier une Userform avec différentes TextBox chargées soit par des cellules de ma feuille Excel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBoxLongueurFournisseur.Value = Sheets("Table").Range("AA1").Value
    soit par des calculs entre TextBox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBoxPoidsTolePourFournisseur.Value = TextBoxDensite * TextBoxDimensionTolePourFournisseur * TextBoxEpaisseurTole.Value

    Voici mon premier problème:

    Lorsque je charge une Textbox avec la valeur d'une cellule (cf code précédent) il apparait avec une "virgule" malgré que j'ai changé le séparateur.

    Pour modifier cela j'ai utilisé un code que j'ai trouvé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub TextBoxLongueurFournisseur_Change()
     
    Dim Sep$
    Sep = Application.International(xlDecimalSeparator)
    TextBoxLongueurFournisseur = Replace(TextBoxLongueurFournisseur, ".", Sep)
    TextBoxLongueurFournisseur = Replace(TextBoxLongueurFournisseur, ",", Sep)
     
    End Sub
    Grace à cela, j'ai bien ma valeur chargée dans la textbox avec un point mais voila mon deuxième problème:
    les calculs des autres TextBox ne se réalisent plus car VBA effectue ses calculs avec la Virgule comme séparateur.

    Dans ma feuille Excel de par les Option, le séparateur est désormais un point.
    Je souhaiterai que dans VBA pour les calculs et dans les toutes les TextBox de mon Userform (environ 40 TextBox) le séparateur décimal soit aussi un point

    Auriez-vous une solution?

    Merci pour votre aide

    Cdt Bruno

  2. #2
    Expert confirmé
    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
    Par défaut
    Salut, plutôt que d'agir ainsi, cela t'évitera qqs désagréments et surprises avec des fichiers "standards". Ajouter le code suiavnt pour le fichier concerné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Explicit
     
    Private Sub Workbook_Open()
        With Application
            .DecimalSeparator = "."
            .ThousandsSeparator = ","
            .UseSystemSeparators = False
        End With
    End Sub
    Tu peux aussi rétablir à la fermeture la configuration standard, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub workbook_BeforeClose(Cancel As Boolean)
        With Application
            .DecimalSeparator = ","
            .ThousandsSeparator = " "
            .UseSystemSeparators = False
        End With
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 58
    Par défaut
    Bonjour et merci de cette réponse.

    J'ai essayé le code que tu m'as donné et j'ai l’impression qu'il modifie le séparateur uniquement dans la feuille de calcul (action équivalente mais par macro de quand j'allais dans les options Excel).

    Quand je charge une TextBox la virgule apparaît toujours :-(

    Du coup lorsque j'effectue un produit de textbox par exemple, il me renvoie une erreur de type car il multiplie des nombres avec des virgules et avec des points

    Les calculs VBA peuvent-ils se faire avec des points comme séparateur de décimales?

    Merci de votre aide!!

  4. #4
    Expert confirmé
    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

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 58
    Par défaut
    Malheureusement, ce tutoriel permet de faire le contraire de ce que j'ai besoin. Je souhaiterai que le point fasse office de séparateur dans Visual Basic et non pas "interdire le point comme saisie."

    J'ai beau chercher, je n'arrive à rien :-(

    si je modifie une valeur "3,57" par la valeur "4,57" tout fonctionne or si je modifie une valeur "3,57" par la valeur "4.57" au clavier numérique j'ai une erreur type

    pour un gain de temps, je ne souhaite pas interdire la saisie 4.57 comme dans le tuto.

    Merci pour votre patience!

  6. #6
    Expert confirmé
    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
    Par défaut
    Salut, tu sembles attendre du tout cuit, il n'est pas interdit de modifier le tuto pour qu'il fasse le contraire.

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 58
    Par défaut
    Bonjour, je ne pense pas "avoir attendu du tout cuit" ;-) vu que je n'ai pas arrête d'essayer de résoudre ce problème depuis hier !!

    J'ai d'ailleurs trouvé une solution assez simple qui permet de transformer le format texte en format chiffre, et me permet de faire mes calculs entre textbox sans problème de "virgule" et de "point"

    Lorsque j'avais un conflit j'ai utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Val(Replace(Me.TextBox1, ",", "."))
    ainsi si j'ai un calcul entre plusieurs textbox pour que "." et "," ne soit plus source d'erreur type j'utilise la syntaxe suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.TextBox3 = Val(Replace(Me.TextBox1, ",", ".")) *Val(Replace(Me.TextBox2, ",", "."))
    Merci pour votre aide en tous cas !!

    Cdt Bruno

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

Discussions similaires

  1. [XL-2003] Utilisation de Data Form intégré dans Excel 2003
    Par Hmiachon dans le forum Excel
    Réponses: 4
    Dernier message: 13/03/2015, 09h55
  2. Utilisation HH:mm:ss.mm dans excel
    Par black_hole dans le forum Excel
    Réponses: 1
    Dernier message: 31/07/2014, 16h11
  3. [XL-2003] Comment utiliser une variable pour filtrer dans Excel
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/06/2010, 16h40
  4. Réponses: 7
    Dernier message: 19/10/2009, 13h48
  5. PB d'utilisation des formulaires de données dans EXCEL
    Par adil155 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/11/2005, 16h09

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