Microsoft 365 Faire une MFC avec pour condition la couleur d'une des cellules d'une plage.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Frank Bellaisch

XLDnaute Nouveau
Bonjour à tous
Je vous joins le fichier, ce sera plus clair. En colonne J, je veux tester si une des cellule de la plage C à H contient une cellule de couleur. Si oui, on met en vert, sinon on laisse vide. Mais il faut faire ça ligne à ligne. J'espère avoir été clair. Merci à tous pour votre aide
 

Pièces jointes

Bonsoir Frank, NainPorteQuoi,
Un essai en PJ avec une fonction perso en VBA et une MFC.
VB:
Function CelluleEnCouleur(Plage As Range)
CelluleEnCouleur = ""
For Each C In Plage
    If Range(C.Address).Interior.Color <> 16777215 Then
        CelluleEnCouleur = ".": Exit Function
    End If
Next C
End Function
 

Pièces jointes

Bonjour, job75, le forum,

Je regarde, par curiosité ce fil, et j'essaie de comprendre comment fonctionne la fonction de job75.
VB:
Function Colorer(r As Range) As String
Application.Volatile
For Each r In r
    If r.Interior.Color <> vbWhite Then Colorer = " ": Exit For
Next
End Function
Là, pour If r.Interior.Color <> vbWhite Then Colorer = " ": Exit For, c'est pour moi très mystérieux.
Ensuite, pourquoi, sur la feuille, appeler la fonction en la faisant précéder par @ (ex : =@Colorer(C8:I8)) ?
Enfin, si l'on veut que la couleur de la cellule, au lieu d'être verte, soit rouge, comment s'y prendre ?
 
Bonsoir Magic_Doctor,
1 Là, pour If r.Interior.Color <> vbWhite Then Colorer = " ": Exit For, c'est pour moi très mystérieux.
2 Ensuite, pourquoi, sur la feuille, appeler la fonction en la faisant précéder par @ (ex : =@Colorer(C8:I8)) ?
3 Enfin, si l'on veut que la couleur de la cellule, au lieu d'être verte, soit rouge, comment s'y prendre ?
1-1 J'utilise vbWhite qui traite de la même manière les cellules incolores et les cellules colorées en blanc.
1-2 La fonction renvoie un espace qui n'est pas visible, cela évite de faire colorer en vert la police par la MFC.

2 Chez moi sur Excel 2019 il n'y a pas de @, ce caractère s'ajoute automatiquement dans les versions plus récentes.

3 Il suffit de modifier le format de la MFC avec la couleur rouge pour le remplissage.

A+
 
Salut,

🧩 Pourquoi Excel affiche-t-il un @ devant une fonction personnalisée ?​

Dans Excel moderne (Microsoft 365, Excel 2021+), le moteur de calcul utilise le spilling (plage dynamique). Pour assurer la compatibilité avec les anciens classeurs, Excel ajoute parfois automatiquement un opérateur d’intersection implicite : @.

Ce symbole signifie :
“Prends uniquement la valeur de la cellule correspondante dans une plage, au lieu de renvoyer toute la plage.”
Cela arrive notamment lorsque :
  • une UDF (User Defined Function) VBA renvoie une plage au lieu d’une seule valeur ;
  • une formule a été créée dans une ancienne version d’Excel ;
  • Excel pense que la fonction pourrait produire un résultat « déversé » (spill), et ajoute @ pour forcer un résultat unique.
Dans le cas de la fonction Colorer, Excel2021+ considère que la fonction pourrait renvoyer plusieurs valeurs (car elle parcourt une plage).Pour éviter un spill (déversement), Excel ajoute automatiquement un @
Cela ne change pas le résultat, mais signifie :
“Je force la fonction à renvoyer une seule valeur, même si elle traite une plage.”

Nullosse
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour