Macro - Retenir les lignes communes dans 5 sheets

  • Initiateur de la discussion Initiateur de la discussion eddylle
  • Date de début Date de début

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 !

eddylle

XLDnaute Nouveau
Bonjour!

Je travaille sur une grosse base de données dans laquelle il y a 5 excel sheets.

De la 1ère sheet à la dernière, il y a de moins en moins de lignes (on passe d'environs 7000 lignes à environs 4000 au final).

Ma question est donc la suivante : Comment pourrais-je coder le fait de ne retenir que les lignes qui sont communes aux 5 sheets? Par les mêmes lignes, j'entends celles qui ont la leur cellule de la colonne B identique parmi les 5 sheets. L'output que je désirerais obtenir est de conserver les 5 sheets mais avec les lignes communes. Il me faut bien les 5 sheets avec les mêmes lignes, car les memes lignes ne contiennent pas specialement les mêmes donnés

Les tableaux sont sous la forme suivante : Z x R avec Z etant le nombre de ligne, et R la colonne, qui est invariante pour les 5 sheets.

Je poste ici une version simplifiée de ma base de données. J'espère que ma requête est suffisamment explicite 🙂

Merci beaucoup de votre aide!

EDIT : Avec la base de donnée simplifiée postée ici, j'aimerais donc au final avoir sur toutes les sheets uniquement les lignées nommées "bbb","ccc","fff","ggg","hhh","jjj"
 

Pièces jointes

Dernière édition:
Re : Macro - Retenir les lignes communes dans 5 sheets

Bonjour,

essaye ceci :
Code:
Option Explicit
Sub test()
Dim i As Byte, l As Long, x As Range
Application.ScreenUpdating = False
Worksheets(5).Copy after:=Worksheets(Worksheets.Count)
For l = Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1
    For i = 1 To 5
        Set x = Worksheets(i).Columns(2).Find(Cells(l, 2), , xlValues, xlWhole, , , False)
        If x Is Nothing Then Rows(l).Delete: Exit For
    Next i
Next l
Application.ScreenUpdating = True
End Sub

mais bon... en l'état ta dernière feuille représente déjà le résultat attendu...

bon après midi
@+
 
Re : Macro - Retenir les lignes communes dans 5 sheets

Merci ton code m'aide déjà beaucoup!

Mais il ne me retourne que la dernière sheet, or j'ai besoin des 5 sheets. Car en fait il me retourne les bonnes entités "bbb","ccc", etc. mais uniquement avec les données de la sheet 5 (à savoir que des valeurs 5). Or, j'ai besoin des résultats, pour ces mêmes entités, des 4 autres sheets (des valeurs 1 pour la sheet 1, des valeurs 2 pour la sheet 2, etc.).

Tu crois que tu sais m'aider?

Merci en tout cas.
 
Re : Macro - Retenir les lignes communes dans 5 sheets

Re,

peut être avec ceci alors :
Code:
Option Explicit
Sub test()
Dim i As Byte, l As Long, x As Range, b As Boolean
Application.ScreenUpdating = False
Worksheets.Add after:=Worksheets(Worksheets.Count)
For l = Worksheets(5).Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1
    b = False
    For i = 1 To 5
        Set x = Worksheets(i).Columns(2).Find(Worksheets(5).Cells(l, 2), , xlValues, xlWhole, , , False)
        If x Is Nothing Then b = True: Exit For
    Next i
    If Not b Then
        For i = 1 To 5
            Set x = Worksheets(i).Columns(2).Find(Worksheets(5).Cells(l, 2), , xlValues, xlWhole, , , False)
            x.Resize(, 4).Copy Destination:=Worksheets(Worksheets.Count).Cells(Rows.Count, 2).End(xlUp)(2)
        Next i
    End If
Next l
Application.ScreenUpdating = True
End Sub
 
Re : Macro - Retenir les lignes communes dans 5 sheets

Bonjour eddylle, Bonjour Pierrot 🙂
Avec ce que j'ai compris....
Deux propositions
La première supprime sur chaque feuille les lignes qui ne se retrouvent pas dans tous les onglets (lancelment du code Test par alt+F8)
La seconde regroupe toutes les données préentent sur les 5 premiers onglets( seulement les données qui sont sur tous les onglets)

Cordialement
 

Pièces jointes

Re : Macro - Retenir les lignes communes dans 5 sheets

Bonjour Efgé 🙂

C'est la première proposition dont j'ai besoin ! Tu as vu juste. Tu pourrais m'envoyer le code que tu as utilisé? EDIT : sans doute la fatigue qui fait que je n'y ai pas pensé, mais je l'ai recupéré sur le fichier 🙂
Pierrot désolé si je n'ai pas été assez explicite, j'ai eu un peu de mal 🙂

Merci à tous les deux en tous cas!
 
Re : Macro - Retenir les lignes communes dans 5 sheets

Bonjour eddylle, Bonjour Pierrot 🙂
Avec ce que j'ai compris....
Deux propositions
La première supprime sur chaque feuille les lignes qui ne se retrouvent pas dans tous les onglets (lancelment du code Test par alt+F8)
La seconde regroupe toutes les données préentent sur les 5 premiers onglets( seulement les données qui sont sur tous les onglets)

Cordialement

Re bonjour 🙂

Durant ce week-end, je me suis rendu compte d'un nouveau petit problème pour ma base de données. Il y a en fait des données qui apparaissent au fil des feuilles, pas qui disparaissent uniquement..Je cherche toujours à n'avoir sur les 5 feuilles que les données qui apparaissent dans chacune des feuilles..

Je poste mon exemple adapté.

Le code élimine bien les entités qui disparaissent au fil des feuilles (ici par exemple le "eee" n'etait plus repris dans la feuille 2).
En revanche, les entités qui apparaissent (ici "ppp" et "vvv") ne sont pas supprimées malgré qu'elles n'apparaissent pas dans toutes les feuilles.

Merci encore de votre aide 😱
 

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

Retour