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

Résolu/Fermé
59Bzik Messages postés 13 Date d'inscription vendredi 17 août 2018 Statut Membre Dernière intervention 22 août 2018 - 22 août 2018 à 08:14
PapyLuc51 Messages postés 4302 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 25 avril 2024 - 23 août 2018 à 07:58
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

PapyLuc51 Messages postés 4302 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 25 avril 2024 1 406
Modifié le 22 août 2018 à 08:42
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
59Bzik Messages postés 13 Date d'inscription vendredi 17 août 2018 Statut Membre Dernière intervention 22 août 2018
22 août 2018 à 13:07
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
59Bzik Messages postés 13 Date d'inscription vendredi 17 août 2018 Statut Membre Dernière intervention 22 août 2018
22 août 2018 à 13:08
Comment faire pour protéger la MFC d'une plage de cellules.
0
59Bzik Messages postés 13 Date d'inscription vendredi 17 août 2018 Statut Membre Dernière intervention 22 août 2018
Modifié le 22 août 2018 à 13:22
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
PapyLuc51 Messages postés 4302 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 25 avril 2024 1 406
22 août 2018 à 13:37
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
59Bzik Messages postés 13 Date d'inscription vendredi 17 août 2018 Statut Membre Dernière intervention 22 août 2018
22 août 2018 à 17:16
Si je peux avoir un code vba c'est plus sûr. Merci bcp
0
PapyLuc51 Messages postés 4302 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 25 avril 2024 1 406
22 août 2018 à 18:20
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
59Bzik Messages postés 13 Date d'inscription vendredi 17 août 2018 Statut Membre Dernière intervention 22 août 2018
Modifié le 22 août 2018 à 19:40
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
PapyLuc51 Messages postés 4302 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 25 avril 2024 1 406 > 59Bzik Messages postés 13 Date d'inscription vendredi 17 août 2018 Statut Membre Dernière intervention 22 août 2018
22 août 2018 à 20:15
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
59Bzik Messages postés 13 Date d'inscription vendredi 17 août 2018 Statut Membre Dernière intervention 22 août 2018
22 août 2018 à 20:20
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
PapyLuc51 Messages postés 4302 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 25 avril 2024 1 406 > 59Bzik Messages postés 13 Date d'inscription vendredi 17 août 2018 Statut Membre Dernière intervention 22 août 2018
23 août 2018 à 07:58
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