Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
bonjour
utilisateur très moyen
j'ai sur une feuille 1 de A1 à A10 une liste de noms
j'ai sur une feuille 2 de A1 à A12 une liste de noms
je voudrais par une formule simple comparer les deux feuilles et me dire les noms qui sont dans la feuille 2 et qui ne sont pas dans la feuille 1 ou les noms qui ne sont plus dans la feuille 2 et qui étaient dans la feuille 1
j'ai recherché sur plusieurs sites mais ne trouve pas de réponse claire expliquée et qui marche
merci d'avance
excel 2003 vista
Question très clair, mais si tu avais pu faire un petit fichier, je t'aurais répondu encore plus vite 😉
Voici ci-joint une solution utilisant la MFC (Mise en Forme Conditionnel), mais si tu préfère, il est possible de faire autrement 😉
Astuce :
Lors de l'utilisation d'une MFC, Excel ne permet pas de faire référence à une autre feuille. Or ton cas de figure le nécessite!!!!
Mais il y a une parade, il suffit de nommer tes cellules
-> sélectionner ta liste 1 sur la feuille 1 puis "insertion" / "nom" / "définir" et donner par exemple le nom : ListeFeuille1
-> sélectionner ta liste 2 sur la feuille 2 puis "insertion" / "nom" / "définir" et donner par exemple le nom : ListeFeuille2
Et maintenant tu peux faire ta MFC. Voici les fonctions que j'ai utilisé :
-> SI() : je suppose que tu l'as connais? Pas besoin d'explication?
-> NB.SI() : permet de compter le nombre de cellule correspondant au critère voulu.
Je me permets quand même de t'envoyer cette petite macro commentée même si une solution par formule reste plus efficace :
Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim pl1 As Range 'déclare la variable pl1 (PLage 1)
Dim pl2 As Range 'déclare la variable pl2 (PLage 2)
Dim r As Range 'déclare la variable r (Recherche)
Dim pa As String 'déclare la variable pa (Première Adresse)
Dim mes As String 'déclare la variable mes (MESsage)
Application.ScreenUpdating = False 'masque les changements à l'écran
Set pl1 = Sheets("Feuil1").Range("A1:A" & Sheets("Feuil1").Range("A65536").End(xlUp).Row) 'définit la plage pl1
Set pl2 = Sheets("Feuil2").Range("A1:A" & Sheets("Feuil2").Range("A65536").End(xlUp).Row) 'définit la plage pl2
For Each cel In pl1 'boucle 1 : sur toutes les cellules éditées cel de la plage pl1
Set r = pl2.Find(cel.Value) 'définit la variable r (recherche des occurrences de cel dans la plage pl2)
If r Is Nothing Then 'condition : si aucune occurrence de cel n'est trouvée dans la plage pl2
mes = mes & cel.Value & " n'est pas dans l'onglet Feuil2" & Chr(13) 'définit la message
Else 'sinon
pa = r.Address 'définit la variable pa
Do 'éxécute
r.Interior.ColorIndex = 3 'colore la cellule de l'occurrence trouvée
Set r = pl2.FindNext(r) 'redéfinit la variable r (Recherche occurrence suivante)
Loop While Not r Is Nothing And r.Address <> pa 'boucle tant qu'il existe d'autres occurrences ailleurs qu'en pa
End If 'fin de la condition
Next cel 'prochaine cellule cel de la plage p1
mes = mes & Chr(13) 'redéfinit le mnessage (saut de ligne)
For Each cel In pl2 'boucle 2 : sur toutes les cellules cel de la plage p2
If cel.Interior.ColorIndex <> 3 Then 'condition : si la cellule n'est pas colorée
mes = mes & cel.Value & " n'est pas dans l'onglet Feuil1" & Chr(13) 'redéfinit le message
End If 'fin de la condition
Next cel 'prochaine cellule cel de la plage pl2
pl2.Interior.ColorIndex = 0 'enlève la couleur éventuelle de la plage pl2
Application.ScreenUpdating = True 'afiche les changements à l'écran
MsgBox mes 'affiche le message
End Sub
Attention ! il faut que les onglet s'appellent bien Feuil1 et Feuil2 sinon la macro ne fonctionnera pas...
À la fin un messagera t'indiquera les noms qui sont dans Feuil1 et pas dans Feuil2 et aussi les noms qui sont dans Feuil2 et pas dans Feuil1.
Merci à Excel lent de sa réponse mais je n'arrive pas à la faire marcher
j'ai donné un nom comme tu me l'as dit à mes deux listes
j'ai sur la feuille 1 de A1à A3 jean jacques jules et sur la feuille 2 de A1à A4 jean jacques jules jim
où dois je copier tes deux codes et dois je respecter les couleurs utilisés
je suis probablement très inculte mais ?
merci d'avance
je me reprens j'ai cliqué sur la cellule A1 de la feuille 1 puis je suis allé dans format mfc et là j'aifait la formule est et j'ai copié la première formule que tu m'as donné puis choisi une couleur puis fait ok mais rien ne se passe
je progresse un peu mais...
L'idéal, pour savoir où tu coince, j'aurais besoin que tu mette ton fichier ici.
Source d'erreur possible :
-> tu t'es trompé lorsque tu as nommée tes zones de cellule
-> tu t'es trompé dans la formule de MFC soit dans le nom des cellules, soit dans la formule en elle même
Pour le format : couleur de la police, couleur de la cellule, bordures, polices, ... tu peux faire tout ce que tu veux (tu n'es pas obligé faire comme dans l'exemple).
merci de ta réponse en enlevant les " cela marche mais ce qui est curieux c'est que je n'avais pas tapé les guillemets et qu'ils se sont mis une fois le texte tapé
merci en tout cas
peux tu m'expliciter la signification des deux formules
=NB.SI(ListeFeuille1;A1)>0
=SI(NB.SI(ListeFeuille1;A1)>0;VRAI;FAUX)
que veux dire le >0 et NB.SI et vrai; faux??
dans l'aide d'excel le NB.si semble compter le nombre de cellules
NB.SI compte le nombre de cellule répondant à une condition ou critère.
Ici on compte dans la plage ListeFeuille1 le nombre de cellules ayant la même valeur que A1 (de la feuille2) : si on en trouve plus de 0 c'est donc que la valeur de A1 est présente dans la feuille1.
(et ainsi de suite puisque pour la ligne 2, c'est A2 qu'Excel utilisera).
Dans la forme longue de la formule : on dit que si ce nombre est supérieur à 0 alors c'est vrai sinon c'est faux.
Mais la MFC ignore automatiquement toute condition non vérifiée d'où ma simplification qui donne en Français : au cas où le nombre est >0 alors formater la cellule.
Bonjour, je n'arrive pas à comparer 2 colonnes sur la même feuille. Je souhaite afficher seulement les différences entre ces 2 colonnes en C (a vs B) et en D (b vs A). Jai mis ceci en C : =SI(A2="","",SI(ESTNA(EQUIV(A2,B$2:B$1501,0)),A2,"")) et en D =SI(B4="","",SI(ESTNA(EQUIV(B4,A$2:A$1501,0)),B4,"")). mais ça ne fonctionne pas.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.