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 -
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 :
Formule d'origine dans ma cellule:
La fonction
Merci beaucoup pour votre aide.
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:
- Est-il possible d’écrire une formule matricielle en code VBA
- Code ascii - Guide
- Formule si et - Guide
- Ecrire en gras sur whatsapp - Guide
- Excel mise en forme conditionnelle formule - Guide
- Formule moyenne excel plusieurs colonnes - Guide
4 réponses
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"
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"
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...
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...
Voici la solution, je la poste pour venir en aide à ceux qui en auraient besoin...
et en vba, la formule s'applique sur la plage entière de BG4:BG27, inutile d'étirer la formule vers le bas
Et un grand merci pour votre contribution
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