XL 2016 Problème avec les formules matricielles dans les MFC

Dudu2

XLDnaute Barbatruc
Bonjour,

Je vous soumets cette question difficile !

Les MFC qui peuvent être définies avec des formules (Type 2) peuvent s'écrire avec des formules matricielles.
Contrairement aux formules matricielles des cellules, nul besoin de les saisir avec SHIFT + CONTROL + ENTER.
Excel a l'air de s'en débrouiller.

Problème: Saisie manuellement, une formule de MFC matricielle est reconnue par Excel. Entrée par VBA elle ne l'est pas !

Dans le fichier joint un exemple qui illustre ce problème et les questions qui se posent.
 

Pièces jointes

  • Classeur1.xlsm
    21.5 KB · Affichages: 29

Dudu2

XLDnaute Barbatruc
Bonjour,

Faudrait faire un test sur 365. C'est simple: appuyer sur le bouton et voir si la cellule perd le fond orange. Faut juste trouver un candidat 365.

Pour un fix hypothétique faudrait déjà 1/ qu'ils soient au courant et 2/ effectivement que ça impacte toutes les versions récentes et la dernière.

Ce qui m'embête c'est que l'outil d'export / import de MFC que j'ai développé ne fonctionne donc plus dans 100% des cas comme je le pensais ! :oops:
 

job75

XLDnaute Barbatruc
Bonjour Dudu2, chris, Roblochon,

Chez moi sur Excel 2019 pas de bug, la formule de la MFC se crée bien mais la couleur n'apparaît pas.

Notez que la formule de la MFC peut s'écrire plus simplement =EQUIV(B2;B7:B9&C7:C9;0)

Idem avec cette macro :
VB:
Sub a()
With [B2]
    .FormatConditions.Delete 'RAZ
    .FormatConditions.Add Type:=xlExpression, Formula1:="=EQUIV(B2;B7:B9&C7:C9;0)"
    .FormatConditions(1).Interior.ColorIndex = 6 'jaune
End With
End Sub
A+
 

job75

XLDnaute Barbatruc
Notez qu'avec SOMMEPROD il n'y a pas de problème :
VB:
Sub a()
With [B2]
    .FormatConditions.Delete 'RAZ
    .FormatConditions.Add Type:=xlExpression, Formula1:="=SOMMEPROD(N(B2=B7:B9&C7:C9))"
    .FormatConditions(1).Interior.ColorIndex = 6 'jaune
End With
End Sub
Si on remplace SOMMEPROD par SOMME ça ne fonctionne plus, CQFD.
 

Pièces jointes

  • MFC(1).xlsm
    19.2 KB · Affichages: 2

Dudu2

XLDnaute Barbatruc
Bonjour job75,

Le problème n'est pas la formule en elle même. J'ai fait le minimum pour trouver une formule qui doit être matricielle pour mettre en évidence le problème.

Le problème est que VBA ne sait pas faire ce qu'on peut faire manuellement. Et ce même en exécutant une Macro enregistrée de la création d'une MFC avec formule matricielle. Car si la couleur de fond orange sur B2 n'apparait pas, c'est bien parce que le VBA n'a pas réussi (= bug !) à définir que cette formule est matricielle alors qu'une saisie manuelle le fait automatiquement (sans validation spéciale).

Car la couleur de fond de B2 ne peut être orange qui si la formule retourne VRAI. Et la formule ne peut retourner VRAI que si elle est interprétée comme matricielle.

Chez moi sur Excel 2019 pas de bug, la formule de la MFC se crée bien mais la couleur n'apparaît pas.

Donc en fait oui, comme Roblochon, tu confirmes aussi qu'il y a bug avec 2019.

@chris,

Pour être 100% sûr, lorsque pour Office 365 tu dis "Marche sur 365" tu constates qu'après avoir cliqué sur le bouton, la couleur de fond orange sur la cellule B2 reste bien orange. Correct ?
 

chris

XLDnaute Barbatruc
RE

Oui je confirme que sur 365 la couleur est bonne tandis que, même en le mettant à jour, sur 2019 cela ne l'est pas.

Dans 365 il n'y a plus de { } et toute formule est prioritairement analysée en matriciel

Dans nombre de cas, si on utilise dans une cellule une formule qui renvoie une matrice, au lieu d'avoir #Valeur, automatiquement la formule se propage en dessous pour afficher la matrice

De nouvelles fonctions aussi ont un aspect matriciel...
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa