Macro - Retenir les lignes communes dans 5 sheets

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

  • demo.xlsx
    10.7 KB · Affichages: 56
  • demo.xlsx
    10.7 KB · Affichages: 61
  • demo.xlsx
    10.7 KB · Affichages: 56
Dernière édition:

Pierrot93

XLDnaute Barbatruc
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
@+
 

eddylle

XLDnaute Nouveau
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.
 

Pierrot93

XLDnaute Barbatruc
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
 

Efgé

XLDnaute Barbatruc
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

  • demo(FG1).xlsm
    20.4 KB · Affichages: 53
  • demo(FG1).xlsm
    20.4 KB · Affichages: 52
  • demo(FG2).xlsm
    25.3 KB · Affichages: 52
  • demo(FG1).xlsm
    20.4 KB · Affichages: 55

eddylle

XLDnaute Nouveau
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!
 

eddylle

XLDnaute Nouveau
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 :eek:
 

Pièces jointes

  • demo(FG1).xlsm
    20.8 KB · Affichages: 47
  • demo(FG1).xlsm
    20.8 KB · Affichages: 49
  • demo(FG1).xlsm
    20.8 KB · Affichages: 52

Discussions similaires

Statistiques des forums

Discussions
314 611
Messages
2 111 144
Membres
111 051
dernier inscrit
MANUREVALAND