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

Résolu
59Bzik Messages postés 13 Statut Membre -  
PapyLuc51 Messages postés 4570 Date d'inscription   Statut Membre Dernière intervention   -
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. PapyLuc51 Messages postés 4570 Date d'inscription   Statut Membre Dernière intervention   1 513
     
    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. 59Bzik Messages postés 13 Statut Membre
       
      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. 59Bzik Messages postés 13 Statut Membre
       
      Comment faire pour protéger la MFC d'une plage de cellules.
      0
    3. 59Bzik Messages postés 13 Statut Membre
       
      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. PapyLuc51 Messages postés 4570 Date d'inscription   Statut Membre Dernière intervention   1 513
     
    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. 59Bzik Messages postés 13 Statut Membre
       
      Si je peux avoir un code vba c'est plus sûr. Merci bcp
      0
  3. PapyLuc51 Messages postés 4570 Date d'inscription   Statut Membre Dernière intervention   1 513
     
    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. 59Bzik Messages postés 13 Statut Membre
       
      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
      1. PapyLuc51 Messages postés 4570 Date d'inscription   Statut Membre Dernière intervention   1 513 > 59Bzik Messages postés 13 Statut Membre
         
        Je 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
    2. 59Bzik Messages postés 13 Statut Membre
       
      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
      1. PapyLuc51 Messages postés 4570 Date d'inscription   Statut Membre Dernière intervention   1 513 > 59Bzik Messages postés 13 Statut Membre
         
        Bonjour

        C'est bien tu as trouvé ta solution -
        Si c'est le cas n'oublie pas de marquer le fil en résolu

        Cordialement
        0