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

Résolu
Gyom -  
 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

  1. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    1. Gyom
       
      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
      0
      1. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759 > 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
        0
      2. Gyom > via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention  
         
        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!
        0
  2. steve
     
    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
    1. Gyom
       
      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
      0
      1. steve > 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.
         
        0
      2. Gyom > 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,
        0
      3. steve > 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
         
        0