MacroVB Excel Prob pour introduire une formule

Résolu
Rhoulz Messages postés 25 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 30 août 2007 - 5 oct. 2006 à 17:59
Rhoulz Messages postés 25 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 30 août 2007 - 5 oct. 2006 à 23:42
Bonjour á tous,

Bon voila mon probleme qui est assez complexe et plus qu'etrange:

Je veux utiliser un macro en VB d'une feuille Excel pour remplir des cellules avec des formules.
Ces formules sont de types complexes: differents niveaux d'imbriquement faisant relations en liens a des cahiers externes.

En resume (avec un click_event) j'ai une boucle faisant appel á une fonction qui me renvoie les formules pour chacune des cellules á remplir.
Tout fonctionne bien ou presque et c'est bien la le probleme!

- La fonction renvoit la bonne formule c-a-d ... Si je la mets á la main elle fonctionne correctement (les liens les calculs tout est bon)

Dans ma macor, j'introduit la formule via une simple:
Workbooks(Livre).Worksheets(Feuille).Cells(Row, Col).Value = "=" & Formula

(Formula etant la formule)

Alors le probleme: cela fonctionne si formula est simple ayant comme valeur Formula="3+4", "B2 + 7", et meme avec un simple lien comme "'\\Pc-XX\Xxxxxxx\Xxxxx Xxxxxx\XX XXXXX\Xxxxxxx\[XX XX XX.xls]NomFeuille'!R24"
Par contre cela ne fonctionne pas avec la formule comme je la veux (elle est grosse fait reference a des fonction de date, de Max, de Chercher avec trois niveaux de If et le tout en reference a des feuilles d'un livre externe)...
Par contre si je remplace le par * (donc j'ai Workbooks(Livre).Worksheets(Feuille).Cells(Row, Col).Value "*" & Formula): La fonction marche mais les formules sont affichées et pas calculées (sans = c'est normal) et si je remplace á la main le * par un = ma formule me donne le resultat correct! Faut avouer que c'est troublant non? pourquoi mettre á la main le "=" fonctionne, par contre si je le mets via la macro ça foire avec ma formule, mais ça marche avec des simple Formula = "3+2" ??? (Mystère de la vie informatique ...)

Donc voila je n'y comprends rien

Ma formule serait trop grande pour pouvoir être introduite via une MacroVB?
Est-ce un probleme connu (moi je trouve pas d'info á ce sujet)?
Il y a t il moyen de regler ce probleme?
Dois-je balancer mon PC par la fenetre?

Donc voila si il y a des gourous de la macro VB sous Excel je serais très reconnaissant, ou n'importe qu'elle aide serait la bien-venue...

Merci d'avance,

Au secour!

Rhoulz.

la structure de la formule (je pense pas que cela soit necessaire mais je la mets quand-même):
IF('[Fich.xls]Feuille'!R24 "";"No hay fecha definida!";IF('[Fich.xls]Feuille'!R24 > DATE(2006;2; 0);"Credito no existia a la fecha!";IF(MAX('[Fich.xls]Feuille2'!$F$23:$F$382) < DATE(2006;1; 0);"Credito reembolsado ya!";CHERCHER(DATE(2006;2; 0); '[Fich.xls]Feuille2'!$F$23:$F$382;'[Fich.xls]Feuille2'!$I$23:$I$382))))
(je l'ai modifiee pour qu'elle soit lisible ... noms fonctions excel en version Fr et nom [Fich.xls]Feuille raccourci ... enfin le truc c'est quelle marche si je la mets á la main ...)

6 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
5 oct. 2006 à 23:15
Salut,

Pour utiliser Formula, les mots-clés de la formule doivent être en anglais (If, SumIf, VLookUp...) et tu dois utiliser la virgule comme séparateur.


En utilisant le point-virgule comme tu le fais, ça crée ce genre
d'erreur. Ou en utilisant les mots-clés français (Si, Somme.Si,...) À
ce moment, tu dois utiliser FormulaLocal pour indiquer que c'est la
version "Locale" donc française que tu veux utiliser... Cette façon de
procéder n'est pas portable sur un système anglais par contre.

MPi
3
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
5 oct. 2006 à 18:29
Je t'avoue que j'ai pas lu jusqu'au bout, mais je vois déjà une erreur assez écidente au début :
Workbooks(Livre).Worksheets(Feuille).Cells(Row, Col).Value = "=" & Formula

C'est pas la Value que tu veux définir, mais la formule, l'instruction correcte est donc :
Workbooks(Livre).Worksheets(Feuille).Cells(Row, Col).Formula = "=" & Formula

(Ces problèmes arriveraient moins souvent si les objets VBA étaient un minimum typé...)

Julien.
0
Rhoulz Messages postés 25 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 30 août 2007
5 oct. 2006 à 19:48
Heu oui tu as raison mais en fait c'est ce que je faisais au debut un .Formula ... Mais j'ai tellement tout essayé que j'ai fini par essayé .Value ... Et j'ai fait le copier-coller de cette version sans me rendre compte.

Enfin merci pour me lire et me soutenir ...

Enfin le probleme reste totalement identique et inchangé malheureusement. Mes formules ne rentrent pas si je mets [...].Cells(Range).Formula = "=" & Formula ... mais les formules sont pourtant correctes (peuvent etre entree manuellement) et la fonction peut faire rentrer des formules de cette maniere si elles sont simples (Formula = "3+2" p ex).
0
Rhoulz Messages postés 25 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 30 août 2007
5 oct. 2006 à 20:19
Bon peut-être que cela pourrait aider certains á comprendre quel est mon probleme, l'erreure obtenue est un erreure 1004 (en Espagnol: "Error definido por la aplicación o definido por el objeto")
Ou vfr. +/- traduit: Une erreure definie par un objet (car j'utilise pas de Raise ni d'instruction Error).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Rhoulz Messages postés 25 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 30 août 2007
5 oct. 2006 à 22:55
Ha bhen j'ai enfin trouvé le truc en fait tu y etait presque Julien, encore merci ...
Je ne connaissais pas ce type et bon je sais pas pourquoi c'est obligatoire mais c'est ainsi, il fallait utiliser comme ceci:

Workbooks(Livre).Worksheets(Feuille).Cells(Row, Col).FormulaLocal = "=" & Formula

et non :

Workbooks(Livre).Worksheets(Feuille).Cells(Row, Col).Formula = "=" & Formula

Bho ça pourra ptet servir á quelqu'un ... J'avoue que je comprends pas exactement pourquoi mais c'est comme ça.

Jul
0
Rhoulz Messages postés 25 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 30 août 2007
5 oct. 2006 à 23:42
Ha bhen voilá ... ça a toute suite l'air logique expliqué comme ça!

oui effectivement j'utilise une version locale de Excell 2003 (espagnole pour tout dire)... Voila pourquoi mes formules etaient correctes et pouvaient s'entrer á la main (Paste) mais pas via ma macro...

Merci MPi

Rhoulz
0
Rejoignez-nous