Modifier la couleur de cellule en fonction du texte d'une colonn

[Résolu/Fermé]
Signaler
-
 steve -
Bonjour a vous,

Voilà, ca fait un moment que je cherche, et je sèche un peu.

J'essaie de modifier le format d'une cellule en fonction du fait si elle contient ou non le texte compris dans une des cellules d'une autre feuille.
J'ai essayé avec les mises en formes conditionnelles, mais cela ne fonctionne pas.

Pour préciser ma demande j'ai dans la feuille 1 sur la colonne 1 le nom de mes fournisseurs
Sur la feuille 2 colonne 5, j'ai mes différentes commandes avec le nom du fournisseur en question.
Sur les feuilles j'ai des en tête et ne souhaites pas prendre en compte les 1ere lignes.
Je souhaites mettre en évidence le fait d'avoir un nouveau fournisseur.
i.e. : si le texte contenu dans la cellule de la colonne 5 feuille 2 n'est pas égale au texte contenu dans celllule de la colonne 1, celle-ci se mets en rouge.

J'ai déjà en ligne de commande :

li = Range("e65000").End(xlUp).Row
ly = Range("a65000").End(xlUp).Row

For i = 5 To li
For y = 11 To ly

If Range("e" & i) <> Sheets("1.3 - Coordonnée fournisseur").Range("A" & y) Then
Range("e" & i).Interior.Color = 3 'rouge
else : Range("e" & i).Interior.Color = 0
Next y
Next i

End If


J'espère avoir été asses clair dans mes explications pour me faire comprendre.
Et si vous avez d'autres pistes que la voie que je suis en train de prendre, faites vous plaisir!
Merci d'avance pour vos réponses.

2 réponses

Messages postés
13115
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 octobre 2021
2 263
Bonjour

Cela doit être possible par MFC pourtant (à condition de nommer la plage des fournisseurs pou pouvoir l'utiliser dans une formule de MFC sur une autre feuille)
Postes un exemple de ton fichier (allégé et anonymé si nécessaire) sur monpartage.fr, fais créer un lien, copies le et reviens le coller ici, on aura une base de travail

Cdlmnt
Via

"L'imagination est plus importante que le savoir."    A. Einstein
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Bonjour Via,

Merci de ta réponse. En MFC, je ne vois pas comment faire, mais si tu as une idée, je suis preneur, ca me facilitera la tache.

Voici le lien d'un exemple de fichier : https://mon-partage.fr/f/mEwg5YXk/

Cordialement
Messages postés
13115
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 octobre 2021
2 263 > Gyom
Bonjour Gyom

Ton fichier avec la MFC :
https://mon-partage.fr/f/11UsWH02/

La plage A11:A200 de la feuille Fournisseurs a été nommée fournisseurs pour être utilisée dans la formule de la MFC

Cdlmnt
Via
>
Messages postés
13115
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 octobre 2021

Merci beaucoup, c'est exactement ce qu'il me fallait!
Effectivement je comprends mieux comment nommer une sélection et s'en servir dans une formule surtout pour des MFC.

Encore merci, affaire résolu!
Bonjour Gyom,

Dans ton code VBA, le deux-points « : » après le else est en trop, car
en le laissant, ça signifie : « sinon rien » ; puis exécuter l'instruction
suivante (après le deux-points).

Pour les couleurs que tu veux mettre, au lieu de .Color, il faut que
tu utilises .ColorIndex

Essaye ce code VBA :


Option Explicit

Sub Essai()

  Dim li As Long, ly As Long, i As Long, y As Long

  li = Range("E" & Rows.Count).End(xlUp).Row
  ly = Range("A" & Rows.Count).End(xlUp).Row

  For i = 5 To li
    For y = 11 To ly
      With Range("E" & i)
        If .Value <> Worksheets("1.3 - Coordonnée fournisseur").Range("A" & y) Then
          .Interior.ColorIndex = 3 ' rouge
        Else
          .Interior.ColorIndex = xlNone
        End If
      End With
    Next y
  Next i

End Sub


Couleur xlNone : Aucune couleur
(ce qui est différent de Blanc).

Merci de me dire si ça te convient.

Cordialement
 
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Bonjour Steve,

Merci pour ton code, mais malheureusement, cela ne fonctionne pas.
Effectivement, pour le else je l'avais tapé rapidement avec un espace et le ":" s'est mis automatiquement sans l'avoir vu, merci ;-) !
Petite question annexe cela change quoi entre color et color index? (car de mon coté j'utilse color, et cela fonctionne dans d'autre macro)

Cordialement
> Gyom
 
Bonjour Gyom,

Matériellement, sur un écran couleur :

Un pixel en couleur est un "mélange" de ces 3 couleurs de base :
Red (rouge), Green (vert), Blue (Bleu).

----------------------------------------------------

La "quantité" de couleur pour chaque couleur de base donne
un nombre de type Long et RGB() renvoie un entier Long.

exemple : [B2].Interior.Color = RGB(255, 0, 0)
=> quantité de rouge : 255 ; quantité de vert : 0 ; quantité de bleu : 0
=> couleur rouge

Avec RGB(), tu peux indiquer n'importe quelle couleur.

Regarde l'aide VBA sur RGB() pour plus de détails.

----------------------------------------------------

La palette de couleurs est un sous-ensemble limité de toutes
les couleurs ; ColorIndex est un n° d'index pour cette palette.

exemple : [B2].Interior.ColorIndex = 3

N° d'index palette = 3 => couleur rouge

Regarde l'aide VBA sur ColorIndex pour plus de détails.

----------------------------------------------------

Dans ton code VBA, tu n'as besoin que du rouge (celui de la palette)
et de "Aucune couleur" ; c'est pourquoi j'ai utilisé ColorIndex.

Si le code VBA ne marche pas, ça ne peut être qu'à cause de
l'emplacement réel de tes données => à vérifier et adapter.

----------------------------------------------------

Pour la suite, lis le message de via55 de 17:13.
 
> steve
Merci pour ces compléments d'infos!
La solution de via55 correspond tout à fait à mes attentes, et est beaucoup plus simple à déployer que de s'embeter à faire une macro.

Merci de ton aide, je regarderai tout de meme pourquoi cela ne fonctionne pas car ça me titille tout de même d'avoir passé autant de temps sans avoir réussi à le faire.

Cordilament,
> Gyom
 
Peut-être que le nom de ta feuille est plutôt "1.3 - Coordonnées fournisseurs" ?
Si la feuille était déjà bonne :

Est-ce bien la colonne A ? les lignes sont-elles bien celles de y : de 11 à ly ?

⚠  Si tu changes la colonne, par exemple en B, n'oublie pas de corriger ly :
ly = Range("B" & Rows.Count).End(xlUp).Row