OVH Cloud OVH Cloud

Doublons

7 réponses
Avatar
e-cappa
Bonjour,

Je voulais savoir s'il existait une fonction toute faites qui permettait de
supprimer les doublons dans une sélection.

Merci

7 réponses

Avatar
cousinhub
Bonsoir, toute faite, il ne me semble pas mais en regardant du côté du
filtre élaboré avec "extraction sans doublon" tu peux masquer les lignes
des doublons ou les extraire vers un autre emplacement
autre solution, pour vraiment supprimer les lignes, inscris ce code dans
un module (il y a sûrement plus rapide, 5 secondes pour 1500 lignes)
en supposant que les doublons que tu recherches soient dans la colonne A

Sub supp_doublons()
Application.ScreenUpdating = False
For i = [A65536].End(xlUp).Row To 2 Step -1
derC = [A65536].End(xlUp).Address
valeur = Range("A" & i).Value
If Evaluate("COUNTIF(A2:" & derC & "," & """" & valeur & """)") > 1 _
Then Rows(i).Delete
Next
Application.ScreenUpdating = True
End Sub

Bon courage

Bonjour,

Je voulais savoir s'il existait une fonction toute faites qui permettait de
supprimer les doublons dans une sélection.

Merci


Avatar
cousinhub
Re-,
effectivement, il y a plus rapide!
Dans un fil précédent, Daniel donnait quelques indications sur les
calculs d'excel 2003
En insérant :
Application.Calculation = xlCalculationManual
en début de code et :
Application.Calculation = xlCalculationAutomatic
en fin de code, celle-ci s'exécute en moins de 1 seconde sur les 1500
lignes (au lieu des 5 s précédentes). Je retiens!!!


Bonsoir, toute faite, il ne me semble pas mais en regardant du côté du
filtre élaboré avec "extraction sans doublon" tu peux masquer les lignes
des doublons ou les extraire vers un autre emplacement
autre solution, pour vraiment supprimer les lignes, inscris ce code dans
un module (il y a sûrement plus rapide, 5 secondes pour 1500 lignes)
en supposant que les doublons que tu recherches soient dans la colonne A

Sub supp_doublons()
Application.ScreenUpdating = False
For i = [A65536].End(xlUp).Row To 2 Step -1
derC = [A65536].End(xlUp).Address
valeur = Range("A" & i).Value
If Evaluate("COUNTIF(A2:" & derC & "," & """" & valeur & """)") > 1 _
Then Rows(i).Delete
Next
Application.ScreenUpdating = True
End Sub

Bon courage

Bonjour,

Je voulais savoir s'il existait une fonction toute faites qui
permettait de supprimer les doublons dans une sélection.

Merci




Avatar
cousinhub
Bonsoir tout le monde,
Par contre, le code indiqué ci-dessous ne fonctionne pas s'il s'agit de
dates (du moins chez moi)
Or, la fonction NB.SI insérée dans une cellule de la feuille me donne
bien le nombre de doublons
Est-ce normal, docteur? -)
Merci d'éclairer ma lanterne

Re-,
effectivement, il y a plus rapide!
Dans un fil précédent, Daniel donnait quelques indications sur les
calculs d'excel 2003
En insérant :
Application.Calculation = xlCalculationManual
en début de code et :
Application.Calculation = xlCalculationAutomatic
en fin de code, celle-ci s'exécute en moins de 1 seconde sur les 1500
lignes (au lieu des 5 s précédentes). Je retiens!!!


Bonsoir, toute faite, il ne me semble pas mais en regardant du côté du
filtre élaboré avec "extraction sans doublon" tu peux masquer les
lignes des doublons ou les extraire vers un autre emplacement
autre solution, pour vraiment supprimer les lignes, inscris ce code
dans un module (il y a sûrement plus rapide, 5 secondes pour 1500 lignes)
en supposant que les doublons que tu recherches soient dans la colonne A

Sub supp_doublons()
Application.ScreenUpdating = False
For i = [A65536].End(xlUp).Row To 2 Step -1
derC = [A65536].End(xlUp).Address
valeur = Range("A" & i).Value
If Evaluate("COUNTIF(A2:" & derC & "," & """" & valeur & """)") > 1 _
Then Rows(i).Delete
Next
Application.ScreenUpdating = True
End Sub

Bon courage

Bonjour,

Je voulais savoir s'il existait une fonction toute faites qui
permettait de supprimer les doublons dans une sélection.

Merci






Avatar
JB
Bonsoir,

taux de doublons 10% 0,1 s pour 1500

Sub supp_doublonsjb()
t = Timer()
Range([A2], [A65000].End(xlUp)).Sort key1:=[A2]
i = [A65000].End(xlUp).Row
Do While i > 2
If Cells(i, 1) = Cells(i - 1, 1) Then
Cells(i, 1).Delete Shift:=xlUp
Else
i = i - 1
End If
Loop
MsgBox Timer() - t
End Sub

taux de doublons 10% 0,06 s pour 1500 et 0,4 s pour taux doublon 80%

Sub supp_doublonsjb2()
t = Timer()
Range([A2], [A65000].End(xlUp)).Sort key1:=[A2]
i = [A65000].End(xlUp).Row
Do While i > 2
If Cells(i, 1) = Cells(i - 1, 1) Then
Cells(i, 1) = Empty
Else
i = i - 1
End If
Loop
Range([A2], [A65000].End(xlUp)).Sort key1:=[A2]
MsgBox Timer() - t
End Sub

JB




On 15 fév, 18:55, cousinhub wrote:
Re-,
effectivement, il y a plus rapide!
Dans un fil précédent, Daniel donnait quelques indications sur les
calculs d'excel 2003
En insérant :
Application.Calculation = xlCalculationManual
en début de code et :
Application.Calculation = xlCalculationAutomatic
en fin de code, celle-ci s'exécute en moins de 1 seconde sur les 1500
lignes (au lieu des 5 s précédentes). Je retiens!!!




Bonsoir, toute faite, il ne me semble pas mais en regardant du côté du
filtre élaboré avec "extraction sans doublon" tu peux masquer les l ignes
des doublons ou les extraire vers un autre emplacement
autre solution, pour vraiment supprimer les lignes, inscris ce code dans
un module (il y a sûrement plus rapide, 5 secondes pour 1500 lignes)
en supposant que les doublons que tu recherches soient dans la colonne A

Sub supp_doublons()
Application.ScreenUpdating = False
For i = [A65536].End(xlUp).Row To 2 Step -1
derC = [A65536].End(xlUp).Address
valeur = Range("A" & i).Value
If Evaluate("COUNTIF(A2:" & derC & "," & """" & valeur & """)") > 1 _
Then Rows(i).Delete
Next
Application.ScreenUpdating = True
End Sub

Bon courage

Bonjour,

Je voulais savoir s'il existait une fonction toute faites qui
permettait de supprimer les doublons dans une sélection.

Merci- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -




Avatar
cousinhub
Quand je disais qu'il y avait sûrement plus rapide -))
Par contre, je ne comprends toujours pas pourquoi mon code ne prend pas
en compte les dates (sans doute une spécificité de VBA concernant le
format DATES)

Bonsoir,

taux de doublons 10% 0,1 s pour 1500

Sub supp_doublonsjb()
t = Timer()
Range([A2], [A65000].End(xlUp)).Sort key1:=[A2]
i = [A65000].End(xlUp).Row
Do While i > 2
If Cells(i, 1) = Cells(i - 1, 1) Then
Cells(i, 1).Delete Shift:=xlUp
Else
i = i - 1
End If
Loop
MsgBox Timer() - t
End Sub

taux de doublons 10% 0,06 s pour 1500 et 0,4 s pour taux doublon 80%

Sub supp_doublonsjb2()
t = Timer()
Range([A2], [A65000].End(xlUp)).Sort key1:=[A2]
i = [A65000].End(xlUp).Row
Do While i > 2
If Cells(i, 1) = Cells(i - 1, 1) Then
Cells(i, 1) = Empty
Else
i = i - 1
End If
Loop
Range([A2], [A65000].End(xlUp)).Sort key1:=[A2]
MsgBox Timer() - t
End Sub

JB




On 15 fév, 18:55, cousinhub wrote:
Re-,
effectivement, il y a plus rapide!
Dans un fil précédent, Daniel donnait quelques indications sur les
calculs d'excel 2003
En insérant :
Application.Calculation = xlCalculationManual
en début de code et :
Application.Calculation = xlCalculationAutomatic
en fin de code, celle-ci s'exécute en moins de 1 seconde sur les 1500
lignes (au lieu des 5 s précédentes). Je retiens!!!




Bonsoir, toute faite, il ne me semble pas mais en regardant du côté du
filtre élaboré avec "extraction sans doublon" tu peux masquer les lignes
des doublons ou les extraire vers un autre emplacement
autre solution, pour vraiment supprimer les lignes, inscris ce code dans
un module (il y a sûrement plus rapide, 5 secondes pour 1500 lignes)
en supposant que les doublons que tu recherches soient dans la colonne A
Sub supp_doublons()
Application.ScreenUpdating = False
For i = [A65536].End(xlUp).Row To 2 Step -1
derC = [A65536].End(xlUp).Address
valeur = Range("A" & i).Value
If Evaluate("COUNTIF(A2:" & derC & "," & """" & valeur & """)") > 1 _
Then Rows(i).Delete
Next
Application.ScreenUpdating = True
End Sub
Bon courage
Bonjour,
Je voulais savoir s'il existait une fonction toute faites qui
permettait de supprimer les doublons dans une sélection.
Merci- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -










Avatar
e-cappa
Merci !

Je teste tout ça et vous fais part de mon feed-back lundi !


"JB" wrote:

Bonsoir,

taux de doublons 10% 0,1 s pour 1500

Sub supp_doublonsjb()
t = Timer()
Range([A2], [A65000].End(xlUp)).Sort key1:=[A2]
i = [A65000].End(xlUp).Row
Do While i > 2
If Cells(i, 1) = Cells(i - 1, 1) Then
Cells(i, 1).Delete Shift:=xlUp
Else
i = i - 1
End If
Loop
MsgBox Timer() - t
End Sub

taux de doublons 10% 0,06 s pour 1500 et 0,4 s pour taux doublon 80%

Sub supp_doublonsjb2()
t = Timer()
Range([A2], [A65000].End(xlUp)).Sort key1:=[A2]
i = [A65000].End(xlUp).Row
Do While i > 2
If Cells(i, 1) = Cells(i - 1, 1) Then
Cells(i, 1) = Empty
Else
i = i - 1
End If
Loop
Range([A2], [A65000].End(xlUp)).Sort key1:=[A2]
MsgBox Timer() - t
End Sub

JB




On 15 fév, 18:55, cousinhub wrote:
Re-,
effectivement, il y a plus rapide!
Dans un fil précédent, Daniel donnait quelques indications sur les
calculs d'excel 2003
En insérant :
Application.Calculation = xlCalculationManual
en début de code et :
Application.Calculation = xlCalculationAutomatic
en fin de code, celle-ci s'exécute en moins de 1 seconde sur les 1500
lignes (au lieu des 5 s précédentes). Je retiens!!!




Bonsoir, toute faite, il ne me semble pas mais en regardant du côté du
filtre élaboré avec "extraction sans doublon" tu peux masquer les lignes
des doublons ou les extraire vers un autre emplacement
autre solution, pour vraiment supprimer les lignes, inscris ce code dans
un module (il y a sûrement plus rapide, 5 secondes pour 1500 lignes)
en supposant que les doublons que tu recherches soient dans la colonne A

Sub supp_doublons()
Application.ScreenUpdating = False
For i = [A65536].End(xlUp).Row To 2 Step -1
derC = [A65536].End(xlUp).Address
valeur = Range("A" & i).Value
If Evaluate("COUNTIF(A2:" & derC & "," & """" & valeur & """)") > 1 _
Then Rows(i).Delete
Next
Application.ScreenUpdating = True
End Sub

Bon courage

Bonjour,

Je voulais savoir s'il existait une fonction toute faites qui
permettait de supprimer les doublons dans une sélection.

Merci- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -









Avatar
AV
Je voulais savoir s'il existait une fonction toute faites qui permettait de
supprimer les doublons dans une sélection.


Sujet : Suppression des doublons dans une liste A2:Axxx

Dans ce genre de manip, la première chose à faire est d'abord, de désactiver le
rafraichissement de l'écran pendant le déroulement de la macro...
Quant à la rapidité d'exécution, aucune n'arrive à la cheville de la méthode
utilisant une colonne temporaire avec un filtre élaboré.
Et ne parlons pas du cas ou les données restent non triées....

Pour s'en convaincre (avec des données en A1:Axxxx) faire quelques tests
comparatifs ou utiliser l'exemple joint....

Sub SupDoublonsFiltrElab()
Application.ScreenUpdating = False
t = Timer()
[A:A].Insert
[B:B].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[A1], Unique:=True
[B:B].Delete
MsgBox Timer() - t
End Sub

http://cjoint.com/?cql4mhxSOz

AV