Formulaarray ne fonctionne pas [Résolu]

Garin17 14 Messages postés lundi 2 mai 2011Date d'inscription 23 janvier 2012 Dernière intervention - 22 janv. 2012 à 18:06 - Dernière réponse : Garin17 14 Messages postés lundi 2 mai 2011Date d'inscription 23 janvier 2012 Dernière intervention
- 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
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 janv. 2012 à 19:43
3
Merci
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

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 76 internautes ce mois-ci

Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 janv. 2012 à 18:43
0
Merci
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
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 janv. 2012 à 18:49
0
Merci
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
Commenter la réponse de ucfoutu
Garin17 14 Messages postés lundi 2 mai 2011Date d'inscription 23 janvier 2012 Dernière intervention - 22 janv. 2012 à 19:31
0
Merci
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)
Commenter la réponse de Garin17
Garin17 14 Messages postés lundi 2 mai 2011Date d'inscription 23 janvier 2012 Dernière intervention - 22 janv. 2012 à 19:51
0
Merci
ca donne le meme resultat, ca renvoi dans la cellule : =MAX(IF(Feuil2!C[-13]=Feuil1!RC[-14],Feuil2!C[-14],""))
Commenter la réponse de Garin17
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 janv. 2012 à 19:55
0
Merci
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
Commenter la réponse de ucfoutu
Garin17 14 Messages postés lundi 2 mai 2011Date d'inscription 23 janvier 2012 Dernière intervention - 22 janv. 2012 à 20:12
0
Merci
pas mieux !
Commenter la réponse de Garin17
Garin17 14 Messages postés lundi 2 mai 2011Date d'inscription 23 janvier 2012 Dernière intervention - 22 janv. 2012 à 20:15
0
Merci
pourquoi dis tu que la formulaarray sur une seule cellule est plutôt étrange ?!
Commenter la réponse de Garin17
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 janv. 2012 à 20:17
0
Merci
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
Commenter la réponse de ucfoutu
Garin17 14 Messages postés lundi 2 mai 2011Date d'inscription 23 janvier 2012 Dernière intervention - 22 janv. 2012 à 20:23
0
Merci
voila la formule =MAX(SI(Feuil2!B:B=Feuil1!A4;Feuil2!A:A;"")) formule validé avec ctrl maj entree
Commenter la réponse de Garin17
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 janv. 2012 à 20:27
0
Merci
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
Commenter la réponse de ucfoutu
Garin17 14 Messages postés lundi 2 mai 2011Date d'inscription 23 janvier 2012 Dernière intervention - 22 janv. 2012 à 20:41
0
Merci
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
Commenter la réponse de Garin17
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 janv. 2012 à 21:51
0
Merci
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
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 janv. 2012 à 22:11
0
Merci
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
Commenter la réponse de ucfoutu
Garin17 14 Messages postés lundi 2 mai 2011Date d'inscription 23 janvier 2012 Dernière intervention - 23 janv. 2012 à 14:04
0
Merci
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
Commenter la réponse de Garin17

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.