Rhoulz
Messages postés25Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention30 août 2007
-
5 oct. 2006 à 17:59
Rhoulz
Messages postés25Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention30 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 ...)
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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.
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 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é...)
Rhoulz
Messages postés25Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention30 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).
Rhoulz
Messages postés25Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention30 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).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Rhoulz
Messages postés25Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention30 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.
Rhoulz
Messages postés25Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention30 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...