Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

comparaison des feuilles

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 !

alessandro

XLDnaute Occasionnel
Bonjour,
Je reviens vers vous avec une problématique :
Je dois comparer beaucoup des feuilles e dois trouver seulement les communs
apres ecrire sur le feuil compare les communs


Merci pour votre aide
 

Pièces jointes

Re : comparaison des feuilles

Bonsoir à tous,

Une autre solution :

Code:
Sub Communs()
Dim lig As Integer, cel As Range, i As Integer
[COLOR="Red"]Sheets(1).Range("C2:D65536").ClearContents[/COLOR]
lig = 1
For Each cel In Sheets(2).Range("A2", Sheets(2).Range("A65536").End(xlUp))
  For i = 3 To Sheets.Count
    If Application.CountIf(Sheets(i).Range("A2", Sheets(i).Range("A65536").End(xlUp)), cel) = 0 Then GoTo 1
  Next
  lig = lig + 1
  Sheets(1).Cells(lig, 3) = cel
  Sheets(1).Cells(lig, 4) = cel.Offset(, 1)
1 Next
End Sub

Nota : en feuille 18 il n'y avait pas de données communes, j'ai dû en modifier 3.

Edit : au cas où l'on relance la macro sur des feuilles modifiées, j'ai ajouté la ligne en rouge.

A+
 

Pièces jointes

Dernière édition:
Re : comparaison des feuilles


Merci pour ta reponse
mais je voudrai seulement les communs a tous les feuilles
alessandro
 
Re : comparaison des feuilles


Je dois trouver seulement les items communs a tous les feuilles je sais que l'item
commun ce 10034 PUFFER BALL ASS.TI X24 mais je voudrai un macro pour le trouver
merci pour votre reponse
 
Re : comparaison des feuilles

Re,

Je dois trouver seulement les items communs a tous les feuilles je sais que l'item commun ce 10034 PUFFER BALL ASS.TI X24 mais je voudrai un macro pour le trouver

alessando, c'est tout à fait ce que j'avais compris et ce que fait ma macro.

Mais dans le fichier présenté dans votre 1er post, l'item 10034 PUFFER BALL ASS.TI X24 n'existe pas en feuille 18 !

C'est pour cela que j'ai mis 3 items communs en feuille 18, regardez mon fichier 🙄

A+
 
Dernière édition:
Re : comparaison des feuilles

Bonsoir Lii,

Mais oui, pourquoi s'embêter.

Je suppose que l'utilisateur sait ce qu'il fait, qu'il a compris la macro, et que donc il ne va pas modifier l'ordre des feuilles.

Si l'on utilise le nom de la feuille compara dans la macro, cela la complique (un tout petit peu) et quid si l'utilisateur change ce nom ?

A+
 
Re : comparaison des feuilles

Bonjour le fil, le forum,

Pour faire plaisir à Lii, une solution où la position de la feuille compara est quelconque :

Code:
Sub Communs()
Dim Nom As String, lig As Integer, N As Byte, cel As Range, ws As Worksheet
[COLOR="Red"]Nom = "compara" 'feuille d'étude[/COLOR]
On Error Resume Next 'au cas où "compara" n'existe pas
Worksheets(Nom).Range("C2:D65536").ClearContents
If Err Then MsgBox "La feuille d'étude doit être nommée """ & Nom & """...", 48: Exit Sub
lig = 1
[COLOR="Red"]N = IIf(Worksheets(1).Name <> Nom, 1, 2) 'position de la feuille de référence[/COLOR]
For Each cel In Worksheets(N).Range("A2", Worksheets(N).Range("A65536").End(xlUp))
  For Each ws In Worksheets
    If ws.Name <> Nom Then
      If Application.CountIf(ws.Range("A:A"), cel) = 0 Then GoTo 1
    End If
  Next
  lig = lig + 1
  Sheets(Nom).Cells(lig, 3) = cel
  Sheets(Nom).Cells(lig, 4) = cel.Offset(, 1)
1 Next
End Sub

A+
 

Pièces jointes

Dernière édition:
Re : comparaison des feuilles

Re

Merci Job pour cette attention 😉.
Ayant été coincé, naguère, par un déplacement intempestif sans trouver la solution immédiatement, j'y fais dés lors attention.
 
Re : comparaison des feuilles

Bonjour,

Méthode rapide

Code:
Sub communs()
  Set f1 = Sheets("10")
  Set mondico1 = CreateObject("Scripting.Dictionary")
  For Each c In f1.Range("a2:a" & f1.[a65000].End(xlUp).Row)
     mondico1.Item(c.Value) = c.Offset(, 1).Value
  Next
  For Each f In Array("15", "18", "12")
    Set mondico2 = CreateObject("Scripting.Dictionary")
    For Each c In Sheets(f).Range("a2:a" & Sheets(f).[a65000].End(xlUp).Row)
      If mondico1.Exists(c.Value) Then mondico2(c.Value) = c.Offset(, 1).Value
    Next c
    Set mondico1 = mondico2
  Next f
  Sheets("communs").[c2].Resize(mondico2.Count, 1) = Application.Transpose(mondico2.keys)
  Sheets("communs").[d2].Resize(mondico2.Count, 1) = Application.Transpose(mondico2.items)
End Sub

JB
 

Pièces jointes

- 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

Discussions similaires

Réponses
13
Affichages
358
Réponses
2
Affichages
379
Réponses
2
Affichages
138
Réponses
1
Affichages
171
Réponses
4
Affichages
226
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…