Supprimer lignes plage variable dans 2 sens

Bonjour ,

Avec l'enregistreur de macro, j'ai obtenu un code pour supprimer les lignes identiques d'une plage.

La plage étant variable dans les 2 sens, c-à-d nombre de lignes et colonnes.

Cependant, je ne sais pas comment le rendre fonction du nombre de colonnes de la plage considérée.

Sub test()
   Dim dl As Integer, dc As Integer, L_dc
   dl = Range("a" & Rows.Count).End(xlUp).Row   'N°derniere ligne non vide
   dc = Cells(1, Columns.Count).End(xlToLeft).Column   'N°derniere colonne non vide
   L_dc = Split(Columns(dc).Address(ColumnAbsolute:=False), ":")(1)  'Lettre derniere colonne non vide
   Range("A1:" & L_dc & dl).RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), Header:=xlNo
End Sub

Comment rendre cette partie fonction du nombre de colonnes: Columns:=Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)

En vous remerciant par avance.

Bonne journée.

Salut CP4

Une manière différente de procéder :

Function Conca(Plg As Range) As String
For Each c In Plg
    Conca = Conca & c
Next c
End Function
Sub SuppDoubl()
Dim Plage As Range
Dim Réf As String
Dim r As Long, t As Long
Dim a As Long, b As Long, x As Long, y As Long
Set Plage = Application.InputBox("Sélectionner votre plage :", "Sélection de cellules", Type:=8)
a = Plage.Column
b = Plage.Row
x = Plage.Columns.Count + Plage.Column - 1
y = Plage.Rows.Count + Plage.Row - 1
For r = b To y
    Réf = Conca(Range(Cells(r, a), Cells(r, x)))
    For t = r + 1 To y
        If Conca(Range(Cells(t, a), Cells(t, x))) = Réf Then Range(Cells(t, a), Cells(t, x)).ClearContents
    Next
Next
Plage.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End Sub

A coller dans un module classique.

Tu lance la macro, tu sélectionne la plage de cellule que tu souhaite tester, et la suppression des lignes identiques ce fait automatiquement!

Restant à dispo

Bonjour,

Une autre proposition à étudier.

Comme le laisse supposer ton code, on supprime les doublons !...

Cdlt.

Public Sub Remove_duplicates()
Dim rng As Range, arr()
Dim lastCol As Long, lastRow As Long, i As Long
    With ActiveSheet
        lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set rng = .Cells(1).Resize(lastRow, lastCol)
        ReDim arr(0 To lastCol - 1)
        For i = 0 To UBound(arr)
            arr(i) = i + 1
        Next i
    End With
    rng.RemoveDuplicates Columns:=(arr), Header:=xlNo
End Sub

Re,

Pense à clore le sujet si la réponse répond à la question posée.

Cdlt.

Bonjour Juice , Jean-Eric ,

Merci à vous. Je préfère la proposition de Jean-Eric car elle répond parfaitement à ma question.

Je garde aussi celle de Juice , elle pourrait me servir pour un autre fichier.

Re,

Merci de ce retour et d'avoir clos le sujet.

Je dormirai mieux ce soir.

Bonnes fêtes de fin d'année.

Cdlt.

Re,

Merci de ce retour et d'avoir clos le sujet.

Je dormirai mieux ce soir.

Bonnes fêtes de fin d'année.

Cdlt.

Non, c'est moi qui te remercie beaucoup.

Je dormirai moins bête ce soir

Merci encore et très joyeuses fêtes de fin d'année.

Rechercher des sujets similaires à "supprimer lignes plage variable sens"