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 :

anglais-français avec les décimales


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut anglais-français avec les décimales
    Bonjour à tous,

    je suis à monter un petit programme excel qui sera utiliser sur un windows XP en français, avec Office 2003 en français. Par contre, il peut arriver que le poste de la personne soit configuré en français ou en anglais. Le séparateur de décimale n'est donc pas identique dans chacune des langues.

    Dans ma fonction VBA, j'établis un montant ainsi : prime_enfant = 25.5. Si je roule la macro avec ma configuration en anglais, tout fonctionne correctement. si je roule la macro avec ma configuration en français, ça plante.

    Ça plante car VBA ne reconnaît pas le chiffre (il sait que le 25.5 est un chiffre, puisqu'il le considère comme 25,5).

    Dans ma macro, j'utilise les formules Excel. Voici où ça plante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =max(0,round((RC37*RC33*" & benefice_spouse & "+" & prime_enfant & ")*rc[-1],2))
    car il considère prime_enfant comme étant un caractère (j'ai fait le test et j'ai mis 25 dans prime_enfant et il n'y a pas de problème). J'ai une erreur 1004.

    De plus, je tiens à ce que la macro inscrive des formules dans Excel (et non pas faire les calculs à même la macro).

    Est-ce qu'il y a quelqu'un qui pourrait me dire s'il est possible de modifier les paramètres dès le début de la macro afin de changer les chiffres en anglais et revenir au français par la suite?

    Merci!


    François

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut francois1979
    Tu déclares tes variables ? en Double pour prime_enfant ?

    Quand c'est une anomalie de fonctionnement, comment veux-tu qu'on trouve une solution, si tu ne donne pas ta macro ? Peu de personnes ont les 2 versions, et te proposer des solutions qu'on ne peut tester que dans une version demande qu'on connaisse tout le code, pas que la partie que tu soupçonnes de provoquer ton problème, pour essayer d'éliminer toutes les possibilités de conflit potentiel sur l'une ou l'autre version
    A+

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    470
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 470
    Points : 493
    Points
    493
    Par défaut
    Bonsoir
    voir du côté de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.International (xlDecimalSeparator)
    Bonne soirée

    Abed_H

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonsoir tlm,

    Peut-être comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=max(0,round((RC37*RC33*" & Val(benefice_spouse) & "+" & Val(prime_enfant) & ")*rc[-1],2))"

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci pour votre aide, mais ça ne fonctionne pas encore.

    Je comrpends que je pourrais utiliser Val ou encore Replace (je remplace la virgule par un point). Mais j'aimerais mieux une solution globale au début du code (ex : changer le système de français à anglais seulement lors de l'exécution de la macro).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub calcul()
     
    Dim benefice_spouse As Double     'Bénéfice payable au décès du conjoint
    Dim prime_enfant As Double        'Prime payable pour l'assurance vie des enfants
     
    benefice_spouse = 5000
    prime_enfant = 25.5
     
    Range("AM2").FormulaR1C1 = "=max(0,round((RC37*RC33*" + CStr(benefice_spouse) + "+" & prime_enfant & ")*rc[-1],2))"
     
    End Sub
    Merci encore pour votre aide!


    François

Discussions similaires

  1. problème avec les décimales
    Par salseropom dans le forum C++
    Réponses: 4
    Dernier message: 15/02/2012, 17h39
  2. Problème avec les décimales
    Par bombseb dans le forum WinDev
    Réponses: 6
    Dernier message: 01/07/2010, 12h12
  3. Réponses: 3
    Dernier message: 25/06/2008, 10h39
  4. Transfertext : problème avec les décimales
    Par Julien Dufour dans le forum Access
    Réponses: 3
    Dernier message: 19/02/2007, 10h27
  5. Réponses: 2
    Dernier message: 21/07/2006, 10h06

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