Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comparer les données dans 2 plages

14 réponses
Avatar
trewan
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..

Voilà la macro :

Sub compare()

Dim cellulesTri, cellule As Range

cellulesTri = Worksheets("Trié").Range("B:B").Select

For Each cellule In cellulesTri.Cells

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

10 réponses

1 2
Avatar
Frédo P
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
Avatar
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:
#
Avatar
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..

Voilà la macro :

Sub compare()

Dim cellulesTri, cellule As Range

cellulesTri = Worksheets("Trié").Range("B:B").Select

For Each cellule In cellulesTri.Cells

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


Avatar
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
Avatar
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$
Avatar
isabelle
à toi également Fredo, pour le poisson c'est le "doré"

isabelle


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$




Avatar
Frédo P
Oh oui t'as raison!
à toi également Fredo, pour le poisson c'est le "doré"



Avatar
ClémentMarcotte
Bonjour,

à toi également Fredo, pour le poisson c'est le "doré"


Moi qui pensait que c'était la barbotte ;-)

Avatar
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..

Voilà la macro :

Sub compare()

Dim cellulesTri, cellule As Range

cellulesTri = Worksheets("Trié").Range("B:B").Select

For Each cellule In cellulesTri.Cells

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


Avatar
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..

Voilà la macro :

Sub compare()

Dim cellulesTri, cellule As Range

cellulesTri = Worksheets("Trié").Range("B:B").Select

For Each cellule In cellulesTri.Cells

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






1 2