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

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

Hello Sylvanu, quite à mettre qqchose dans une cellule, autant mette un espace (c'est moins pire 😉)
@Frank Bellaisch comme déjà dis, le fait d'appliquer la couleur ne génère rien donc si vous colorez une nouvelle cellule la maj ne se fait pas, il faut lancer le calcul manuellement (F9).
 
Bonsoir à tous,

Pour que la touche F9 ait de l'effet il faut que la fonction soit volatile :
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
Bonne nuit.
 

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-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+
 
Bonjour job,

Merci pour tes explications. Tout est clair maintenant.
J'avais essayé de virer le @ et le résultat était le même. Mais pourquoi diable Excel > 2019 met-il un @ ?

Bonne journée.
 
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

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