Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 beaucoup de fonctions non reconnues par mon excel

JPA5

XLDnaute Nouveau
Je suis en Excel 2016 et je partage un projet avec un autre développeur.
Mon Excel ne reconnait pas certaines fonctions comme formula2 ou l'objet ListView.
D'où cela peut-il venir ?
 

soan

XLDnaute Barbatruc
Inactif
@JPA5 (salut dyso)

tu as écrit : « Le troisième est une copie du deuxième »

non, ce n'est pas ça :

* le 2ème lien mène sur le post de MICHAELH du 31/10/2019 à 11:53.

* le 3ème lien mène sur le post de MICHAELH du 31/10/2019 à 13:36.

mais sinon, oui, c'est dans la même conversation. c'était au cas où, par hasard, tu aurais lu le post du haut de page, sans chercher à lire la suite de la conversation.

soan
 

mapomme

XLDnaute Barbatruc
Supporter XLD
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.
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…