IDENTIFICATION DES ELEMENTS PROVENANT DE 2 LISTES
Le
elodie005

Bonjour à tous,
J'ai une nouvelle fois besoin de votre aide, j'espère que vous pourrez
m'aider
J'ai un fichier Exel dans lequel j'ai en la feuil 1 dans la colonne A
une liste de mot et en feuil2 également dans la colonne A une autre
liste de mot (environ 2000 mots).
L'ideal pour moi serait d'avoir une macro qui affiche sur les autres
feuilles du classeur, en vert les cellules qui contiennent (et non pas
strictement identique) un mot de la feuil 1 et en rouge celles qui
contiennent un mot de la feuil 2 (et rien si le mot n'est issu ni de
la liste de la feuil1 ni celui de la feuil2)
Est-ce réalisable? Ou il y a t-il une autre solution plus simple?
Vous remerciant par avance pour votre aide
J'ai une nouvelle fois besoin de votre aide, j'espère que vous pourrez
m'aider
J'ai un fichier Exel dans lequel j'ai en la feuil 1 dans la colonne A
une liste de mot et en feuil2 également dans la colonne A une autre
liste de mot (environ 2000 mots).
L'ideal pour moi serait d'avoir une macro qui affiche sur les autres
feuilles du classeur, en vert les cellules qui contiennent (et non pas
strictement identique) un mot de la feuil 1 et en rouge celles qui
contiennent un mot de la feuil 2 (et rien si le mot n'est issu ni de
la liste de la feuil1 ni celui de la feuil2)
Est-ce réalisable? Ou il y a t-il une autre solution plus simple?
Vous remerciant par avance pour votre aide
La macro suivante cherche dans les feuilles Feuil1 et Feuil2 en colonne
A pour chaque cellule de la colonne A de Feuil3. Cependant, elle ne
cherche pas s'il y a des espaces autour du mot; par exemple, si j'ai
"cas" sur Feuil3 et "castor"sur Feuil1, la cellule sera verte. Je peux
tester la présence d'espace, mais cela pose le cas de la présence
possible de signes de ponctuation :
Sub test()
Dim c As Range, Teste As Integer
With Sheets("Feuil3")
For Each c In .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp))
If c.Value <> "" Then
Teste = 0
Set s = [Feuil1!A:A].Find(c.Value, , , xlPart)
If Not s Is Nothing Then Teste = 1
Set s = [Feuil1!A:A].Find(c.Value, , , xlPart)
If Not s Is Nothing Then Teste = 1
If Teste = 1 Then
c.Interior.ColorIndex = 43
Else
c.Interior.ColorIndex = 3
End If
End If
Next c
End With
End Sub
Cordialement.
Daniel
Tu pourrais le faire en utilisant une mise en forme conditionnelle.
A ) Attribue en nom (insertion / nom / définir) à la colonne A1:Ax de la feuil1
B ) Attribue aussi un nom à la plage A1:Ax de la feuil2
Pour ce faire, tu peux utiliser la fonction "Decaler()" pour que ta plage se mettre à jour...
Les 2 formules pour la mise en forme conditionnelle pour les cellules concernées en feuil3 par exemple :
=ESTNUM(EQUIV("*"&A1&"*";Plg;0)) 'Plg -> plage feuil1
=ESTNUM(EQUIV("*"&A1&"*";Rg;0)) 'Rg -> plage feuil2
Si A1 de la feuil3 contient au moins une chaîne de caractères définie dans la plage "Plg" la mise en forme
s'appliquera... il en est de même pour la feuil2.
Qu'est-ce qui doit se passer si la chaîne de caractères appartient en même temps à la feuil1 et à la feuil2 ? Est-ce
possible ? Si oui, la mise en forme conditionnelle est à compléter!
MichD
--------------------------------------------
"elodie005" a écrit dans le message de groupe de discussion :
Bonjour à tous,
J'ai une nouvelle fois besoin de votre aide, j'espère que vous pourrez
m'aider...
J'ai un fichier Exel dans lequel j'ai en la feuil 1 dans la colonne A
une liste de mot et en feuil2 également dans la colonne A une autre
liste de mot (environ 2000 mots).
L'ideal pour moi serait d'avoir une macro qui affiche sur les autres
feuilles du classeur, en vert les cellules qui contiennent (et non pas
strictement identique) un mot de la feuil 1 et en rouge celles qui
contiennent un mot de la feuil 2 (et rien si le mot n'est issu ni de
la liste de la feuil1 ni celui de la feuil2)
Est-ce réalisable? Ou il y a t-il une autre solution plus simple?
Vous remerciant par avance pour votre aide
Ceci recherche dans toutes les feuilles du classeur à l'exception de feuil1 et feuils2 dans la colonne A une
partie du mot contenu dans feuil 1 ou/et dans feuil 2
En rouge ceux qui sont en feuil 2
En vert ceux qui sont en feuil 1
Et d'une autre couleur ceux qui sont dans les deux
'------------------
Sub jj()
Dim sh As Worksheet
derlg = Sheets("feuil1").Cells(Rows.Count, 1).End(3).Row
Set plage1 = Sheets("feuil1").Range("a2:a" & derlg)
derlg = Sheets("feuil2").Cells(Rows.Count, 1).End(3).Row
Set plage2 = Sheets("feuil2").Range("a2:a" & derlg)
For Each sh In ThisWorkbook.Worksheets
If sh.Name For i = 2 To Sheets(sh.Name).Cells(Rows.Count, 1).End(3).Row
If IsNumeric(Application.Match("*" & sh.Cells(i, 1) & "*", plage1, 0)) Then _
sh.Cells(i, 1).Interior.ColorIndex = 4
If IsNumeric(Application.Match("*" & sh.Cells(i, 1) & "*", plage2, 0)) Then _
sh.Cells(i, 1).Interior.ColorIndex = 3
If IsNumeric(Application.Match("*" & sh.Cells(i, 1) & "*", plage1, 0)) And _
IsNumeric(Application.Match("*" & Cells(i, 1) & "*", plage2, 0)) Then _
sh.Cells(i, 1).Interior.ColorIndex = 7
Next
End If
Next
End Sub
"------------------------
--
Salutations
JJ
"elodie005"
Bonjour à tous,
J'ai une nouvelle fois besoin de votre aide, j'espère que vous pourrez
m'aider...
J'ai un fichier Exel dans lequel j'ai en la feuil 1 dans la colonne A
une liste de mot et en feuil2 également dans la colonne A une autre
liste de mot (environ 2000 mots).
L'ideal pour moi serait d'avoir une macro qui affiche sur les autres
feuilles du classeur, en vert les cellules qui contiennent (et non pas
strictement identique) un mot de la feuil 1 et en rouge celles qui
contiennent un mot de la feuil 2 (et rien si le mot n'est issu ni de
la liste de la feuil1 ni celui de la feuil2)
Est-ce réalisable? Ou il y a t-il une autre solution plus simple?
Vous remerciant par avance pour votre aide
Il y a u Sh qui s'est perdu en cours de route ;o)
Replacer
par
If IsNumeric(Application.Match("*" & sh.Cells(i, 1) & "*", plage1, 0)) And _
IsNumeric(Application.Match("*" & sh.Cells(i, 1) & "*", plage2, 0)) Then _
sh.Cells(i, 1).Interior.ColorIndex = 7
--
Salutations
JJ
"Jacky"
résultat que je veux obtenir par contre elle ne marche que quand le
mot est strictement identique.
En effet si en feuille 3 j'ai TELEPHONE (4%) et en feuille 1 juste
TELEPHONE, le TELEPHONE de la feuille 3 n'est pas reconnu.
Pouvez-vous corriger cela?
Merci d'avance
On 25 juin, 14:23, "MichD"
Par exemple, cette formule vérifie si dans la plage de la feuil1, la chaîne de caractères de la plage Plg existe
dans la plage Rg
Plg = Plage nommée de tes données de la colonne en Feuil1
Rg= Plage nommée de tes données de la colonne en Feuil3
=SOMME(SI(ESTNUM(EQUIV("*"&Plg&"*";Rg;0));1))>0
Le même principe s'applique pour les données de la feuil2
MichD
--------------------------------------------