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 :

[E-03] écrire des formules de calcul indépendamment de la langue


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Points : 97
    Points
    97
    Par défaut [E-03] écrire des formules de calcul indépendamment de la langue
    Bonjour

    Je dois générer depuis une autre application (écrite en PowerBuilder) un fichier Excel contenant des formules (Nb, Somme…) utilisable dans plusieurs langues (français, russe, anglais...)

    J’utilise une connexion OLE est je construis ma formule : …Range(…).Formula = '= sum(...)’

    En ouvrant mon fichier Excel (français) mes formules sont en erreur : « La formule contient du texte non reconnu »

    Comment écrire des formules de calcul indépendamment de la langue et si possible de la version d'Excel ?

    A+, merci

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonsoir,

    Essaye d'utiliser FormulaR1C1 au lieu de Formula.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A10").FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)"
    Cordialement,

    Tirex28/

  3. #3
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Bonjour.

    Le principe de base est d'utiliser, comme tu le fais, la propriété Formula (ou FormulaR1C1, mais je ne vois pas en quoi utiliser R1C1 modifierait quoi que ce soit au niveau de la reconnaissance de mots...) et d'utiliser, à l'intérieur des formules, exclusivement les fonctions en anglais.

    Il faut aussi éviter les caractères accentués dans les plages nommées que tu utiliserais éventuellement dans les formules, ainsi que des noms d'onglets avec caractères accentués.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Points : 97
    Points
    97
    Par défaut
    Bonjour

    Existe-t-il une "option" à activer dans Excel pour qu’il interprète correctement les formules anglaise ?

    A+

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Non. Si tu saisis une formule via .Formula, elle sera interprétée correctement sur un Excel français (ou, à mon avis, russe ou autre). L'important est à mon avis d'utiliser les mêmes pages de code, surtout avec des caractères accentués. Ce qui explique que je préconise qu'il faut ne pas utiliser de caractères accentués ou "exotiques".

    Peux-tu donner un exemple précis d'une formule que tu as créée en anglais et qui pose problème en français?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Points : 97
    Points
    97
    Par défaut
    Formule en erreur : = count(L(-4)C:L(-1)C)

    Même formule en francais qui marche : = NB(L(-4)C:L(-1)C)

    idem pour : = sum(LC(-110):LC(-1))

    Merci

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Il faudrait donner la formule anglaise et la formule telle qu'elle est "traduite" en français. Donner la formule qui marche en français n'aide pas beaucoup ...

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Points : 97
    Points
    97
    Par défaut
    la formule est contruite dynamiquement. Ce qui est envoyé à Excel par OLE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aole.Range(aole.cells(21, 112), aole.cells(21, 112)).Formula = '= sum(L(-4)C:L(-1)C)'
    aole est pointeur sur la connexion OLE vers Excel

    Merci, A+

  9. #9
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Si tu utilises une notation du type L(-1)..., alors, tu dois utiliser .FormulaR1C1, et surtout saisir R(-1) au lieu de L(-1) dans ta formule (n'oublie pas que tu es en anglais!)... mais pourquoi utiliser cette notation?

    à Tirex... Tu avais un don de voyance pour savoir que les formules étaient passées en R1C1?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Points : 97
    Points
    97
    Par défaut
    j'ai le même résultat avec formulaR1C1

    Exist'il un problème particulier avec cette notation ? que conseilles-tu ?

  11. #11
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Dans le code VBA, tu as bien modifié L(-1) par R(-1) car en anglaise, Ligne se dit Row => donc en passant la formule en R1C1, il faut utiliser R au lieu de L dans les formules créées en VBA, quelle que soit la version sur laquelle tu travailles.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Points : 97
    Points
    97
    Par défaut
    ok, merci pour ces conseils, je dois avoir un problème lié à PowerBuilder...

    A+, Thig

  13. #13
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Hum...

    Tu dois remplacer les () par des []... dans la formule
    aole.Range(aole.cells(21, 112), aole.cells(21, 112)).FormulaR1C1 = '=sum(R[-4]C:L[-1]C)'
    2. Pourquoi utilises-tu Range de cette façon?
    Tu peux utiliser
    aole.cells(21, 112).FormulaR1C1 = '=sum(R[-4]C:L[-1]C)'
    Non?

  14. #14
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonjour,

    Citation Envoyé par Pierre Fauconnier
    à Tirex... Tu avais un don de voyance pour savoir que les formules étaient passées en R1C1?
    Oui, mais je ne l'utilise qu'avec parcimonie. Je te rejoins quand tu dis que Formula et FormulaR1C1 sont équivalentes dés lors qu'on utilise les noms anglais des fonctions.

    Cordialement,

    Tirex28/

Discussions similaires

  1. Excel : Automatisation des formules de calcul
    Par CRIS2010 dans le forum Excel
    Réponses: 2
    Dernier message: 21/02/2010, 15h13
  2. Pb de rafraîchissement des formules de calcul
    Par mc.picsou dans le forum Excel
    Réponses: 5
    Dernier message: 08/08/2007, 10h59
  3. [Excel] Sauvegarde des formules de calcul
    Par Amanck dans le forum Excel
    Réponses: 1
    Dernier message: 06/10/2006, 11h57
  4. Réponses: 12
    Dernier message: 02/01/2006, 22h13
  5. [VBA]écrire des formules en Access comme en Excel ?
    Par beegees dans le forum Access
    Réponses: 2
    Dernier message: 14/12/2005, 01h23

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