Reproduire une mise en forme si >0

Bonjour à tous,

besoin d'aide pour du VBA ou une formule :

dans mon fichier en pièce jointe, je souhaiterais appliquer la mise en forme (couleur) de chaque ligne de la colonne B à chaque fois qu'il y a une valeur > 0 dans la ligne correspondante

pour les lignes 4 à 40

merci de votre aide

5essai-couleur.xlsx (13.97 Ko)

Bonjour,

Je n'ai pas ouvert votre fichier, mais il existe une fonctionnalité appelée mise en forme conditionnelle (ou MFC).

Vous y trouverez des MFC "toute prête" (pour mettre en forme une cellule selon son contenu), et si elles ne conviennent pas, il est possible de faire une formule personnalisée. La couleur ne s'applique que si la formule renvoie 1 ou VRAI, et la formule s'écrit comme pour le premier cas de la plage sur laquelle elle s'applique.

Exemple :

mfc3

Dans votre cas, la formule serait plutôt (en ayant préalablement sélectionnée les lignes 4 à 40) :

=ET($B4<>"";$B4>0)

Après ouverture du fichier, je m'aperçois que j'ai compris le problème un peu de travers...

Un essai en VBA (le code est à coller dans le module de la feuille concernée) :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Lig As Integer, Col As Integer

If Not Intersect(Target, Range("B4:V40")) Is Nothing Then
    Lig = Target.Row
    If Len(Cells(Lig, 2)) > 1 Then
        For Col = 3 To 20
            If Cells(Lig, Col) > 0 Then Cells(Lig, Col).Interior.Color = Cells(Lig, 2).Interior.Color Else Cells(Lig, Col).Interior.Color = xlNone
        Next Col
    End If
End If

End Sub

Le fichier :

11essai-couleur.xlsm (20.21 Ko)

Pedro22 merci pour cette solution qui me convient.

Est-ce que je peux demander un complément car ça ne marche pas si je met une mise en forme conditionnelle sur le contenu de la colonne B.

Pedro22 merci pour cette solution qui me convient.

Est-ce que je peux demander un complément car ça ne marche pas si je met une mise en forme conditionnelle sur le contenu de la colonne B.

Les 2 solutions ne fonctionnent pas ensemble, car une MFC ne modifie pas réellement la mise en forme d'une cellule, ou du moins pas de la même manière que le ferais un utilisateur. Je m'explique : si tu colores manuellement une cellule en rouge, et qu'une MFC colore cette cellule en jaune, elle apparaîtra jaune tant que la condition de la MFC est vérifiée. Mais si ce n'est plus le cas, tu retrouves bien ta cellule rouge d'origine.

ok, alors quelle est la condition pour que la couleur de la MFC "prenne le dessus" sur le remplissage manuel?

ok, alors quelle est la condition pour que la couleur de la MFC "prenne le dessus" sur le remplissage manuel?

Je ne suis pas sûr de comprendre ce que tu souhaites. MFC et remplissage "manuel" (ou VBA avec ma 2nde proposition) sont 2 choses distinctes. La couleur "réelle" de fond d'une cellule n'est pas influencée par une MFC, tout comme on ne peut se baser par le biais de VBA sur la couleur de fond affichée suite à une MFC pour étendre cette couleur à d'autres plages.

Merci de détailler ce qui ne vous convient pas avec la macro, et si possible de l'illustrer avec un fichier actualisé.

En fait, la couleur de remplissage des cellules de la colonne B serait conditionnée par une MFC. Et par la suite la couleur des cellules de cette colonne B doit se reproduire dans les cellules à valeur numérique > 0 (code ok de ce côté là dans ce que vous m'avez proposé)

fichier en PJ

3essai-couleur.xlsm (18.19 Ko)

En fait, la couleur de remplissage des cellules de la colonne B serait conditionnée par une MFC. Et par la suite la couleur des cellules de cette colonne B doit se reproduire dans les cellules à valeur numérique > 0 (code ok de ce côté là dans ce que vous m'avez proposé)

fichier en PJ

essai couleur.xlsm

Merci de détailler la MFC qui génère la couleur en colonne B... La macro ne vous sera d'aucune utilité pour cette utilisation, mais si la MFC de la colonne B est réalisable en formule personnalisée, on peut l'adapter pour les cellules des colonnes C à V afin qu'elles soient également colorées.

Edit : je viens de la voir dans votre fichier... Comme quoi un fichier représentatif, ça fait la différence ! Je reviens vers vous avec une proposition 100% MFC. Je vous fournit juste un exemple pour le premier cas, vous pourrez ensuite l'adapter pour les autres.

Exemple de la première MFC, en remplacement de l'actuelle :

=ET($B5="produit A";B5<>"";OU(B5="produit A";ESTNUM(B5)))

Voir fichier :

1essai-couleur.xlsx (14.16 Ko)

Merci pour cette proposition. la colonne B sera dynamique, le nom du produit peut varier, est-ce que cette formule est adaptée par exemple pour 15 produits différents?

Merci pour cette proposition. la colonne B sera dynamique, le nom du produit peut varier, est-ce que cette formule est adaptée par exemple pour 15 produits différents?

Non, la MFC implique de créer autant de règles que de couleurs souhaitées. De plus, mon exemple actuel utilise un nom de produit inscrit en dur dans la formule, et qui ne sera donc pas actualisé en cas de modification du nom. Il est en revanche possible de faire référence dans la MFC à une cellule fixe contenant un nom de produit amené à évoluer. Exemple : Feuil2!$A$1 au lieu de "produit A".

Bonjour Pedro22

ok merci pour ces précisions.

Ainsi, il n'y a pas de solution pour placer une MFC dans la colonne B (qui conditionne la couleur en fonction du nom de l'atelier) et reproduire la couleur de cette MFC dans les cellules voisines?

Ainsi, il n'y a pas de solution pour placer une MFC dans la colonne B (qui conditionne la couleur en fonction du nom de l'atelier) et reproduire la couleur de cette MFC dans les cellules voisines?

Bonjour

Non, comme indiqué : une MFC par couleur dans le cas présent, ce qui n'est pas infaisable pour un nombre de cas limité.

Il existe des MFC à échelle de couleur (2 ou 3 couleurs) pour faire des dégradés, mais cela ne concerne que les valeurs numériques, et elles ne colorent que la cellule contenant le nombre.

Bonjour Pedro,

ok, je comprends.

Du coup en reprenant votre première solution avec le code VBA, on peut le modifier pour qu'il s’exécute après remplissage couleur de la cellule de la colonne B?

Bonjour Pedro,

ok, je comprends.

Du coup en reprenant votre première solution avec le code VBA, on peut le modifier pour qu'il s’exécute après remplissage couleur de la cellule de la colonne B?

Si on parle bien d'un remplissage manuel et non d'une MFC, oui c'est possible ! Enfin, pas à l'ajout d'une couleur, mais plutôt lors de la modification d'une cellule (c'est déjà ce que fait la macro proposée). Ce qui implique de commencer par la couleur avant de mettre le nom du produit. Ou supprimer puis rétablir une lettre du nom de produit pour faire la mise à jour de la couleur dans la ligne.

Si le produit existe déjà dans le tableau, un copié-coller fonctionnera, car il implique une modification de la valeur de la cellule, et rapatrie également la couleur de fond en même temps.

oui, je confirme, remplissage couleur manuelle de la colonne B et cette couleur doit se reproduire sur les cellules voisines de la même ligne si et ssi il y a une valeur > 0

oui, je confirme, remplissage couleur manuelle de la colonne B et cette couleur doit se reproduire sur les cellules voisines de la même ligne si et ssi il y a une valeur > 0

J'ai modifié mon message précédent. La modification de la couleur de fond n'est pas un déclencheur possible, mais tout modification de la valeur d'une cellule dans la plage B4:V40 exécute la macro.

On peut aussi affecter l’exécution de ladite macro à d'autre événements : double clique, ouverture du classeur, etc.

Voir : https://www.excel-pratique.com/fr/vba/evenements_feuille

Rechercher des sujets similaires à "reproduire mise forme"