Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Supprimer un doublon par VBA

2 réponses
Avatar
Florian
Bonjour
J'ai une plage de cellule
sheets("Travail").range("A3:A1000")
Je souhaite que si dans cette liste il y a un doublon, le supprimer par VBA
Merci
Flo riant

2 réponses

Avatar
MichDenis
Bonjour Florian,

Tu pourrais utliser une procédure comme celle-ci :

L'utilisation du filtre élaboré pour ce type de travail est très rapide.

Cette méthode requiert une zone de critère comme suit:
C1 = ""
C2 = "=NB.SI(A2:A5;A2)>1"
Utilise 2 cellules dont tu es sûr qu'elles sont sans donnée.

Cette procédure élimine les lignes entières des doublons débutant par les premières entrées dans ton tableau. Exemple, si tu as un
doublons en ligne A5 et A10, la ligne A5 sera supprimée pour ne conserver que la dernière occurrence en A10

La ligne entière du doublon est supprimée à cause de ceci : EntireRow dans cette ligne de code :
.Offset(1).Resize(Rg.Rows.Count - 1, 1). _
SpecialCells(xlCellTypeVisible).EntireRow.Delete (xlUp)

Si tu désires seulement supprimer la cellule ou les cellules de la colonne A:A, supprime "EntireRow"

'-----------------------------------
Sub Doublons()

Dim Rg As Range
Dim Critere As Range

Application.ScreenUpdating = False

With Worksheets("Travail")
Set Rg = .Range("A3:A" & .Range("A65536").End(xlUp).Row)
.Range("C1") = ""
.Range("C2").FormulaLocal = "=NB.SI(A2:A5;A2)>1"
Set Critere = .Range("C1:C2")
End With

With Rg
.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Critere, Unique:úlse
.Offset(1).Resize(Rg.Rows.Count - 1, 1). _
SpecialCells(xlCellTypeVisible).EntireRow.Delete (xlUp)
Worksheets(.Parent.Name).ShowAllData
End With
Critere.Clear
Set Rg = Nothing : Set Critere = Nothing
End Sub
'-----------------------------------


Salutations!



"Florian" a écrit dans le message de news:
Bonjour
J'ai une plage de cellule
sheets("Travail").range("A3:A1000")
Je souhaite que si dans cette liste il y a un doublon, le supprimer par VBA
Merci
Flo riant
Avatar
Florian
Merci beaucoup Denis
Flo riant


"MichDenis" a écrit dans le message de news:

Bonjour Florian,

Tu pourrais utliser une procédure comme celle-ci :

L'utilisation du filtre élaboré pour ce type de travail est très rapide.

Cette méthode requiert une zone de critère comme suit:
C1 = ""
C2 = "=NB.SI(A2:A5;A2)>1"
Utilise 2 cellules dont tu es sûr qu'elles sont sans donnée.

Cette procédure élimine les lignes entières des doublons débutant par les
premières entrées dans ton tableau. Exemple, si tu as un
doublons en ligne A5 et A10, la ligne A5 sera supprimée pour ne conserver
que la dernière occurrence en A10

La ligne entière du doublon est supprimée à cause de ceci : EntireRow dans
cette ligne de code :
.Offset(1).Resize(Rg.Rows.Count - 1, 1). _
SpecialCells(xlCellTypeVisible).EntireRow.Delete (xlUp)

Si tu désires seulement supprimer la cellule ou les cellules de la colonne
A:A, supprime "EntireRow"

'-----------------------------------
Sub Doublons()

Dim Rg As Range
Dim Critere As Range

Application.ScreenUpdating = False

With Worksheets("Travail")
Set Rg = .Range("A3:A" & .Range("A65536").End(xlUp).Row)
.Range("C1") = ""
.Range("C2").FormulaLocal = "=NB.SI(A2:A5;A2)>1"
Set Critere = .Range("C1:C2")
End With

With Rg
.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Critere, Unique:úlse
.Offset(1).Resize(Rg.Rows.Count - 1, 1). _
SpecialCells(xlCellTypeVisible).EntireRow.Delete (xlUp)
Worksheets(.Parent.Name).ShowAllData
End With
Critere.Clear
Set Rg = Nothing : Set Critere = Nothing
End Sub
'-----------------------------------


Salutations!



"Florian" a écrit dans le message de news:

Bonjour
J'ai une plage de cellule
sheets("Travail").range("A3:A1000")
Je souhaite que si dans cette liste il y a un doublon, le supprimer par
VBA
Merci
Flo riant