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.
Merci pour vos retours.
Donc en 365, le VBA sait placer la formule de MFC en matriciel, ou bien comme c'est le défaut comme le dit chris, c'est peut-être Excel qui la prend comme ça.
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
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.
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.
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 ?
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...