XL 2016 Nettoyage d'une liste

Yacine

XLDnaute Occasionnel
Bonjour,

Sur le fichier joint il y a 3 onglets, le 1er contient une liste globale, le 2ème la liste des désinscrits et je voudrais donc obtenir dans le 3ème onglet (Output) la liste globale mais sans les désinscrits.

Merci par avance et bonnes fêtes de fin d'année
 

Pièces jointes

  • Liste.xlsx
    14.2 KB · Affichages: 5

vgendron

XLDnaute Barbatruc
Bonjour

une proposition par macro
VB:
Sub ListeOutput()

Dim TabGlob() As Variant
Dim TabDesinsc() As Variant

With Sheets("Liste Globale")
    LastLine = .Range("A" & .Rows.Count).End(xlUp).Row
    TabGlob = .Range("A1:G" & LastLine).Value 'on met les données dans un tablo vba
End With

With Sheets("Désinscrits")
    LastLine = .Range("A" & .Rows.Count).End(xlUp).Row
    TabDesinsc = .Range("A1:G" & LastLine).Value 'on met les données dans un tablo vba
End With

For i = LBound(TabGlob, 1) + 1 To UBound(TabGlob, 1) 'pour chaque ligne
    For j = LBound(TabDesinsc, 1) + 1 To UBound(TabDesinsc, 1) 'pour chaque ligne
        If TabGlob(i, 1) = TabDesinsc(j, 1) Then 'si on trouve le nom
            For k = LBound(TabGlob, 2) To UBound(TabGlob, 2) 'on efface la ligne
                TabGlob(i, k) = ""
            Next k
        End If
    Next j
Next i

Sheets("Output").Range("A1").Resize(UBound(TabGlob, 1), UBound(TabGlob, 2)) = TabGlob 'on colle le tablo
Sheets("Output").Range("A1").Resize(UBound(TabGlob, 1), UBound(TabGlob, 2)).SpecialCells(xlCellTypeBlanks).Delete 'on supprime les lignes vides
End Sub
 

Yacine

XLDnaute Occasionnel
Bonjour

une proposition par macro
VB:
Sub ListeOutput()

Dim TabGlob() As Variant
Dim TabDesinsc() As Variant

With Sheets("Liste Globale")
    LastLine = .Range("A" & .Rows.Count).End(xlUp).Row
    TabGlob = .Range("A1:G" & LastLine).Value 'on met les données dans un tablo vba
End With

With Sheets("Désinscrits")
    LastLine = .Range("A" & .Rows.Count).End(xlUp).Row
    TabDesinsc = .Range("A1:G" & LastLine).Value 'on met les données dans un tablo vba
End With

For i = LBound(TabGlob, 1) + 1 To UBound(TabGlob, 1) 'pour chaque ligne
    For j = LBound(TabDesinsc, 1) + 1 To UBound(TabDesinsc, 1) 'pour chaque ligne
        If TabGlob(i, 1) = TabDesinsc(j, 1) Then 'si on trouve le nom
            For k = LBound(TabGlob, 2) To UBound(TabGlob, 2) 'on efface la ligne
                TabGlob(i, k) = ""
            Next k
        End If
    Next j
Next i

Sheets("Output").Range("A1").Resize(UBound(TabGlob, 1), UBound(TabGlob, 2)) = TabGlob 'on colle le tablo
Sheets("Output").Range("A1").Resize(UBound(TabGlob, 1), UBound(TabGlob, 2)).SpecialCells(xlCellTypeBlanks).Delete 'on supprime les lignes vides
End Sub
Fonctionne comme je veux. Merci beaucoup et bon réveillon
 

Discussions similaires

Statistiques des forums

Discussions
314 489
Messages
2 110 136
Membres
110 684
dernier inscrit
kihel