[RÉSOLU] VBA : formule compliquée qui refuse de s'enregistrer

dionys0s

XLDnaute Impliqué
Rebonjour le forum.

C'est la deuxième fois que mon Excel me fait ça : refuser de m'enregistrer ma macro pour une formule un peu compliquée. La première fois c'était pour une bête fonction sommeprod à treize matrices, et je m'en étais sorti en comprenant comment la taper directement dans le code. Mais là j'ai affaire à une formule pas mal plus dure à traduire en VB. Existe-t-il un "convertisseur" de formules Excel en VB ?

Et si non pourrais-je avoir votre aide là dessus please ?

D'avance merci beaucoup.

Et à toutes fins utiles (on sait jamais ça pourrait vous aider à m'aider), voici mes deux formules réticentes à l'enregistrement :

Code:
=SI(ESTNA(SI(NB.SI('Datas CdS'!$A$2:$A$5000;C$2)=0;"";INDEX('Datas CdS'!$1:$1;EQUIV($B3;DECALER('Datas CdS'!$A$1;EQUIV(C$2;'Datas CdS'!$A$2:$A$5000);;;256);0))));"";SI(NB.SI('Datas CdS'!$A$2:$A$5000;C$2)=0;"";INDEX('Datas CdS'!$1:$1;EQUIV($B3;DECALER('Datas CdS'!$A$1;EQUIV(C$2;'Datas CdS'!$A$2:$A$5000);;;256);0))))

Code:
=SI(SOMMEPROD(('Datas CdS'!$B$1:$CI$1=CdS!C3)*('Datas CdS'!$B$1:$CI$1<>"Annonce")*('Datas CdS'!$B$1:$CI$1<>"Entracte")*('Datas CdS'!$B$4:$CI$4))=0;"";SOMMEPROD(('Datas CdS'!$B$1:$CI$1=CdS!C3)*('Datas CdS'!$B$1:$CI$1<>"Annonce")*('Datas CdS'!$B$1:$CI$1<>"Entracte")*('Datas CdS'!$B$4:$CI$4)))

-_-'
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : VBA : formule compliquée qui refuse de s'enregistrer

Re :),
je comprends pas ton problème d'enregistrement :confused:.
Un copier/coller en enregistreur
Code:
    ActiveCell.FormulaR1C1 = _
        "=IF(ISNA(IF(COUNTIF('Datas CdS'!R2C1:R5000C1,R2C[2])=0,"""",INDEX('Datas CdS'!R1,MATCH(R[2]C2,OFFSET('Datas CdS'!R1C1,MATCH(R2C[2],'Datas CdS'!R2C1:R5000C1),,,256),0)))),"""",IF(COUNTIF('Datas CdS'!R2C1:R5000C1,R2C[2])=0,"""",INDEX('Datas CdS'!R1,MATCH(R[2]C2,OFFSET('Datas CdS'!R1C1,MATCH(R2C[2],'Datas CdS'!R2C1:R5000C1),,,256),0))))"
Code:
    ActiveCell.FormulaR1C1 = _
        "=IF(SUMPRODUCT(('Datas CdS'!R1C2:R1C87=CdS!R[1]C[2])*('Datas CdS'!R1C2:R1C87<>""Annonce"")*('Datas CdS'!R1C2:R1C87<>""Entracte"")*('Datas CdS'!R4C2:R4C87))=0,"""",SUMPRODUCT(('Datas CdS'!R1C2:R1C87=CdS!R[1]C[2])*('Datas CdS'!R1C2:R1C87<>""Annonce"")*('Datas CdS'!R1C2:R1C87<>""Entracte"")*('Datas CdS'!R4C2:R4C87)))"
Bonne soirée :cool:
 

dionys0s

XLDnaute Impliqué
Re : VBA : formule compliquée qui refuse de s'enregistrer

Je comprends pas non plus...

Voici comment je procède :
J'ai déjà ma formule dans excel. Je démarre l'enregistreur de macro, je mets le curseur au début de la formule. Et quand je tape enter, j'ai un message d'erreur "enregistrement impossible" ou un truc du genre.

Mystère et boule de gomme.

Merci bcp JNP en tout cas :)
 

ROGER2327

XLDnaute Barbatruc
Re : [RÉSOLU] VBA : formule compliquée qui refuse de s'enregistrer

Bonsoir à tous
Comparons ce qui est comparable. Notre ami travaille avec Excel2003 (si j'en crois l'intitulé de la discussion). Copions donc sa formule et demandons à l'"enregistreur de macros" d'Excel2003 de l'enregistrer. Et hop !
Et... ...refus de la bête.
Ce qui n'empêche pas ExcelXXXX avec XXXX différent de 2003 de se comporter autrement.
Quant à dire pourquoi il en est ainsi, je ne sais. La longueur de la formule semble être en cause, car, en écourtant la formule, j'ai pu l'enregistrer. Mais je n'ai pas poursuivi les investigations, et j'ignore s'il n'y a pas d'autres contraintes que la longueur. (Je n'utilise que très peu l'"enregistreur de macros" qui donne le plus souvent un code déplorable, préférant travailler d'abord avec le quatuor papier/crayon/gomme/cervelle.)​
ROGER2327
#4405


Lundi 23 Haha 138 (Chapeau de Bosse-de-Nage, ST)
7 Brumaire An CCXIX
2010-W43-4T22:13:48Z
 

JNP

XLDnaute Barbatruc
Re : [RÉSOLU] VBA : formule compliquée qui refuse de s'enregistrer

Re :),
Comparons ce qui est comparable. Notre ami travaille avec Excel2003 (si j'en crois l'intitulé de la discussion). Copions donc sa formule et demandons à l'"enregistreur de macros" d'Excel2003 de l'enregistrer. Et hop !
Et... ...refus de la bête.
Ce qui n'empêche pas ExcelXXXX avec XXXX différent de 2003 de se comporter autrement.
Quant à dire pourquoi il en est ainsi, je ne sais. La longueur de la formule semble être en cause, car, en écourtant la formule, j'ai pu l'enregistrer. Mais je n'ai pas poursuivi les investigations, et j'ignore s'il n'y a pas d'autres contraintes que la longueur. (Je n'utilise que très peu l'"enregistreur de macros" qui donne le plus souvent un code déplorable, préférant travailler d'abord avec le quatuor papier/crayon/gomme/cervelle.)
Effectivement, je n'avais pas pensé à ce problème 2003/2007. Mais il me semble que la limitation se situe bien au niveau des caractères ainsi que pour le nombre d'imbrications (mais ceci au niveau des formule de cellules).
Là où je comprends moins, c'est qu'à l'énoncé de la question, la formule est bien tolérée par 2003, c'est son enregistrement en VBA qui ne passe pas :confused:.
Merci de me confirmer que c'est bien le cas.
Euh, en ce qui concerne l'enregistreur, je ne l'utilise généralement que dans 2 cas : récupérer un petit morceau de syntaxe que j'ignore (ou que j'ai oublié), ou traduire une formule française en anglais (le cas de ce post) :rolleyes:.
Bonne journée :cool:
 

ROGER2327

XLDnaute Barbatruc
Re : [RÉSOLU] VBA : formule compliquée qui refuse de s'enregistrer

Re...
(...)
Là où je comprends moins, c'est qu'à l'énoncé de la question, la formule est bien tolérée par 2003, c'est son enregistrement en VBA qui ne passe pas :confused:.
Merci de me confirmer que c'est bien le cas.
(...)
Je confirme. J'ai créé un classeur Datas CdS pour faire fonctionner la première formule. (Je n'ai pas étudié la deuxième.)

Pour ce qui est des circonstances de l'utilisation de l'"enregistreur de macros", je suis d'accord avec vous.​
Bonne journée.

ROGER2327
#4410


Mardi 24 Haha 138 (Saint Claude Terasse, musicien des Phynances, SQ)
8 Brumaire An CCXIX
2010-W43-5T07:32:27Z
 

JNP

XLDnaute Barbatruc
Re : [RÉSOLU] VBA : formule compliquée qui refuse de s'enregistrer

Re :),
Je confirme. J'ai créé un classeur Datas CdS pour faire fonctionner la première formule. (Je n'ai pas étudié la deuxième.)
J'ai regardé dans l'aide sur les évolutions 97/2003 -> 2007/2010 mais je n'ai rien trouvé de probant concernant une modification de ce style :eek:.
Par contre, il me semble, dans mes souvenirs, que nous avions abordé un problème similaire (je ne l'ai pas retrouvé) sur un fil. Je crois qu'il y a une limitation dans le nombre de caractère chargeable via VBA dans une cellule (255). J'ai fais un test en mettant la formule en A1 et en la copiant via VBA en B1 avec ce code
Code:
Sub test()
Cells(1, 2).FormulaLocal = Cells(1, 1).FormulaLocal
End Sub
ça fonctionne parfaitement en 2010. Si quelqu'un pouvait faire ce test en 2003 et voir si la formule est tronquée, cela aiderait peut-être notre compréhension ;).
Bonne journée :cool:
 

dionys0s

XLDnaute Impliqué
Re : [RÉSOLU] VBA : formule compliquée qui refuse de s'enregistrer

Par contre, il me semble, dans mes souvenirs, que nous avions abordé un problème similaire (je ne l'ai pas retrouvé) sur un fil. Je crois qu'il y a une limitation dans le nombre de caractère chargeable via VBA dans une cellule (255). J'ai fais un test en mettant la formule en A1 et en la copiant via VBA en B1 avec ce code
Code:
Sub test()
Cells(1, 2).FormulaLocal = Cells(1, 1).FormulaLocal
End Sub
ça fonctionne parfaitement en 2010. Si quelqu'un pouvait faire ce test en 2003 et voir si la formule est tronquée, cela aiderait peut-être notre compréhension ;).
Bonne journée :cool:

Je l'ai fait ca me donne le résultat de ma cellule A1. C'est ce qu'il fallait ?
 

Discussions similaires

Réponses
22
Affichages
862

Statistiques des forums

Discussions
312 381
Messages
2 087 824
Membres
103 667
dernier inscrit
datengo