Analyser deux feuilles et supprimer les lignes complètes VBA

Bonjour à tous,

J'ai un fichier de base et j'ai des extractions de ce fichier dans une autre feuille.

Admettons la base se trouve dans une feuille nommée "base" et les extractions dans une feuille nommée "a supprimer"

Dans ma feuille "a supprimer" se trouvent des éléments de "base" mais qui sont destinées à la suppression.

Je cherche une macro qui puisse analyser les colonnes A à N pour chaque ligne de "a supprimer" et si la macro détecte exactement les mêmes valeurs pour l'ensemble des colonnes A à N de "base" alors supprimer la ligne dans "base" puis revenir à la feuille "a supprimer" pour la valeur suivante.

Petite note : les valeurs à analyser commencent dans les 2 feuilles à la ligne 2 jusqu'à la dernière ligne de la colonne A.

Merci d'avance pour toute aide

Cordialement

Bonsoir,

Ci-joint une proposition, à tester.

Part sur le principe qu'une même ligne à supprimer peut exister plusieurs fois dans l'onglet "Base".

Dans le cas contraire, la macro peut être optimisée.

Bonne soirée

Bouben

Bonjour bouben,

Magnifique, j'ai testé la formule et elle fonctionne comme je l'ai espéré.

Merci beaucoup.

Bonne après-midi

cordialement


Bonjour bouben,

Magnifique, j'ai testé la formule et elle fonctionne comme je l'ai espéré.

Merci beaucoup.

Bonne après-midi

cordialement

Bonsoir à tous,

Avec un dictionnaire :

Option Explicit

Sub supprime()
Dim a, i As Long, j As Long, dic As Object, txt As String, x As Range
    Set dic = CreateObject("Scripting.Dictionary")
    dic.CompareMode = 1
    a = Sheets(2).Range("a2").CurrentRegion.Value
    For i = 1 To UBound(a, 1)
        For j = 1 To UBound(a, 2)
            txt = txt & Chr(2) & a(i, j)
        Next
        dic.Item(txt) = Empty
        txt = ""
    Next
    With Sheets("base").Range("a2").CurrentRegion
        a = .Value
        For i = 1 To UBound(a, 1)
            For j = 1 To UBound(a, 2)
                txt = txt & Chr(2) & a(i, j)
            Next
            If dic.exists(txt) Then
                If x Is Nothing Then
                    Set x = .Rows(i)
                Else
                    Set x = Union(x, .Rows(i))
                End If
            End If
            txt = ""
        Next
        If Not x Is Nothing Then
            'x.EntireRow.Select
            x.EntireRow.Delete
        Else
            MsgBox "Pas de données à supprimer"
        End If
        Set x = Nothing
        Set dic = Nothing 
    End With
End Sub

klin89

Rechercher des sujets similaires à "analyser deux feuilles supprimer lignes completes vba"