j'essaye de faire une macro qui colore en jaune les cellules d'une plage
dont la valeur n'est pas trouvée dans les cellules d'une seconde plage.
J'ai une ou des erreurs mais aprés plusieurs heures de recherche je ne
trouve pas ce qui "bugge".. si vous pouviez m'aider, je vous en remercie
infiniment..
With Worksheets("Access").Range("B2:B500")
Set c = .Find(cellule.Value, LookIn:=xlValues)
If c Is Nothing Then
firstAddress = c.Address
Do
With cellule.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Sub Compare() Dim Part As Range, aD$,c as Object Set Part = Range("B2:B500")' plage 1 à comparer aD$=Range(Plage 2 à colorier).Address ' adresse de la plage 2 For Each c In Part Nm$ = c.Value If Evaluate("or(" & c.Address & "=" & aD$ & ")") Then With c.Font .Bold = False 'mettera en gras le mot pas trouvé End With Else With c.Font .Bold = True End With End If Next c End Sub
Bonsoir Trewan
Sub Compare()
Dim Part As Range, aD$,c as Object
Set Part = Range("B2:B500")' plage 1 à comparer
aD$=Range(Plage 2 à colorier).Address ' adresse de la plage 2
For Each c In Part
Nm$ = c.Value
If Evaluate("or(" & c.Address & "=" & aD$ & ")") Then
With c.Font
.Bold = False 'mettera en gras le mot pas trouvé
End With
Else
With c.Font
.Bold = True
End With
End If
Next c
End Sub
Sub Compare() Dim Part As Range, aD$,c as Object Set Part = Range("B2:B500")' plage 1 à comparer aD$=Range(Plage 2 à colorier).Address ' adresse de la plage 2 For Each c In Part Nm$ = c.Value If Evaluate("or(" & c.Address & "=" & aD$ & ")") Then With c.Font .Bold = False 'mettera en gras le mot pas trouvé End With Else With c.Font .Bold = True End With End If Next c End Sub
Frédo P
Celle ci est bonne Sub Compare() Dim Part As Range, aD$, c As Object Set Part = Range("B2:B500") ' plage 1 à comparer aD$ = Range("A1:A200").Address ' adresse de la plage 2 For Each c In Part If Evaluate("or(" & c.Address & "=" & aD$ & ")") Then With c.Font .Bold = False 'mettera en gras le mot pas trouvé End With Else With c.font ' ou .interior .Bold = True 'ou . colorindex End With End If Next c End Sub
"Frédo P" a écrit dans le message de news: #
Celle ci est bonne
Sub Compare()
Dim Part As Range, aD$, c As Object
Set Part = Range("B2:B500") ' plage 1 à comparer
aD$ = Range("A1:A200").Address ' adresse de la plage 2
For Each c In Part
If Evaluate("or(" & c.Address & "=" & aD$ & ")") Then
With c.Font
.Bold = False 'mettera en gras le mot pas trouvé
End With
Else
With c.font ' ou .interior
.Bold = True 'ou . colorindex
End With
End If
Next c
End Sub
"Frédo P" <nspfrdpst@9online.fr> a écrit dans le message de news:
#evLoRUZFHA.584@TK2MSFTNGP15.phx.gbl...
Celle ci est bonne Sub Compare() Dim Part As Range, aD$, c As Object Set Part = Range("B2:B500") ' plage 1 à comparer aD$ = Range("A1:A200").Address ' adresse de la plage 2 For Each c In Part If Evaluate("or(" & c.Address & "=" & aD$ & ")") Then With c.Font .Bold = False 'mettera en gras le mot pas trouvé End With Else With c.font ' ou .interior .Bold = True 'ou . colorindex End With End If Next c End Sub
"Frédo P" a écrit dans le message de news: #
isabelle
bonjour trewan,
voici une autre approche,
On Error Resume Next Application.DisplayAlerts = False For Each cellule In cellulesTri.Cells If IsError(Evaluate("=MATCH(" & _ cellule & ", Access!" & Range("B2:B500").Address & ",0)")) Then With cellule.Interior .ColorIndex = 6 .Pattern = xlSolid End With End If Err.Clear Next cellule Application.DisplayAlerts = True
isabelle
Salut,
j'essaye de faire une macro qui colore en jaune les cellules d'une plage dont la valeur n'est pas trouvée dans les cellules d'une seconde plage.
J'ai une ou des erreurs mais aprés plusieurs heures de recherche je ne trouve pas ce qui "bugge".. si vous pouviez m'aider, je vous en remercie infiniment..
With Worksheets("Access").Range("B2:B500") Set c = .Find(cellule.Value, LookIn:=xlValues) If c Is Nothing Then firstAddress = c.Address Do With cellule.Interior .ColorIndex = 6 .Pattern = xlSolid End With Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With
Next cellule
End Sub
bonjour trewan,
voici une autre approche,
On Error Resume Next
Application.DisplayAlerts = False
For Each cellule In cellulesTri.Cells
If IsError(Evaluate("=MATCH(" & _
cellule & ", Access!" & Range("B2:B500").Address & ",0)")) Then
With cellule.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
Err.Clear
Next cellule
Application.DisplayAlerts = True
isabelle
Salut,
j'essaye de faire une macro qui colore en jaune les cellules d'une plage
dont la valeur n'est pas trouvée dans les cellules d'une seconde plage.
J'ai une ou des erreurs mais aprés plusieurs heures de recherche je ne
trouve pas ce qui "bugge".. si vous pouviez m'aider, je vous en remercie
infiniment..
With Worksheets("Access").Range("B2:B500")
Set c = .Find(cellule.Value, LookIn:=xlValues)
If c Is Nothing Then
firstAddress = c.Address
Do
With cellule.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
On Error Resume Next Application.DisplayAlerts = False For Each cellule In cellulesTri.Cells If IsError(Evaluate("=MATCH(" & _ cellule & ", Access!" & Range("B2:B500").Address & ",0)")) Then With cellule.Interior .ColorIndex = 6 .Pattern = xlSolid End With End If Err.Clear Next cellule Application.DisplayAlerts = True
isabelle
Salut,
j'essaye de faire une macro qui colore en jaune les cellules d'une plage dont la valeur n'est pas trouvée dans les cellules d'une seconde plage.
J'ai une ou des erreurs mais aprés plusieurs heures de recherche je ne trouve pas ce qui "bugge".. si vous pouviez m'aider, je vous en remercie infiniment..
With Worksheets("Access").Range("B2:B500") Set c = .Find(cellule.Value, LookIn:=xlValues) If c Is Nothing Then firstAddress = c.Address Do With cellule.Interior .ColorIndex = 6 .Pattern = xlSolid End With Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With
Next cellule
End Sub
Frédo P
enfin avec la couleur à peine 5 secondes sur ma vielle bicyclette MMX 300Mhz
Sub Compare() Application.ScreenUpdating = False Dim Part As Range, aD$, c As Object Set Part = Range("B2:B500") ' plage 1 à colorier aD$ = Range("A1:A200").Address ' adresse de la plage 2 à comparer For Each c In Part If Evaluate("or(" & c.Address & "=" & aD$ & ")") Then With c.Interior .ColorIndex = xlNone End With With c.Font .Bold = False 'mettera en gras le mot pas trouvé End With Else With c.Interior .ColorIndex = 17 End With With c.Font .Bold = True End With End If Next c End Sub
enfin avec la couleur
à peine 5 secondes sur ma vielle bicyclette MMX 300Mhz
Sub Compare()
Application.ScreenUpdating = False
Dim Part As Range, aD$, c As Object
Set Part = Range("B2:B500") ' plage 1 à colorier
aD$ = Range("A1:A200").Address ' adresse de la plage 2 à comparer
For Each c In Part
If Evaluate("or(" & c.Address & "=" & aD$ & ")") Then
With c.Interior
.ColorIndex = xlNone
End With
With c.Font
.Bold = False 'mettera en gras le mot pas trouvé
End With
Else
With c.Interior
.ColorIndex = 17
End With
With c.Font
.Bold = True
End With
End If
Next c
End Sub
enfin avec la couleur à peine 5 secondes sur ma vielle bicyclette MMX 300Mhz
Sub Compare() Application.ScreenUpdating = False Dim Part As Range, aD$, c As Object Set Part = Range("B2:B500") ' plage 1 à colorier aD$ = Range("A1:A200").Address ' adresse de la plage 2 à comparer For Each c In Part If Evaluate("or(" & c.Address & "=" & aD$ & ")") Then With c.Interior .ColorIndex = xlNone End With With c.Font .Bold = False 'mettera en gras le mot pas trouvé End With Else With c.Interior .ColorIndex = 17 End With With c.Font .Bold = True End With End If Next c End Sub
Frédo P
Bonne soirée Isabelle Il s'appelle comment déjà le poisson si excellent chez nos cousins d'outre atlantique?
"isabelle" a écrit dans le message de news: O$
Bonne soirée Isabelle
Il s'appelle comment déjà le poisson si excellent chez nos cousins d'outre
atlantique?
"isabelle" <hoHoho@hohoHo> a écrit dans le message de news:
O$P32TUZFHA.2688@TK2MSFTNGP09.phx.gbl...
à toi également Fredo, pour le poisson c'est le "doré"
Moi qui pensait que c'était la barbotte ;-)
ChrisV
Bonjour Trewan,
Avec les plages Trié!B:B nommée ici "cTrie", et Access!B2:B500 nommée ici "aCC"
Sub zaza() Dim c As Range Application.ScreenUpdating = False Range("cTrie").Interior.ColorIndex = xlNone For Each c In Sheets("Trié").Range("B1:B" & [B65536].End(xlUp).Row) Set cH = Range("aCC").Find(c) If cH Is Nothing Then c.Interior.ColorIndex = 6 Next c MsgBox "Traitement effectué...!" Set cH = Nothing End Sub
Il serait, AMHA, préférable d'utiliser une mise en forme conditionnelle, beaucoup plus rapide sur un nombre de données important, et permettant surtout une "maj en temps réel"... la plage Trié!B:B étant sélectionnée: Format/Mise en forme conditionnelle.../Condition1: La formule est: =NON(OU(B1¬C)) Format.../Motifs... etc.
ChrisV
"trewan" a écrit dans le message de news: d7fjb6$e91$
Salut,
j'essaye de faire une macro qui colore en jaune les cellules d'une plage dont la valeur n'est pas trouvée dans les cellules d'une seconde plage.
J'ai une ou des erreurs mais aprés plusieurs heures de recherche je ne trouve pas ce qui "bugge".. si vous pouviez m'aider, je vous en remercie infiniment..
With Worksheets("Access").Range("B2:B500") Set c = .Find(cellule.Value, LookIn:=xlValues) If c Is Nothing Then firstAddress = c.Address Do With cellule.Interior .ColorIndex = 6 .Pattern = xlSolid End With Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With
Next cellule
End Sub
Bonjour Trewan,
Avec les plages Trié!B:B nommée ici "cTrie", et Access!B2:B500 nommée ici
"aCC"
Sub zaza()
Dim c As Range
Application.ScreenUpdating = False
Range("cTrie").Interior.ColorIndex = xlNone
For Each c In Sheets("Trié").Range("B1:B" & [B65536].End(xlUp).Row)
Set cH = Range("aCC").Find(c)
If cH Is Nothing Then c.Interior.ColorIndex = 6
Next c
MsgBox "Traitement effectué...!"
Set cH = Nothing
End Sub
Il serait, AMHA, préférable d'utiliser une mise en forme conditionnelle,
beaucoup plus rapide sur un nombre de données important, et permettant
surtout une "maj en temps réel"...
la plage Trié!B:B étant sélectionnée:
Format/Mise en forme conditionnelle.../Condition1: La formule est:
=NON(OU(B1¬C))
Format.../Motifs... etc.
ChrisV
"trewan" <etranenlevemoi@free.fr> a écrit dans le message de news:
d7fjb6$e91$1@s1.news.oleane.net...
Salut,
j'essaye de faire une macro qui colore en jaune les cellules d'une plage
dont la valeur n'est pas trouvée dans les cellules d'une seconde plage.
J'ai une ou des erreurs mais aprés plusieurs heures de recherche je ne
trouve pas ce qui "bugge".. si vous pouviez m'aider, je vous en remercie
infiniment..
With Worksheets("Access").Range("B2:B500")
Set c = .Find(cellule.Value, LookIn:=xlValues)
If c Is Nothing Then
firstAddress = c.Address
Do
With cellule.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Avec les plages Trié!B:B nommée ici "cTrie", et Access!B2:B500 nommée ici "aCC"
Sub zaza() Dim c As Range Application.ScreenUpdating = False Range("cTrie").Interior.ColorIndex = xlNone For Each c In Sheets("Trié").Range("B1:B" & [B65536].End(xlUp).Row) Set cH = Range("aCC").Find(c) If cH Is Nothing Then c.Interior.ColorIndex = 6 Next c MsgBox "Traitement effectué...!" Set cH = Nothing End Sub
Il serait, AMHA, préférable d'utiliser une mise en forme conditionnelle, beaucoup plus rapide sur un nombre de données important, et permettant surtout une "maj en temps réel"... la plage Trié!B:B étant sélectionnée: Format/Mise en forme conditionnelle.../Condition1: La formule est: =NON(OU(B1¬C)) Format.../Motifs... etc.
ChrisV
"trewan" a écrit dans le message de news: d7fjb6$e91$
Salut,
j'essaye de faire une macro qui colore en jaune les cellules d'une plage dont la valeur n'est pas trouvée dans les cellules d'une seconde plage.
J'ai une ou des erreurs mais aprés plusieurs heures de recherche je ne trouve pas ce qui "bugge".. si vous pouviez m'aider, je vous en remercie infiniment..
With Worksheets("Access").Range("B2:B500") Set c = .Find(cellule.Value, LookIn:=xlValues) If c Is Nothing Then firstAddress = c.Address Do With cellule.Interior .ColorIndex = 6 .Pattern = xlSolid End With Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With
Next cellule
End Sub
Frédo P
Effectivement ChrisV, 3 secondes "ChrisV" a écrit dans le message de news:
Bonjour Trewan,
Avec les plages Trié!B:B nommée ici "cTrie", et Access!B2:B500 nommée ici "aCC"
Sub zaza() Dim c As Range Application.ScreenUpdating = False Range("cTrie").Interior.ColorIndex = xlNone For Each c In Sheets("Trié").Range("B1:B" & [B65536].End(xlUp).Row) Set cH = Range("aCC").Find(c) If cH Is Nothing Then c.Interior.ColorIndex = 6 Next c MsgBox "Traitement effectué...!" Set cH = Nothing End Sub
Il serait, AMHA, préférable d'utiliser une mise en forme conditionnelle, beaucoup plus rapide sur un nombre de données important, et permettant surtout une "maj en temps réel"... la plage Trié!B:B étant sélectionnée: Format/Mise en forme conditionnelle.../Condition1: La formule est: =NON(OU(B1¬C)) Format.../Motifs... etc.
ChrisV
"trewan" a écrit dans le message de news: d7fjb6$e91$
Salut,
j'essaye de faire une macro qui colore en jaune les cellules d'une plage dont la valeur n'est pas trouvée dans les cellules d'une seconde plage.
J'ai une ou des erreurs mais aprés plusieurs heures de recherche je ne trouve pas ce qui "bugge".. si vous pouviez m'aider, je vous en remercie infiniment..
With Worksheets("Access").Range("B2:B500") Set c = .Find(cellule.Value, LookIn:=xlValues) If c Is Nothing Then firstAddress = c.Address Do With cellule.Interior .ColorIndex = 6 .Pattern = xlSolid End With Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress
End If End With
Next cellule
End Sub
Effectivement ChrisV, 3 secondes
"ChrisV" <chrisve@wanadoo.fr> a écrit dans le message de news:
eoDErYXZFHA.3824@TK2MSFTNGP10.phx.gbl...
Bonjour Trewan,
Avec les plages Trié!B:B nommée ici "cTrie", et Access!B2:B500 nommée ici
"aCC"
Sub zaza()
Dim c As Range
Application.ScreenUpdating = False
Range("cTrie").Interior.ColorIndex = xlNone
For Each c In Sheets("Trié").Range("B1:B" & [B65536].End(xlUp).Row)
Set cH = Range("aCC").Find(c)
If cH Is Nothing Then c.Interior.ColorIndex = 6
Next c
MsgBox "Traitement effectué...!"
Set cH = Nothing
End Sub
Il serait, AMHA, préférable d'utiliser une mise en forme conditionnelle,
beaucoup plus rapide sur un nombre de données important, et permettant
surtout une "maj en temps réel"...
la plage Trié!B:B étant sélectionnée:
Format/Mise en forme conditionnelle.../Condition1: La formule est:
=NON(OU(B1¬C))
Format.../Motifs... etc.
ChrisV
"trewan" <etranenlevemoi@free.fr> a écrit dans le message de news:
d7fjb6$e91$1@s1.news.oleane.net...
Salut,
j'essaye de faire une macro qui colore en jaune les cellules d'une plage
dont la valeur n'est pas trouvée dans les cellules d'une seconde plage.
J'ai une ou des erreurs mais aprés plusieurs heures de recherche je ne
trouve pas ce qui "bugge".. si vous pouviez m'aider, je vous en remercie
infiniment..
With Worksheets("Access").Range("B2:B500")
Set c = .Find(cellule.Value, LookIn:=xlValues)
If c Is Nothing Then
firstAddress = c.Address
Do
With cellule.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <>
firstAddress
Effectivement ChrisV, 3 secondes "ChrisV" a écrit dans le message de news:
Bonjour Trewan,
Avec les plages Trié!B:B nommée ici "cTrie", et Access!B2:B500 nommée ici "aCC"
Sub zaza() Dim c As Range Application.ScreenUpdating = False Range("cTrie").Interior.ColorIndex = xlNone For Each c In Sheets("Trié").Range("B1:B" & [B65536].End(xlUp).Row) Set cH = Range("aCC").Find(c) If cH Is Nothing Then c.Interior.ColorIndex = 6 Next c MsgBox "Traitement effectué...!" Set cH = Nothing End Sub
Il serait, AMHA, préférable d'utiliser une mise en forme conditionnelle, beaucoup plus rapide sur un nombre de données important, et permettant surtout une "maj en temps réel"... la plage Trié!B:B étant sélectionnée: Format/Mise en forme conditionnelle.../Condition1: La formule est: =NON(OU(B1¬C)) Format.../Motifs... etc.
ChrisV
"trewan" a écrit dans le message de news: d7fjb6$e91$
Salut,
j'essaye de faire une macro qui colore en jaune les cellules d'une plage dont la valeur n'est pas trouvée dans les cellules d'une seconde plage.
J'ai une ou des erreurs mais aprés plusieurs heures de recherche je ne trouve pas ce qui "bugge".. si vous pouviez m'aider, je vous en remercie infiniment..
With Worksheets("Access").Range("B2:B500") Set c = .Find(cellule.Value, LookIn:=xlValues) If c Is Nothing Then firstAddress = c.Address Do With cellule.Interior .ColorIndex = 6 .Pattern = xlSolid End With Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress