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

Résolu
alex141077 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   -  
alex141077 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   -
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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 Date d'inscription   Statut Membre Dernière intervention   2
 
j'aimerais bien mais je n'arrive à trouver comment vous joindre mon fichier?!
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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 Date d'inscription   Statut Membre Dernière intervention   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