XL 2010 MFC sur plusieurs tableaux

arvin

XLDnaute Occasionnel
bonjour à tous,
grâce au forum, j'ai avancé sur ma macro : je recherche si 1 nom (présent dans la feuil1) se trouve dans un tableau (feuil2) et, si oui il se colorie en rouge
comment faire pour que la macro cherche dans le premier tableau , et dans un 2e tableau voire un 3e tableau .....

ai essayé : Array("a2:i20") + Array("k3:m11").......ne marche pas

merci à tous
 

Pièces jointes

  • CouleurEtAjout_macro.xlsm
    22.6 KB · Affichages: 17

arvin

XLDnaute Occasionnel
hello
grçace au forum et encore à Mr BOISGONTIER (dont le site est une mine !) , j'ai modifié mon code mais....si j'i beaucoup de noms à chercher dans beaucoup de cellules , cela va être compliqué....peut être passer par un userform...je sais pas trop , je bloque
j'ai essayé mot1 = "toto" Or mot1 = "ines" mais ne marche pas....

Sub postes()

mot1 = "toto"
mot2 = "jean"

mot1= "toto"
For Each c In Range("a2:i20" & [A65000].End(xlUp).Row)
p = InStr(UCase(c), UCase(mot1))
If p > 0 Then c.Characters(Start:=p, Length:=Len(mot1)).Font.Color = vbRed
Next c


For Each d In Range("k3:m11" & [A65000].End(xlUp).Row)
p = InStr(UCase(d), UCase(mot1))
If p > 0 Then d.Characters(Start:=p, Length:=Len(mot1)).Font.Color = vbRed
Next d


mot2 = "jean"
For Each c In Range("a2:i20" & [A65000].End(xlUp).Row)
p = InStr(UCase(c), UCase(mot2))
If p > 0 Then c.Characters(Start:=p, Length:=Len(mot2)).Font.Color = vbRed
Next c

For Each d In Range("k3:m11" & [A65000].End(xlUp).Row)
p = InStr(UCase(d), UCase(mot2))
If p > 0 Then d.Characters(Start:=p, Length:=Len(mot2)).Font.Color = vbRed
Next d

End Sub
 

Pièces jointes

  • CouleurEtAjout_macro.xlsm
    19.9 KB · Affichages: 3

job75

XLDnaute Barbatruc
Bonsoir arvin,

Je me suis contenté de rechercher la correspondance de la totalité des textes des cellules entre les 2 feuilles, voyez le fichier joint et cette macro :
VB:
Sub Bouton1_Cliquer()
Dim F1P1 As Range, F1P2 As Range, F2P1 As Range, F2P2 As Range, d As Object, n As Byte, c As Range
Set F1P1 = Feuil1.[A2:I20]: Set F1P2 = Feuil1.[K3:M11] 'tableaux de la 1ère feuille, à adapter
Set F2P1 = Feuil2.[A1:I20]: Set F2P2 = Feuil2.[K2:M10] 'tableaux de la 2ème feuille, à adapter
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
Application.ScreenUpdating = False
For n = 1 To 2 '1 colore en Feuil1, 2 colore en Feuil2
    d.RemoveAll
    IIf(n = 1, F1P1, F2P1).Parent.Protect "", UserInterfaceOnly:=True
    '---étude du 1er tableau---
    For Each c In IIf(n = 1, F2P1, F1P1)
        If c <> "" Then d(c.Value) = ""
    Next c
    IIf(n = 1, F1P1, F2P1).Font.ColorIndex = xlNone
    For Each c In IIf(n = 1, F1P1, F2P1)
        If d.exists(c.Value) Then c.Font.ColorIndex = 3
    Next c
    '---étude du 2ème tableau---
    d.RemoveAll
    For Each c In IIf(n = 1, F2P2, F1P2)
        If c <> "" Then d(c.Value) = ""
    Next c
    IIf(n = 1, F1P2, F2P2).Font.ColorIndex = xlNone
    For Each c In IIf(n = 1, F1P2, F2P2)
        If d.exists(c.Value) Then c.Font.ColorIndex = 3
    Next c
Next n
End Sub
La macro utilise le Dictionary pour éviter des boucles imbriquées qui prennent trop de temps.

A+
 

Pièces jointes

  • CouleurEtAjout_macro(1).xlsm
    23.2 KB · Affichages: 4

arvin

XLDnaute Occasionnel
bonsoir , merci beaucoup pour ta réponse
cela fonctionne à merveille
par contre, si je veux rajouter une comparaison avec un 3e tableau....cela ne fonctionne pas
cela ne doit pas être aussi simple......peux tu regarder ?
j'ai essayé d'adapter le code mais connais pas le IIF.....
 

Pièces jointes

  • CouleurEtAjout_macrov1.xlsm
    21.6 KB · Affichages: 2

job75

XLDnaute Barbatruc
Mon code est pourtant clair : il y a "étude du 1er tableau", "étude du 2ème tableau".

Donc "étude du 3ème tableau" coule de source, fichier (2).
 

Pièces jointes

  • CouleurEtAjout_macro(2).xlsm
    23.4 KB · Affichages: 3

arvin

XLDnaute Occasionnel
désolé : serait il possible que si je définis une liste de noms, la macro place la cellule en rouge en fonction de cette liste ?
exemple
en B5 (ou par exemple b5:C4) , feuille 2 : si
jean ou toto ou simon ou ines
se trouvent dans cette cellule alors , en feuille 1 , la cellule se place en rouge ?

merci beaucoup
 

Pièces jointes

  • CouleurEtAjout_macrov2.xlsm
    23.7 KB · Affichages: 1

Discussions similaires

Réponses
4
Affichages
283

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa