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

Comparaison de deux fichiers

4 réponses
Avatar
Pedro
J'ai une liste de noms dans la colonne A d'un classeur 1=20
et une autre dans un classeur 2.=20
Je voudrais cr=E9er une macro qui me permettra de comparer=20
chaque ligne de cellule de Liste1 avec chaque cellule de=20
liste2 et:

1- mettre la cellule de liste1 en rouge si une=20
correspondance est trouv=E9e dans liste2

2- ins=E9rer une colonne et ajouter "OK" devant toute les=20
cellules qui sont en rouge

4 réponses

Avatar
BJ
salut,
ceci est un début de macro qui pourras t'aider
tu dois avoir les 2 fichiers ouvert; Classeur1 et Classeur2 pour lancer la
macro
nomme "myliste" l'onglet Feuil1 de Classeur1
nomme "lesnoms" l'onglet Feuil1 de Classeur2
mets cette macro en module de Classeur2
J'ai seulement traité : en classeur2 mettre "ok" si le nom est présent dans
l'autre classeur.
Dans ma Bal si besoin de plus de trucs
Bruno

Sub Macro1()
Dim nom(20000) As String
Windows("Classeur1.xls").Activate
nligne = Sheets("myliste").Range("A65536").End(xlUp).Row
For k = 2 To nligne
nom(k) = Sheets("myliste").Cells(k, 1).Value
Next k
Windows("Classeur2.xls").Activate
For k = 2 To Sheets("lesnoms").Range("A65536").End(xlUp).Row
For c = 2 To nligne
If nom(c) = Sheets("lesnoms").Cells(k, 1).Value Then
Sheets("lesnoms").Cells(k, 2) = "ok"
Exit For
End If
Next c
Next k
End Sub

Pedro a écrit dans le message :
060501c35fee$4b29c670$
J'ai une liste de noms dans la colonne A d'un classeur 1
et une autre dans un classeur 2.
Je voudrais créer une macro qui me permettra de comparer
chaque ligne de cellule de Liste1 avec chaque cellule de
liste2 et:

1- mettre la cellule de liste1 en rouge si une
correspondance est trouvée dans liste2

2- insérer une colonne et ajouter "OK" devant toute les
cellules qui sont en rouge
Avatar
Frédéric Sigonneau
Bonsoir,

Je pense que tu pourrais t'inspirer de ce code paru ici-même il y a qq temps (je
n'ai pas noté l'auteur). Il traite 2 colonnes de la même feuille du même
classeur, mais rien ne s'oppose, AMA, à ce que les plages qui renseignent les
tableaux (Eleves2002 et Eleves2003 dans la procédure de test) soient dans des
feuilles de classeurs différents à partir du moment où les 2 classeurs sont
ouverts. A adapter et à tester :

'======================== 'comparer deux plages de cellules en passant par des tableaux

Sub test()
Dim Eleves2002, Eleves2003, Partis(), Nouveaux()

Eleves2002 = Range("A2:A20").Value
Eleves2003 = Range("B2:B20").Value

CompareTableaux Eleves2002, Eleves2003, Nouveaux
CompareTableaux Eleves2003, Eleves2002, Partis

Range("D2").Resize(UBound(Nouveaux) + 1).Value = _
Application.Transpose(Nouveaux)
Range("E2").Resize(UBound(Partis) + 1).Value = _
Application.Transpose(Partis)

End Sub


Sub CompareTableaux(TabSource, TabCible, TabResult())
'renvoie dans TabResult les éléments de TabCible
'qui ne sont pas dans TabSource
Dim i&, j&, k&

k = 0
For j = LBound(TabCible, 1) To UBound(TabCible, 1)
If IsError(Application.Match(TabCible(j, 1), TabSource, 0)) Then
ReDim Preserve TabResult(k)
TabResult(k) = TabCible(j, 1)
k = k + 1
End If
Next j

End Sub
'========================
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


J'ai une liste de noms dans la colonne A d'un classeur 1
et une autre dans un classeur 2.
Je voudrais créer une macro qui me permettra de comparer
chaque ligne de cellule de Liste1 avec chaque cellule de
liste2 et:

1- mettre la cellule de liste1 en rouge si une
correspondance est trouvée dans liste2

2- insérer une colonne et ajouter "OK" devant toute les
cellules qui sont en rouge


Avatar
AV
Paramètres à adapter à ton cas :
* On lance la macro à partir de la feuille active du classeur "Classeur1"
contenant la liste en A1:Ax
* Le classeur "Classeur2" est ouvert
* La liste, dans le classeur "Classeur2", se trouve en "Feuil1" A1:A100

Sub zz_Dble()
For Each c In Range("A1:A" & [A65536].End(3).Row)
If Evaluate("isnumber(match(" & c.Address & ",[Classeur2]Feuil1!A1:A100,0))")
Then
c.Font.ColorIndex = 3
c(1, 2) = "OK"
End If
Next
End Sub

PS : Dans la mesure où les 2 classeurs sont ouverts, on pourrait utiliser la
Mise en Forme Conditionnelle pour barbouiller les doublons en rouge
AV

"Pedro" a écrit dans le message news:
060501c35fee$4b29c670$
J'ai une liste de noms dans la colonne A d'un classeur 1
et une autre dans un classeur 2.
Je voudrais créer une macro qui me permettra de comparer
chaque ligne de cellule de Liste1 avec chaque cellule de
liste2 et:

1- mettre la cellule de liste1 en rouge si une
correspondance est trouvée dans liste2

2- insérer une colonne et ajouter "OK" devant toute les
cellules qui sont en rouge
Avatar
AV
Merci pour la Macro.


Y a pas de quoi !
C'était avec plaisir !

AV