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 :

Sur un poste client le séparateur décimal de Visual Basic Editor est une virgule au lieu d'un point


Sujet :

Macros et VBA Excel

  1. #21
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Citation Envoyé par unparia Voir le message
    Je n'ai pas de clavier de portable sous la main.
    Idem pour Excel version Windows sur un portable et peu importe l'ordinateur car c'est Excel interprétant le clavier …

  2. #22
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut
    Citation Envoyé par Docmarti Voir le message
    Si tu obtiens 1.5, la langue dans tes paramètres régionaux n'est pas Français
    Effectivement, le séparateur décimal utilisé dans les réponses de l'éditeur VBE est celui choisi dans le menu

    Control Panel> Region and Language> Format tab> Additional Settings> Decimal symbol = .

    En l’occurrence, dans mon cas c'est l'anglais.

  3. #23
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    dans tous les cas le symbole décimale est le point [.] dans vba!

    il faut arrêté de ce prendre la tête sur le sujet!

    Excel parementer régionaux ou suivant le type de formatage imprégné à la cellule. vba anglet!

  4. #24
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut
    Si Application.UseSystemSeparators == True alors Application.International(xlDecimalSeparator) est égal au séparateur décimal du système*
    Si Application.UseSystemSeparators == False alors Application.International(xlDecimalSeparator) est égal à Application.DecimalSeparator**

    *: Le séparateur décimal du système est défini ici : Control Panel> Region and Language> Format > Additional Settings> Decimal symbol
    **: Application.DecimalSeparator est défini ici dans Excel : File > Options > Advanced > Decimal separator

    Pour résumer Application.International(xlDecimalSeparator) est le séparateur qui apparaît dans les cellules contenant des valeurs numériques

  5. #25
    Invité
    Invité(e)
    Par défaut
    oui j'ai bien compris mais pourquoi vouloir qu'Excel ne respecte ne respecte pas la culture de l'utilisateur?

  6. #26
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Assertions toujours fausses ‼ Encore une fois je ne peux laisser passer de telles inepties !
    Et c'est pourtant simple, un gamin en CM2 (~10 ans !) a compris rien qu'en lisant l'aide …
    C'est incroyable, tout y est sans compter le tutoriel ni les exemples dans les discussions de ce forum ‼‼
    Francis a raison !


    Citation Envoyé par francis60 Voir le message
    Si Application.UseSystemSeparators == True alors Application.International(xlDecimalSeparator) est égal au séparateur décimal du système
    La propriété International(xlDecimalSeparator) renvoie toujours le séparateur décimal du système et est
    totalement indépendante de la propriété UseSystemSeparators, peu importe donc la valeur de cette dernière ‼
    Francis a raison !


    Citation Envoyé par francis60 Voir le message
    Si Application.UseSystemSeparators == False alors Application.International(xlDecimalSeparator) est égal à Application.DecimalSeparator
    Aucun rapport, les propriétés étant indépendantes l'une de l'autre et la propriété DecimalSeparator étant modifiable ‼
    Du reste à l'installation UseSystemSeparators est égale à True et les deux propriétés sont aussi égales !
    Encore une fois, elles sont indépendantes de la propriété UseSystemSeparators
    Francis a raison !


    Citation Envoyé par francis60 Voir le message
    Pour résumer Application.International(xlDecimalSeparator) est le séparateur qui apparaît dans les cellules contenant des valeurs numériques
    Uniquement si UseSystemSeparators est égale à True, sinon Excel prend la propriété DecimalSeparator !
    Evidemment si ces deux propriétés sont égales … mais comme DecimalSeparator est modifiable !

    Le tableau du post #15 est pourtant clair, à la portée de n'importe quel débutant ‼
    Et rien qu'en regardant le paramétrage dans les options d'Excel, l'exemple dans l'aide VBA,
    le tutoriel et les discussions dans ce forum ‼ Rien qu'en effectuant le test en VBA !
    Francis a raison !


  7. #27
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    La propriété International(xlDecimalSeparator) renvoie toujours le séparateur décimal du système et est totalement indépendante de la propriété UseSystemSeparators, peu importe donc la valeur de cette dernière ‼
    Pas sur mon ordi (WIndows 7 et Excel 2010). Chez moi, ma modification de la case à cocher UseSystemSeparators affecte le résultat de Application.International(xlDecimalSeparator) en VBA.

  8. #28
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par francis60 Voir le message
    Pas sur mon ordi (WIndows 7 et Excel 2010). Chez moi, ma modification de la case à cocher UseSystemSeparators affecte le résultat de Application.International(xlDecimalSeparator) en VBA.
    pur quoi il en serait autrement? c'est déjà son mode de fonctionnement à vba!

    le séparateur décimal international ou anglet même combat!

    C'est comme si tu voulais connaitre la provenance de produits mad in Usa!

    Office 2013 and later
    Renvoie des informations relatives aux paramètres de pays/région et internationaux en cours. Type de données Variant en lecture seule.


    https://msdn.microsoft.com/fr-fr/lib.../ff840213.aspx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
    Dim a As Double
    a = 1.2
    Debug.Print a
    Debug.Print a * 2.3
    End Sub
    Images attachées Images attachées  
    Dernière modification par Invité ; 05/09/2016 à 14h09.

  9. #29
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Citation Envoyé par francis60 Voir le message
    Pas sur mon ordi (WIndows 7 et Excel 2010). Chez moi, ma modification de la case à cocher UseSystemSeparators affecte le résultat de Application.International(xlDecimalSeparator) en VBA.
    Impossible rien qu'en lisant l'aide de cette propriété International, toujours pas lue d'où ta confusion initiale persistante !
    Bien lire aussi l'aide de la propriété UseSystemSeparators, et exécuter donc son exemple …
    De mon côté différents ordinateurs avec différentes versions d'Excel dont la version 2010 se comportent exactement
    comme le tableau du post #15 expliquant clairement le choix d'Excel quant au séparateur décimal …

    Je n'ai plus de version anglaise à disposition mais vu le nombre de mes codes y ayant tourné (et y tournant encore !)
    j'aurais eu à coup sûr des retours m'informant que mes procédures d'importation ne tenaient pas compte du séparateur décimal !
    Et je n'ai jamais constaté de différence avec une version locale d'Excel …

    Si vraiment tu es sûr de toi, nous demandons à voir une vidéo dans laquelle apparaîtra le code utilisé
    ainsi que son incidence sur une feuille de calculs et des affichages avant / après dans la fenêtre Exécution.
    On veut bien te croire mais comme nous ne croyons que ce que nous constatons …
    Joindre aussi en .xls ou en .zip le classeur utilisé.


    Francis a raison !

  10. #30
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Hello,

    le post est marqué comme résolu, est-ce le cas ou on a toujours un point qui bloque ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  11. #31
    Invité
    Invité(e)
    Par défaut
    j'ai l'impressions qu'il as trouvé une solution par dépit, mais qu'il subsiste des incompréhensions!*

    d'où notre forme de harcèlement don j'ai bien conscience.
    Dernière modification par AlainTech ; 10/09/2016 à 18h49. Motif: Suppression de la citation inutile

  12. #32
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour à tous,

    sans vouloir mettre de l'huile sur le feu je suis plutôt d'accord avec francis60.
    Comme pourtant indiqué dans l'aide VBA, Application.International(xlDecimalSeparator) est ce séparateur décimal "système"
    est pour moi faux.
    Application.International(xlDecimalSeparator) reflète TOUJOURS le séparateur utilisé à ce moment par excel et non le séparateur système régional, même si l'aide semble dire autre chose.

    C'est à dire Application.International(xlDecimalSeparator) = le séparateur système si Application.UseSystemSeparators = True,
    ou bien = le séparateur défini dans les options d'excel (donc Application.DecimalSeparator) si Application.UseSystemSeparators = False

    C'est ce séparateur qu'on retrouve bien dans les décimaux sur feuille.
    Par contre la fenêtre Execution de VBE et la fenêtre Espions utiliseront toujours le séparateur système quelque soit la position de Application.UseSystemSeparators ce qui met de la confusion.
    Je peux très bien lire 2,5 dans une variable Double ou Variant/Double ou la fenêtre d'éxécution alors que le séparateur en cours est le point, et vice-versa.
    C'est ce que je constate sur 2010.
    eric

  13. #33
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Mea Culpa !

    Je ne comprends pas car pourtant des tests avaient été menés (et je n'étais pas seul !)
    et effectivement la propriété International(xlDecimalSeparator) prend la valeur de la propriété DecimalSeparator
    quand la propriété UseSystemSeparators est à False !

    Et l'affichage dans la fenêtre Exécution s'en tamponne le coquillard,
    elle a l'air de toujours afficher le séparateur régional de Windows !

    Heureusement côté Excel il n'y a pas ce foutoir dans les cellules, j'ai quand même bien flippé ! (ma punition …)

    francis60, je t'adresse donc toutes mes plus plates excuses ‼

    Je ne comprends donc plus la logique de Microsoft (et sa p....n d'aide locale ou en ligne ‼) …

    J'ai indiqué un message « Francis a raison ! » sur les posts encore modifiables …

    Je t'ai mis un point sur tes discussions et tu as le droit de te soulager par des sur les miennes !

  14. #34
    Invité
    Invité(e)
    Par défaut
    Et moi je tournerai 7 fois la roulette de ma souris avant de clicker!

  15. #35
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Ce qui est fou dans cette histoire est que je suis sûr de mettre fait avoir à une époque par International
    et que l'on s'était aperçu qu'avec UseSystemSeparators à False il fallait récupérer DecimalSeparator

    Cela va simplifier mes codes et j'espère un jour ne plus avoir de surprise de ce côté là !

    C'est la deuxième fois que je me suis fourvoyé sur ce forum mais celle-ci est de loin komack !

    Encore une fois Francis, toutes mes sincères excuses les plus profondes !
    Je vais creuser un trou et m'y faire oublier un moment …

  16. #36
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Je t'ai mis un point sur tes discussions et tu as le droit de te soulager par des sur les miennes !
    Citation Envoyé par rdurupt Voir le message
    Et moi je tournerai 7 fois la roulette de ma souris avant de clicker!
    Tout le monde peut se tromper, comme cela m'est déjà arrivé et c'est humain; l'essentiel c'est de le reconnaître c'est pour cela que je mets et non
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  17. #37
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut
    Bonjour à tous,

    J'accepte bien volontiers ton mea culpa Marc-L. à l'avenir tu seras plus tolérant.

    Citation Envoyé par rdurupt Voir le message
    j'ai l'impression qu'il a trouvé une solution par dépit
    J'ai adopté ta proposition #3 qui fait le boulot pour réaliser une "conversion explicite" et s'affranchir des réglages Windows des clients (français, américain, russes, japonais...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A1").Value=1.1
    double =val(replace(Range("A1").Value,",","."))
    L'astuce de Theze #4 permet de connaitre le séparateur régional de Windows sans passer par l'API.
    Citation Envoyé par rdurupt Voir le message
    Personnellement je ne trouve pas qu'il y ait un intérêt à modifier le paramètre régionaux de Windows.
    Effectivement, moi aussi je considère que c'était une mauvaise piste.

    Du coup ce post est un peu difficile à suivre pour celui qui rencontre le problème, quelqu'un pourrait compléter le tuto "Excel et les paramètres régionaux : Application.International" ?

    Voici ma compréhension actuelle du sujet
    Les séparateurs peuvent intervenir à 3 niveaux:
    • Dans VBA toujours le .
    • A l'affichage dans Excel (combinaison des choix utilisateur dans Excel et Windows...)
    • Dans l'affichage de la fenêtre d’exécution VBE (CTRL+G) et quand on récupère un Range("A1").Value (paramètres régionaux de Windows)

    Citation Envoyé par rdurupt Voir le message
    ... mais qu'il subsiste des incompréhensions!
    Oui, j'ai un poste client - auquel j'ai rarement accès - qui se comporte bizarrement dans la fenêtre "Locals Window" de VBE mais je créerai une discussion spécifique si besoin.

  18. #38
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Voici ma compréhension actuelle du sujet
    Les séparateurs peuvent intervenir à 3 niveaux:
    Dans VBA toujours le .
    dans la saisie du code oui.
    Mais à l'affichage dans VBE c'est toujours le séparateur système qui est utilisé, même si Application.UseSystemSeparators = False et qu'un autre y est défini. Donc la "," en france si l'utilisateur n'a rien changé.
    Voir post 32
    eric

  19. #39
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Désolé Francis j'étais tellement certain car à une époque on avait constaté un comportement différent
    ou alors on s'est bien fait embarqué ! C'était gravé dans du marbre dans ma mémoire pourtant …

    Citation Envoyé par francis60 Voir le message
    Voici ma compréhension actuelle du sujet
    Les séparateurs peuvent intervenir à 3 niveaux:
    • Dans VBA toujours le . : OK

    • A l'affichage dans Excel (combinaison des choix utilisateur dans Excel et Windows...) : OK
    Selon UseSystemSeparators : True = séparateur régional de Windows | False = Application.DecimalSeparator

    • Dans l'affichage de la fenêtre d’exécution VBE (CTRL+G) et quand on récupère un Range("A1").Value
    (paramètres régionaux de Windows) : OK

    Oui, j'ai un poste client - auquel j'ai rarement accès - qui se comporte bizarrement dans la fenêtre "Locals Window" de VBE
    La fenêtre Locals de la version anglo-US correspond à la fenêtre Variables locales de la version française.
    De mon côté, c'est comme pour l'affichage de la fenêtre Exécution, aucune prise en compte du séparateur d'Excel
    mais uniquement du séparateur décimal régional de Windows …

  20. #40
    Membre confirmé Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 184
    Par défaut
    Il y a tout de même une limite à la conversion par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Range("A1").Value=1.1
    double =val(replace(Range("A1").Value,",","."))
    Par exemple si

    A1: " 5 : ancienne valeur pour info (supprimée le 14/8)"
    B2: =N(A1)*5 // affiche 0 - la fonction N dans la cellule autorise une saisie alpha par exemple pour commenter

    double = 5 au lieu de 0 attendu

    Je n'ai pas la main sur le format de la source de données qui se trouve complètement permissif

    Je conserve cette conversion qui jusqu'à présent reste la meilleure
    Application.WorksheetFunction.N n'existe pas et présenterait j'imagine autant d'inconvénients tout comme Evaluate.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Chercher un fichier spécifique sur le poste client
    Par Orb Dorb dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/10/2005, 18h45
  2. Réponses: 6
    Dernier message: 06/10/2005, 20h54
  3. Appeler un programme sur le poste client avec <object>
    Par ouioui2000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/08/2005, 14h40
  4. [Forms5]ouvrir un executable sur un poste client
    Par anthony8 dans le forum Forms
    Réponses: 2
    Dernier message: 30/06/2005, 14h26
  5. [CR10][ASP.NET]Impression sur le poste Client
    Par David.V dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 30/04/2004, 13h41

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