Formulaarray ne fonctionne pas

Résolu
Garin17 Messages postés 14 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 23 janvier 2012 - 22 janv. 2012 à 18:06
Garin17 Messages postés 14 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 23 janvier 2012 - 23 janv. 2012 à 14:04
Bonjour à tous,

j'ai créé une macro qui permet d'inserer une formule dans une cellule ( il s'agit d'une formule que l'on valide avec CTRL MAJ ENTREE )
mon probleme est que la formule ne fonctionne pas avec VB (elle fonctionne bien quand je la rentre " manuellement " )

voici ma formule :

Sub derniere_utilisation()
Range("O2").FormulaArray = "=MAX(IF(Feuil2!C[-13]=Feuil1!RC[-14],Feuil2!C[-14],""""))"
End Sub


pouvez vous m'aider

15 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2012 à 19:43
et ?
Et en écrivant donc :
Sheets("Feuil1").Range("O2").FormulaArray = "=MAX(IF(Feuil2!C[-13]=Feuil1!RC[-14],Feuil2!C[-14],""""))" 

Qu'est-ce que cela "donne" ?
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2012 à 18:43
Bonjour, Garin
1) ce sera la dernière fois que je te réponds tant que tu ne sauras pas poser tes questions dans la rubrique adéquate (langages dérivés > VBA
)
2) ou est cette sub ? (module ou feuille) et sur quelle feuille est la cellule O2 ?
Il sera plus prudent de mle précoiser (devant la plage Range("O2").
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2012 à 18:49
Et ne vient surtout pas me reprocher une intolérance en criant/pleurant encore une fois que tu es débutant, hein !
Etre débutant est une chose. Savoir être discipliné en est une autre !
Pour mémoire : la dernière fois que je t'ai reproché ta légèreté a fait l'onjet de mon message suivant :
bonsoir,
c'est pas vrai, Garin17 ...
relis donc attentivement :
ce qui t'a pourtant été dit ici
Alors : VBS (la présente section) est également (comme l'est VBA) un "langage dérivé" , mais ce n'est pas du tout un "langage dérivé > VBA"
dur dur ?

Voilà don qui explique très largement ma réaction.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Garin17 Messages postés 14 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 23 janvier 2012
22 janv. 2012 à 19:31
Ok ucfoutu je posterai mes prochaines questions dans language dérivé > vba.

et pour repondre à tes questions.
le sub est dans un module et O2 est sur la la feuil1.
(la formule est bien redistribuée dans la cellule le probleme est quelle ne se valide pas)
0

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

Posez votre question
Garin17 Messages postés 14 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 23 janvier 2012
22 janv. 2012 à 19:51
ca donne le meme resultat, ca renvoi dans la cellule : =MAX(IF(Feuil2!C[-13]=Feuil1!RC[-14],Feuil2!C[-14],""))
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2012 à 19:55
et au fait : formulaarray sur une seule cellule est plutôt étrange.
que donne donc (si une seule cellule) :
Sheets("Feuil1").Range("A2").Formula = "=MAX(IF(Feuil2!C[-13]=Feuil1!RC[-14],Feuil2!C[-14],""""))"

?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Garin17 Messages postés 14 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 23 janvier 2012
22 janv. 2012 à 20:12
pas mieux !
0
Garin17 Messages postés 14 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 23 janvier 2012
22 janv. 2012 à 20:15
pourquoi dis tu que la formulaarray sur une seule cellule est plutôt étrange ?!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2012 à 20:17
Ah !
Bien ===>>
tu as écrit dans ton premier message :
elle fonctionne bien quand je la rentre " manuellement "

Ecris-la donc manuellement et fais-nous un copier/coller de ce qu'elle contient ainsi (ce sera donc avec des SI et plus des IF et des points-virgules au lieu des virgules .
Montre-la, telle qu'elle marche en formule directe .



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Garin17 Messages postés 14 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 23 janvier 2012
22 janv. 2012 à 20:23
voila la formule =MAX(SI(Feuil2!B:B=Feuil1!A4;Feuil2!A:A;"")) formule validé avec ctrl maj entree
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2012 à 20:27
Bien,
mais il ne s'agit pas là d'une formulaarray mais d'une simple formule !
Et si tu expliquais ce que tu veux finalement faire/obtenir ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Garin17 Messages postés 14 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 23 janvier 2012
22 janv. 2012 à 20:41
j'ai une donnée dans une feuil1, et d'autre donne dans une feuil2
je recherche la cellule A1 de la feuil1 dans la feuil2 un peu comme une rechercheV mais je veux ressortir la date la plus recente:

EX:

feuil1

A1: test


feuil2

A B
1 15/01/2012 TEST
2 14/01/2012 TEST1
3 13/01/2012 TEST
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2012 à 21:51
Ouille,
Je viens de commencer à voir d'où vient le problème.
Lorsque tu mets une formule sur la feuille, Excel semble bien plus tolérant.
Lorsque tu la mets depuis le code, la tolérance n'est plus là et il est nécessaire que :
- la cellule où s'applique la formule soit formatée en nombre
- que la colonne où s'applique MAX soit également formatée en nombre
- que la valeur retournée soit également un nombre (et donc pas "")

Je viens donc d'effectuer ce test, qui marche :
Sheets("Feuil1").Range("A2").FormulaArray = "=MAX(IF(H1:H10=B1,I1:I10,0))"


Va rechercher dans la plage I1:I10 toutes les valeurs qui correspondent aux lignes de la plage H1:H10 contenant le contenu de la cellule B1
et place le résultat en cellule A2
J'ai ici mis le tout sur la même feuille pour travailler à l'aise, c'est tout. A toi de te référer à l'autre feuille là où tu veux.

Je comprends que la chose ne soit pas facile à déceler. Tu n'as donc rien à te reprocher.
Problème résolu en ce qui me concerne.
A toi.






____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2012 à 22:11
Et le plus fort est que tout cela se passe "en silence" car la formule passait (dans ton cas) et que, la visualisant alors depuis Excel, elle revêtait exactement, caractère pour caractère, le même aspect que celle que tu écrivait directement sur la feuille (mais sans les mêmes effets) !
C'est là un mystère, comme si finalement, l'affichage sur la feuille n'avait que valeur d'affichage et que VBA continuait à garder la main (et pas Excel).
Voilà qui va peut-être m'aider à comprendre d'autres mystères (j'en suis moi-même à étudier Excel et VBA et n'estime qu'en être aux balbutiements, en dépit de ce que l'on pourrait penser au travers de mes interventions).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Garin17 Messages postés 14 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 23 janvier 2012
23 janv. 2012 à 14:04
salut ucfoutu,
ca marche impec
j'ai tres legerement modifier la formule pour mon projet. voila ce que ca donne: =MAX(SI(Feuil2!B1:$B$30=Feuil1!A2;Feuil2!D1:$D$30;0))

je te remercie d'avoir pris le temps de m'aider !! A+ sur le bon forum
0
Rejoignez-nous