OVH Cloud OVH Cloud

Doublons... Vous m'en faites baver !

4 réponses
Avatar
Julien FROGER
Bonjour

Je cherche à éliminer les doublons dans un fichier Excel (j'ai 10000 lignes
et dedans il y a bien 300 doublons)

J'ai trouvé cette macro (c'est mes premières macros donc soyez gentils avec
moi ;) )

-----------
Sub Macromagnon()
ActiveSheet.UsedRange.EntireRow.Sort Key1:=ActiveSheet.UsedRange.Cells(1)
lin = Columns(1).Find("*", , , , , xlPrevious).Row
encore:
keep = False
For col = 1 To Rows(lin).Find("*", , , , , xlPrevious).Column
If Cells(lin, col) <> Cells(lin - 1, col) Then keep = True
Next col
If keep = False Then Rows(lin).Delete
lin = lin - 1
If lin > 1 Then GoTo encore
End Sub
------------

Mais quand je lance la macro, excel me dis que cette ligne bogue...

For col = 1 To Rows(lin).Find("*", , , , , xlPrevious).Column

Je ne comprends pas.
En fait j'ai 10 colonnes et 10000 lignes. J'aimerai qu'il me supprime tous
les lignes qui ont un doublons en colonne A SEULEMENT.

Est ce possible docteur ?

Merci beaucoup

4 réponses

Avatar
arnaud
Trier le tableau par la colonne A
puis
sub Macro()
for i = [A65536].end(xlup).row to 2 step -1
if range("A"& i ).value = range("A"& i +1).value then
rows(i).delete
end if
next i
end sub

C'est tout con et je l'utilise tout le temps !
Arnaud



"Julien FROGER" a écrit dans le message de news:
BE5B1857.23CA2%
Bonjour

Je cherche à éliminer les doublons dans un fichier Excel (j'ai 10000
lignes

et dedans il y a bien 300 doublons)

J'ai trouvé cette macro (c'est mes premières macros donc soyez gentils
avec

moi ;) )

-----------
Sub Macromagnon()
ActiveSheet.UsedRange.EntireRow.Sort Key1:¬tiveSheet.UsedRange.Cells(1)
lin = Columns(1).Find("*", , , , , xlPrevious).Row
encore:
keep = False
For col = 1 To Rows(lin).Find("*", , , , , xlPrevious).Column
If Cells(lin, col) <> Cells(lin - 1, col) Then keep = True
Next col
If keep = False Then Rows(lin).Delete
lin = lin - 1
If lin > 1 Then GoTo encore
End Sub
------------

Mais quand je lance la macro, excel me dis que cette ligne bogue...

For col = 1 To Rows(lin).Find("*", , , , , xlPrevious).Column

Je ne comprends pas.
En fait j'ai 10 colonnes et 10000 lignes. J'aimerai qu'il me supprime tous
les lignes qui ont un doublons en colonne A SEULEMENT.

Est ce possible docteur ?

Merci beaucoup



Avatar
Julien FROGER
Super ca marche du tonnerre.
J'aurais deux trucs en plus à rajouter :

- Est-il possible qu'il me mette sur une autre feuille la liste des doublons
qu'il a supprimé ? (ca doit pas etre si facile je pense...)
- Comment décide t il de la ligne à garder ? Cela peut il etre conditionné ?
Du genre "garde la liste qui à le plus de lettres dans lla cellule C et D"

Merci encore


Le 14/03/05 11:00, dans et#, « arnaud »
a écrit :

Trier le tableau par la colonne A
puis
sub Macro()
for i = [A65536].end(xlup).row to 2 step -1
if range("A"& i ).value = range("A"& i +1).value then
rows(i).delete
end if
next i
end sub

C'est tout con et je l'utilise tout le temps !
Arnaud



"Julien FROGER" a écrit dans le message de news:
BE5B1857.23CA2%
Bonjour

Je cherche à éliminer les doublons dans un fichier Excel (j'ai 10000
lignes

et dedans il y a bien 300 doublons)

J'ai trouvé cette macro (c'est mes premières macros donc soyez gentils
avec

moi ;) )

-----------
Sub Macromagnon()
ActiveSheet.UsedRange.EntireRow.Sort Key1:¬tiveSheet.UsedRange.Cells(1)
lin = Columns(1).Find("*", , , , , xlPrevious).Row
encore:
keep = False
For col = 1 To Rows(lin).Find("*", , , , , xlPrevious).Column
If Cells(lin, col) <> Cells(lin - 1, col) Then keep = True
Next col
If keep = False Then Rows(lin).Delete
lin = lin - 1
If lin > 1 Then GoTo encore
End Sub
------------

Mais quand je lance la macro, excel me dis que cette ligne bogue...

For col = 1 To Rows(lin).Find("*", , , , , xlPrevious).Column

Je ne comprends pas.
En fait j'ai 10 colonnes et 10000 lignes. J'aimerai qu'il me supprime tous
les lignes qui ont un doublons en colonne A SEULEMENT.

Est ce possible docteur ?

Merci beaucoup







Avatar
Julien FROGER
Salut arnaud

J'ai donc essayer plus profondemment ton code vba.
Ca marche, ca m'a supprimé 300 doublons mais il en reste 30 ou 40 !

Par exemple il m'a pas supprimé :




Que faire... ??

merci


Le 14/03/05 11:00, dans et#, « arnaud »
a écrit :

Trier le tableau par la colonne A
puis
sub Macro()
for i = [A65536].end(xlup).row to 2 step -1
if range("A"& i ).value = range("A"& i +1).value then
rows(i).delete
end if
next i
end sub

C'est tout con et je l'utilise tout le temps !
Arnaud



"Julien FROGER" a écrit dans le message de news:
BE5B1857.23CA2%
Bonjour

Je cherche à éliminer les doublons dans un fichier Excel (j'ai 10000
lignes

et dedans il y a bien 300 doublons)

J'ai trouvé cette macro (c'est mes premières macros donc soyez gentils
avec

moi ;) )

-----------
Sub Macromagnon()
ActiveSheet.UsedRange.EntireRow.Sort Key1:¬tiveSheet.UsedRange.Cells(1)
lin = Columns(1).Find("*", , , , , xlPrevious).Row
encore:
keep = False
For col = 1 To Rows(lin).Find("*", , , , , xlPrevious).Column
If Cells(lin, col) <> Cells(lin - 1, col) Then keep = True
Next col
If keep = False Then Rows(lin).Delete
lin = lin - 1
If lin > 1 Then GoTo encore
End Sub
------------

Mais quand je lance la macro, excel me dis que cette ligne bogue...

For col = 1 To Rows(lin).Find("*", , , , , xlPrevious).Column

Je ne comprends pas.
En fait j'ai 10 colonnes et 10000 lignes. J'aimerai qu'il me supprime tous
les lignes qui ont un doublons en colonne A SEULEMENT.

Est ce possible docteur ?

Merci beaucoup







Avatar
max-malack
Julien FROGER a écrit le 14/03/2005 à 11h30 :
Bonjour

Je cherche à éliminer les doublons dans un fichier Excel (j'ai
10000 lignes
et dedans il y a bien 300 doublons)

J'ai trouvé cette macro (c'est mes premières macros donc soyez
gentils avec
moi ;) )

-----------
Sub Macromagnon()
ActiveSheet.UsedRange.EntireRow.Sort Key1:¬tiveSheet.UsedRange.Cells(1)
lin = Columns(1).Find("*", , , , , xlPrevious).Row
encore:
keep = False
For col = 1 To Rows(lin).Find("*", , , , , xlPrevious).Column
If Cells(lin, col) <> Cells(lin - 1, col) Then keep = True
Next col
If keep = False Then Rows(lin).Delete
lin = lin - 1
If lin > 1 Then GoTo encore
End Sub
------------

Mais quand je lance la macro, excel me dis que cette ligne bogue...

For col = 1 To Rows(lin).Find("*", , , , , xlPrevious).Column

Je ne comprends pas.
En fait j'ai 10 colonnes et 10000 lignes. J'aimerai qu'il me supprime tous
les lignes qui ont un doublons en colonne A SEULEMENT.

Est ce possible docteur ?

Merci beaucoup


fais un tableau croisé dynamique, c'est bien plus rapide...