Est-il possible d’écrire une formule matricielle en code VBA

Résolu
alex141077 Messages postés 52 Statut Membre -  
alex141077 Messages postés 52 Statut Membre -
Bonjour à tous,


Je rencontre des difficultés pour insérer dans une cellule des formules matricielles par le biais d'une macro

Quand j’exécute la macro, elle n'insère pas la formule dans la cellule.

elles sont indispensables car je duplique une feuille plusieurs fois à l'identique et ensuite il faut que j’insère dans chacune des ces feuilles une formule matricielles différentes adaptée pour chaque feuille.

Formule fait à l'aide de l'enregistreur de macro :

Range("BG4").Select

Selection.FormulaArray = _
"=IFERROR(INDEX(Date1,MATCH(TRUE,R[18]C[-57]:R[18]C[-27]=""R"",0)),IFERROR(INDEX(Date1,MATCH(TRUE,R[18]C[-57]:R[18]C[-27]=""C"",0)),IFERROR(INDEX(Date1,MATCH(TRUE,R[18]C[-57]:R[18]C[-27]=""CA"",0)),IFERROR(INDEX(Date1,MATCH(TRUE,R[18]C[-57]:R[18]C[-27]=""CE"",0)),IFERROR(INDEX(Date1,MATCH(TRUE,R[18]C[-57]:R[18]C[-27]=""CP"",0)),IFERROR(INDEX(Date1,MATCH(TRUE,R[18]C[-" & _
"57]:R[18]C[-27]=""SS"",0)),""""))))))"
Range("BG4").Select
Selection.AutoFill Destination:=Range("BG4:BG27"), Type:=xlFillDefault


Formule d'origine dans ma cellule:

=SIERREUR(INDEX(Date1;EQUIV(VRAI;B4:AF4="R";0));SIERREUR(INDEX(Date1;EQUIV(VRAI;B4:AF4="C";0));SIERREUR(INDEX(Date1;EQUIV(VRAI;B4:AF4="CA";0));SIERREUR(INDEX(Date1;EQUIV(VRAI;B4:AF4="CE";0));SIERREUR(INDEX(Date1;EQUIV(VRAI;B4:AF4="CP";0));SIERREUR(INDEX(Date1;EQUIV(VRAI;B4:AF4="SS";0));""))))))


La fonction
Selection.FormulaArray =
ne fonctionne pas
Merci beaucoup pour votre aide.

Configuration: Windows / Chrome 97.0.4692.99
A voir également:

4 réponses

michel_m Messages postés 18903 Statut Contributeur 3 317
 
Bonjour;

La mieux serait de nous joindre ton classeur (anonymisé) en expliquant clairement ce que tu veux obtenir... la logique VBA est différente de la logique "formule" d'Excel
en VBA, pour utiliser des matricielles, il existe la fonction "evaluate"
0
alex141077 Messages postés 52 Statut Membre 2
 
j'aimerais bien mais je n'arrive à trouver comment vous joindre mon fichier?!
0
f894009 Messages postés 17413 Statut Membre 1 715
 
Bonjour a tous

Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
0
alex141077 Messages postés 52 Statut Membre 2
 
Voici la solution, je la poste pour venir en aide à ceux qui en auraient besoin...

Formule excel en BG4:

=SIERREUR(INDEX($B$3:$AE$27;1;EQUIV("*";$B4:$AF4;0));"")

et en vba, la formule s'applique sur la plage entière de BG4:BG27, inutile d'étirer la formule vers le bas

Range("BG4:BG27").FormulaR1C1 = "=IFERROR(INDEX(R3C2:R27C31,1,MATCH(""*"",RC2:RC32,0)),"""")"


Et un grand merci pour votre contribution
0