Tester la présence de plusieurs agents dans une liste

Bonjour le forum !

Voilà plusieurs heures que je bloque et que je cherche partout sans trouver une réponse simple à une demande qui me semble simple (mais qui ne l'est peut-être pas ?)

Au départ j'ai une liste d'agents sur la feuille 1 (appelons-la "liste A") et une deuxième liste d'agents sur la feuille 2 (appelons-la "Liste B").

Mon objectif final est le suivant : Je cherche à dire "pour chaque agent de la liste A, si il existe dans la liste B, le colorer en rouge, sinon le colorer en vert. "

Pour commencer "petit" j'ai fait un code "plus simple" qui dit :

""pour chaque agent de la liste A, si il est égal à "Agent 9", le colorer en rouge, sinon le colorer en vert. "

Et ça marche (Hallelujah ça m'a déjà pris des plombes, la honte !)

Sauf que maintenant, je cherche à remplacer "si Agent est égal à 'agent 9' ' par "si Agent est présent dans la liste B" et je n'y arrive pas.

Voilà mon code de base :

Sub test()

Dim Cel As Range 'plage de données
Dim Agent As Range 'cellule de la plage de données

Set Cel = Range("b6:b" & Range("b6").End(xlDown).Row)

For Each Agent In Cel
    If Agent.Value = "agent 9" Then 'si l'agent est égal à "agent 9"
    Agent.Font.Color = RGB(255, 0, 0) 'alors colorer en rouge
    Else
    Agent.Font.Color = RGB(0, 255, 0) 'sinon colorer en vert
End If
Next
End Sub

Auriez-vous une idée pour résoudre mon problème ?

24gaz0line.zip (9.52 Ko)

Bonjour

Une solution par macro

Sub test()
Dim J As Long

  For J = 6 To Range("B" & Rows.Count).End(xlUp).Row
    If Application.CountIf(Sheets("Feuil2").Columns("A"), Range("B" & J)) > 0 Then
      Range("B" & J).Font.Color = RGB(255, 0, 0)
    Else
      Range("B" & J).Font.Color = RGB(0, 255, 0)
    End If
  Next J
End Sub

Tu pourrais avoir le même résultat avec une Mise En Forme Conditionnelle


Avec un fichier qui reprend les 2 solutions

Oui je sais mais en réalité ce bout de code fait partie d'une procédure plus complexe :

En réalité ma liste B est la dénomination de chaque onglet d'un classeur.

Ma macro au final dira : si tu trouve l'agent dans la liste des onglets, alors colle la ligne de l'agent dans l'onglet de l'agent.

Si tu ne trouve pas l'agent, créé un onglet à son nom puis copie la ligne sur ce nouvel onglet.

j'ai simplifié pour cibler mon problème, mais au final je ne colorie rien ^^

Merci beaucoup pour ta réponse je regarde ça et je te fais un retour

Re !

Un immense merci à toi Banzai64 , tu as résolu mon problème, je peux continuer à écrire le reste de ma macro !! Vraiment merci !

Et je suis désolée que tu te sois embêté pour rien en expliquant sur le fichier la solution "mise en forme conditionnelle", j'aurais dû préciser que je ne souhaitais qu'une solution VBA et qu'il ne fallait pas s'attarder sur la couleur mais uniquement sur le côté "recherche dans une plage de plusieurs données", j'essaierai d'être plus précise la prochaine fois !

En tous cas merci encore !!

Rechercher des sujets similaires à "tester presence agents liste"