[excel 97]Pb avec FormulaLocal

O

okparanoid

Guest
J'utilise ce code dans une macro sous excel 97

Code:
ws.Range('g2').FormulaLocal = '=MAX(ANNEE(D3:D300))'

:evil:

En resultat sur la feuille xl m'affiche un #VALEUR!. Je verifie la formule obtenue sur la feuille j'obtiens bien : =MAX(ANNEE(D3:D300))

Hors si je copie cette meme formule a la lettre pres dans une autre cellule. XL m'affiche le bon resultat. Quelqu'un peut m'eclairer sur le probleme ?

Merci !!
 
O

okparanoid

Guest
Merci pour ta reponse et desole pour avoir oublie de dire bonjour :p !

Ceci dit XL renvoie cette fois ci : impossible de definir la propriete FormulaArray de la classe Range...

Je suis sous 97 seulement ca doit avoir un rapport je presume...
 
O

okparanoid

Guest
Apres verification chez moi sur excel 2003 en faite le meme probleme reapparait. Je precise donc que l'erreur ne vient pas de la version d'excel...

Avec XL 2003 on peut tracer les erreurs et c'est la plage qu'il n'arrive pas a prendre en compte : 'd3:d300'.

Cette plage ne contient pas forcement une valeur pour chaque cellule (par exemple seul d3:d10 contient des valeurs), mais je ne peux pas conaitre a l'avance le nombre de cellules qui auront une valeur. Le fait est que quand je tape la formule a la main sans qu'elle ne soit affectee par une macro ca marche parfaitement. Quelqu'un y comprend quelque chose ??

Merci pour vos contributions !
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir okparanoid, Myta (content de te croiser :) ),

Je suis très loin d'être un spécialiste 'formule Excel', aussi j'espère que je ne vais pas dire une énormité...

J'ai beau essayer, chez moi, par macro ou manuellement, =MAX(ANNEE(D3:D300)) donne toujours une erreur #VALEUR... je n'y connais rien en formules 'matricielles' mais j'imagine que la fonction ANNEE() ne supporte pas une matrice comme argument.

Par contre, si tu fais =ANNEE(MAX(D3:D300)) (inversion des formules), alors là, je pense que tu obtiens tout de même le résultat escompté et ce, par macro aussi bien que par formule directe :
wk.Range('g2').FormulaLocal = '=ANNEE(MAX(D3:D300))'
Cordialement,
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir Okparanoïd, Mytå et Didier_mDF :)

Il est logique que ton code ne fonctionne pas car tu joues avec une formule matricielle.

Donc, soit tu optes pour la solution de Didier (puisque MAX prend une plage de cellules comme argument), soit tu passes par FormulaArray :

Selection.FormulaArray = '=MAX(YEAR(R[1]C[-3]:R[298]C[-3]))'

(il est obligatoire de passer par les références de type LC...

Amicalement
Charly

Message édité par: Charly2, à: 17/12/2005 21:38
 

Discussions similaires

Statistiques des forums

Discussions
312 336
Messages
2 087 389
Membres
103 534
dernier inscrit
Kalamymustapha