Bonjour à tous,
Après quelques pérégrinations sur le web, ce que j'ai cru comprendre :
Excel a toujours eu deux moteurs d'évaluation des formules:
- un moteur ordinaire appelé IIE (Implicitly Intersection Evaluation) qui était le moteur par défaut
- un moteur AE (Array Evaluation)
AE était utilisé dans le cas d'évaluation des MFC, formule de validation, formule matricielle donc la formule contenait une plage de cellules en place d'une seule cellule dans les paramètres.
Mais depuis Excel 365 (dont je dispose - et/ou Excel 2019 dont je ne dispose pas) est apparu un nouveau type de fonction (Filter, Randarray, Sequence, Sort, Sortby, Unique, Xlookup, Xmatch, ...)
- Ces fonctions ont pour paramètre au moins une plage de cellules.
- Elles sont saisies dans une seule cellule sans validation matricielle
- Et pourtant, elles renvoient une plage de cellules et la taille de cette plage résultat est variable.
Si on saisit Unique(A1:A10) dans la cellule C1, alors :
- si la plage A1:A10 comporte 5 doublons, la fonction saisie dans C1 remplira les cellules C1:C5 avec les 5 valeurs uniques
- si on modifie la plage A1:A10 pour d'avoir qu'un seul doublon alors automatiquement, la même formule en C1 (sans y toucher) remplira la plage C1:C9 avec 9 valeurs uniques (c'est magique)
Cette nouvelle notion est appelée Dynamic Arrays (DA).
Avant par défaut le moteur d'évaluation des formules était IIE sur la feuille de calcul. Pour invoquer le moteur AE, il fallait valider une formule matricielle par Ctrl+Maj+Entrée.
Avec l'apparition des Dynamic Arrays, le moteur AE a du évoluer.
Pour faire appel en VBA au moteur AE sont apparues les propriétés : Formula2, Formula2R1C1, Formula2local, etc.
Si on utilise les propriétés de type Formula (sans référence à 2), c'est le moteur IIE qui sera invoqué.
Le moteur AE de Excel 365 est différent du moteur AE des précédentes versions (notamment à cause des nouvelles fonctions citées ci-dessus et des dynamic arrays).
Dans Excel 365, quand on saisit une formule dans la barre de formule et que celle-ci fait l'objet d'un ajout de "@", c'est que le moteur AE de Excel 365 a été invoqué et il montre où il est intervenu pour faire ses calculs futurs pour marquer les différences avec les précédents moteurs AE.
Je ne pense pas qu'Excel 2016 soit compatible avec Formula2.
C'est ce que je crois avoir compris. Mais de plus experts que moi pourront soit confirmer soit contredire ou bien encore compléter.
nota : je me suis toujours demandé pourquoi dans Excel 2010, il fallait valider sur la feuille de calcul une formule matricielle par Ctrl+Maj+Entrée alors que la même formule en MFC était validée sans opération particulière que la simple touche OK (formule matricielle ou non).
J'ai enfin la réponse. Sur la feuille de calcul, le Ctrl+Maj+Entrée indique à Excel d'utiliser le moteur AE et non IIE. Dans la boite de dialogue MFC, c'est le moteur AE qui est invoqué par défaut.
Je vais me coucher moins idiot (enfin si peu) ce soir.