suprimer la ligne qui contien doublon
Le
pellet15
Bonjour à tous
J'ai une feuille (Base) qui a 13 colonnes et un nombre de ligne qui
varie ( 10 a 300 ou plus)
je voudrais avec une macro supprimer les lignes qui sont en double.
Merci (bonne année 2012)
J'ai une feuille (Base) qui a 13 colonnes et un nombre de ligne qui
varie ( 10 a 300 ou plus)
je voudrais avec une macro supprimer les lignes qui sont en double.
Merci (bonne année 2012)

Poser une question


Quelle est ta définition de doublon ? Est-ce que les 13 colonnes doivent être identiques ou seulement certaines colonnes ?
MichD
------------------------------------------
"pellet15" a écrit dans le message de groupe de discussion :
Bonjour à tous
J'ai une feuille (Base) qui a 13 colonnes et un nombre de ligne qui
varie ( 10 a 300 ou plus)
je voudrais avec une macro supprimer les lignes qui sont en double.
Merci (bonne année 2012)
Bonjour MichD
Oui tous pareille sur la même ligne,
et dans mes calcule je ne doit pas avoir des répétition de mes donné.
il faut supprimer la ligne qui sont en double.
Merci
La plage des données est dans A1:Mx
La ligne 1 représente la ligne des étiquettes de colonnes
La ligne x représente la dernière ligne des données
Dans la colonne N2:Nx , par formule, il y a concaténation de toutes les cellules de chaque ligne
Un filtre élaboré est exécuté sur la colonne N1:Nx
Pour ce faire, une plage de critère est utilisée en O1:O2
Après l'exécution du filtre et les suppressions des doublons, les colonnes N et O sont supprimées.
Feuil1 représente la propriété "Name" de l'objet "Feuille" visible seulement dans l'interface
de la fenêtre d'édition de code et non le nom de l'onglet de la feuille.
'-----------------------------------------------
Sub test()
Dim DerLig As Long
On Error Resume Next
Application.ScreenUpdating = False
With Feuil1
DerLig = .Range("A65536").End(xlUp).Row
.Range("N1") = "Concaténation"
.Range("N2:N" & DerLig) = "¢&B2&C2&D2&E2&F2&G2&H2&I2&K2&L2&M2"
'Déterminer la plage de critère
.Range("O1") = ""
.Range("O2").FormulaLocal = "=Nb.Si(N1:N" & DerLig & ";N2)>=2"
'Filtre avancé sur la plage A1:Mx
With .Range("N1:N" & .Range("N65536").End(xlUp).Row)
.AdvancedFilter Action:=xlFilterInPlace, _
Criteriarange:þuil1.Range("O1:O2")
.Offset(1).Resize(.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
.ShowAllData
.Range("N:O").EntireColumn.Delete
End With
Application.ScreenUpdating = True
End Sub
'-----------------------------------------------
MichD
------------------------------------------
"pellet15" a écrit dans le message de groupe de discussion :
On 29 déc, 15:02, "MichD"
Bonjour MichD
Oui tous pareille sur la même ligne,
et dans mes calcule je ne doit pas avoir des répétition de mes donné.
il faut supprimer la ligne qui sont en double.
Merci
Bonjour MichD
Cela fonctionne mais un peut trop !
je veut supprimer le double mais pas le premier...
voici les modification que j'ai apporter, quoi faire pour garder une
des deux ligne ?
J'ai juste changer le "N pour P et O pour le Q" puis effacer a la
place de supprimer colonne OetQ .
Sub test()
Dim DerLig As Long
On Error Resume Next
Application.ScreenUpdating = False
With Feuil1
DerLig = .Range("A65536").End(xlUp).Row
.Range("p1") = "Concaténation"
.Range("p2:p" & DerLig) = "¢&B2&C2&D2&E2&F2&G2&H2&I2&K2&L2&M2"
'Déterminer la plage de critère
.Range("q1") = ""
.Range("q2").FormulaLocal = "=Nb.Si(p1:p" & DerLig & ";p2)>=2"
'Filtre avancé sur la plage A1:Mx
With .Range("p1:p" & .Range("p65536").End(xlUp).Row)
.AdvancedFilter Action:=xlFilterInPlace,
Criteriarange:þuil1.Range("q1:q2")
.Offset(1).Resize(.Rows.Count -
1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
.ShowAllData
.Range("p:q").EntireColumn.Clear
End With
Application.ScreenUpdating = True
End Sub
Merci
J'ai failli le dire, mais je me suis dit, non, connaissant MichD, il n'a
pas pu oublier ça ...
A ce que je me rappelle, l'astuce consiste à introduire un numéro
d'ordre entre les doublons, comme ça ensuite on peut sélectionner sur
NUMORDRE=1.
En revanche, j'ai un trou sur les modalités d'application ...
Un autre moyen consiste à passer par une extraction xml (à partir de la
version 2003 si je ne m'abuse). Là aussi, il est vrai qu'il ne suffit
pas de le dire.