DECALER en matricielle

Bonjour, j'ai un souci avec la fonction DECALER, dans sa forme matricielle.

Voici ma feuille : en A1, j'ai "A1" en B1, j'ai "B1" etc...

A B

1 A1 B1

2 A2 B2

3 A3 B3

4 A4 B4

En C1, je rentre la formule : =DECALER(A1;0;1;1) --> me retourne B1 --> c'est normal ;)

En D1, je rentre la formule : =DECALER(A1;0;1;2) --> me retourne #VALEUR! --> C'est normal :)

En E1, je rentre la formule : =DECALER(A1;0;1;2) que je valide en matricielle (CTR+SHIFT+ENTREE) --> me retourne B1 et là, ce n'est pas normal, je me serais attendu à un retour de 2 lignes B1 et B2.

ETAPE 1 : Je ne comprends pas le retour, la forme matrcielle ne fonctionne pas ?!

ETAPE 2 : Pour après, je voulais mettre cette formule en VBA, mais j'ouvrirais un autre sujet.

Merci de votre aide :) :) : )

Bonsoir,

une formule matricielle retourne en général une matrice, mais Excel n'affiche qu'une donnée par cellule, afin de "voir" tous les résultats d'une formule matricielle il faut "glisser" votre formule vers le bas sur un nombre de ligne correspondant à minima au nombre de résultats attendus.

Avec Excel 365, ce système de résultat se fait maintenant automatiquement ! Voyez la formule en "grisé" pour la cellule D2 :

image

C'est le résultat de la mise en forme matricielle de la formule. Comme vous pouvez le voir sous Excel 365 nul besoin de valider en matriciel la formule, Excel comprend tout seul...

A vous la version Excel 365 ! il y a des offres pas très cher sur le NET ! Voir 2019 voir une version plus récente peut-être...

@ bientôt

LouReeD

Super !!! C'est exactement ça !!! Merci <3

J'avais essayé de tirer la formule, ça n'était pas correct, la formule changeait. Je n'ai pas pensé à sélectionner des cases vides AVANT de valider la formule.

Bizarre comme façon de faire, on ne sait pas toujours le nombre de réponse qu'on va avoir (je travail sur des tableaux dynamiques). J'ai O365 sur un autre poste et effectivement il se débrouille tout seul :).

ETAPE 1 : check : OK

ETAPE 2 : en VBA (même en 2014), la version non matricielle est : Range("E1").Formula = "=OFFSET(A1,0,1,2)" , et ça fonctionne (oufff). Mais comment je passe en matricielle la même instruction ?

Bonjour

Merci de votre retour !

Enregisrez une formule matricielle avec L'enregistreur de macro afin de connaître la procédure...

@ bientôt

LouReeD

Ah oui, bien vu

Mince, mauvaise pioche, ça donne la bonne formule : Range("E1").FormulaArray= "OFFSET(A1,0,1,2)" et effectivement j'ai bien {=DECALER(A1;0;1;2)} en E1 dans la formule et B1 dans la cellule, mais E2 est vide

Il y a une bidouille à faire pour que ça fonctionne ?

Merci de l'aide , bonne soirée

Edit ...

Pas bien suivi l'enregistreur de macro !!!

Range("E1:E4").Select
Range("E4").Activate
Selection.FormulaArray = "=OFFSET(RC[-12],0,1,2)"

Et là ce me rempli bien ce que je veux (E1 avec "B1", E2 avec "B2",E3 avec "#N/A",E4 avec "#N/A") mais il reste à savoir comment faire le premier "Select" puisque je ne connais pas la "taille" de ma réponse...

Une idée : je pense par exemple à exécuter la commande dans la colonne Z et checker la dernière ligne non vide de la colonne Z et refaire la commande en colonne E... mais c'est fastidieux car ce test je dois le répéter une dizaine de fois sur différents tableaux et mettre les retours les un en-dessous des autres

La bonne solution serait de connaître le nombre de retour de ce décaler matricielle... une autre idée ?

Bonjour,

la taille de la réponse sera au plus grand de même taille que la question, non ?

@ bientôt

LouReeD

Sinon essayer de créer un nouveau fil mais en indiquant power query...

@ bientôt

LouReeD

merci, on peut en effet clôturer ce fil 😆

Rechercher des sujets similaires à "decaler matricielle"