Détecter une valeur donnée dans une plage en vba

Résolu
Bonjour le forum

Comment écrire un code vba Excel qui dit que:
Si la valeur de la cellule C6 est égale à la valeur de l'une des cellules de la plage (E3:H4) Alors la cellule D6 se colore en rouge.
Merci d'avance.

3 réponses

  1. Bonjour,

    Sans VBA, une MFC sur D6 avec la formule

    =NB.SI(E3:H4;C6)=1 ----Ou---- =NB.SI(E3:H4;C6)>0

    Cordialement
    0
    1. Ok merci. Mais le problème c'est que MFC est très fragile. Le fait de changer format (Bordure par exemple) des cellules concernées. Leurs MFC s'effacent.
      0
    2. Comment faire pour protéger la MFC d'une plage de cellules.
      0
    3. Comment faire pour protéger la MFC d'une plage de cellules?
      La MFC s'écrase lorsqu'on passe par clique bouton droit de la sourie--->format des cellules-->Bordure.
      Mais Bordure direct du ruban, ne l'écrase pas.
      0
  2. La MFC ne s'efface pas si tu changes la format de la cellule individuellement (couleur / bordure / police).

    Par contre c'est vrai qu'elle s'efface si tu utilises la brosse de reproduction de mise en forme qui englobe toutes les mises en forme de la cellule souche.

    Cordialement
    0
    1. Si je peux avoir un code vba c'est plus sûr. Merci bcp
      0
  3. En attendant que les spécialistes du code VBA répondent ; je ne suis pas du tout au fait du langage alors j'ai fait un enregistrement via l'onglet développeur pour mettre en place la MFC ; ça a l'air de fonctionner.

    https://www.cjoint.com/c/HHwpNdNy4z8

    Cordialement
    0
    1. J'ai utilié ce code mais ça se bloque au niveau de : If c = Cells( i , 1) Then

      With Worksheets("Preparation Emplois").Range("M5:T7")
      For i = 10 To 14
      For j = 13 To 20
      Set c = .Find(Cells(i, 1), LookIn:=xlValues)

      If c = Cells( i , 1) Then ' ça ce bloque ici'

      Cells(i, j).Interior.ColorIndex = 43
      End If
      Next j
      Next i
      End With

      Mais s'il s'agit d'une seule cellule, ça marche
      Çàd: Cells(10 , 1) au lieu de Cells( i , 1)

      à condition que la valeur de Cells(10,1) est trouvée dans la plage. Si non il réclame erreur.

      Y'a t-il une correction s'ils vous plait ?
      0
    2. @59BzikJe suis arrivé au bout de mes compétences, comme je le disais je ne connais pas du tout le langage VBA, essaie de ton coté de faire avec l'enregistreur de macro.

      Maintenant je te laisse aux bons soins des spécialistes en la matière.

      Bonne continuation
      Cordialement
      0
    3. Ok merci. j'ai trouvé la solution

      With Worksheets("Preparation Emplois").Range("M5:T7")
      For i = 10 To 144
      For j = 13 To 20
      Set c = .Find(Cells(i, 1), LookIn:=xlValues)
      If c Is Nothing Then Cells(i, j).Interior.ColorIndex = 0
      Next j
      Next i
      End With
      0