XL 2016 Nettoyage d'une liste

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 !

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

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

  • Question Question
Microsoft 365 Excel et Insee
Réponses
6
Affichages
469
  • Question Question
XL 2021 Doublons
Réponses
7
Affichages
65
Retour