aider moi à trier un file excel plus de 30000 lignes

sdow

XLDnaute Nouveau
bonjour

Je suis un nouveau dans Excel, alors je doute que vous poussiez m'aider. J'ai un file de 30000 lignes en Excel avec 15 colonnes je dois enlever les lignes qui se répètent . Comment faire , je n'ai aucun base de programmation .

Merci
 

JCGL

XLDnaute Barbatruc
Re : aider moi à trier un file excel plus de 30000 lignes

Bonjour à tous,

Un code de MichelXLD pour 6 colonnes:

VB:
Option Explicit

Sub SupprimerLignesDoublons()
'http://www.excel-downloads.com/html/French/forum/messages/1_65560_65560.htm
'suppression ligne si toutes les cellules de la ligne forment un doublon
'michel
'le 14.01.2004
Dim Cell As Range
Dim Ligne As Integer, i As Integer
Dim M As Byte, j As Byte, N As Byte
Dim Tableau(), Tableau2()
Dim Cible As String, Resultat As String
Dim U As Boolean

Ligne = Range("A65536").End(xlUp).Row ' derniere ligne non vide colonne A
M = 1
N = 1
ReDim Preserve Tableau(M) 'tableau valeurs uniques colonne A
ReDim Preserve Tableau2(N) ' tableau pour numero de lignes doublons

Application.ScreenUpdating = False
For Each Cell In Range("A1:A" & Ligne)
U = False
Cible = Cell
For j = 1 To 6 ' adapter selon nombre de colonnes pour chaque
Cible = Cible & Cell.Offset(0, j)
Next j
For i = 1 To M
If Cible = Tableau(i - 1) Then '
Tableau2(N - 1) = Cell.Row ' recupere numero de ligne quand un doublon est detecté
N = N + 1
ReDim Preserve Tableau2(N)
U = True
End If
Next i

If Tableau(M - 1) = "" And U = False Then
Tableau(M - 1) = Cible ' remplissage tableau valeurs uniques si pas de doublon détecté
M = M + 1
ReDim Preserve Tableau(M)
End If
Next Cell

For i = N - 1 To 1 Step -1 ' boucle pour supprimer les lignes de doublons
Rows(Tableau2(i - 1)).Delete
Next i
Application.ScreenUpdating = True

End Sub


A+ à tous
 
Dernière édition:

jmps

Nous a quitté
Repose en paix
Re : aider moi à trier un file excel plus de 30000 lignes

Bonsoir,

Si tu as plus de 32 767 lignes, il faut passer le type de la variable Ligne en Long.
De toutes façons JCGL, si tu fais un Variable = Range("A65536").End(xlUp).Row, il vaut mieux travailler en Long puisque tu peux tomber sur plus grand qu'un Integer.

Donc :
Code:
Option Explicit

Sub SupprimerLignesDoublons()
'http://www.excel-downloads.com/html/French/forum/messages/1_65560_65560.htm
'suppression ligne si toutes les cellules de la ligne forment un doublon
'michel
'le 14.01.2004
Dim Cell As Range
Dim Ligne As Long, i As Integer

Pour la variable i j'ai pas tout lu le code mais peut-être que Long est aussi nécessaire.
 

JCGL

XLDnaute Barbatruc
Re : aider moi à trier un file excel plus de 30000 lignes

Bonjour à tous,

Tu disais avoir 30 000 lignes donc tu peux laisser Integer.
Ne touche pas au A65536.

Appelles-tu la macro depuis la feuille où sont les données ?

Si non, rajoute Feuil1.Range..... A adapter

A+ à tous
 

jmps

Nous a quitté
Repose en paix
Re : aider moi à trier un file excel plus de 30000 lignes

Je suis d'accord sur ce cas JCGL mais le fameux "Range("A65536").End(xlUp).Row" est là pour trouver la dernière ligne utilisée dans la feuille.
Et donc, au dessus de 32 767, on n'est plus en Integer, on est en Long.
Ça devient de plus en plus vrai depuis Excel 2007 ou 2010 je sais plus.
Autant anticiper.
Et puis il faut remplacer 65 536 par 1 048 576 sur Excel 2007.
Je ne parle même pas de la version 2010 64 bits qui autorise un nombre illimité de lignes.
Quid du 65 536 ?
 

emanu

XLDnaute Nouveau
Re : aider moi à trier un file excel plus de 30000 lignes

Ce code est vraiment tip top c que je cherchais également.
Je l'ai bien utilisé jusqu'à ce que je dépasse la capacité de lecture.
Si je dépasse 260 lignes j'ai un bug
erreur d'execution '6'
Dépassement de capacité

C'est trop bête, j'ai une série de fichiers qui ne dépasse jamais 1000 lignes

merci
 

mutzik

XLDnaute Barbatruc
Re : aider moi à trier un file excel plus de 30000 lignes

bonjour,
si toutes les valeurs d'une même ligne sont les mêmes, pourquoi ne pas faire une extraction de base de données en cochant 'sans doublons'
c'est plus efficace et plus rapide que toutes les macros ...
 

Pièces jointes

  • xld.xlsx
    21.9 KB · Affichages: 56
  • xld.xlsx
    21.9 KB · Affichages: 56
  • xld.xlsx
    21.9 KB · Affichages: 58
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : aider moi à trier un file excel plus de 30000 lignes

Bonjour à tous

Sinon, si vous avez l'occasion de tester XL2007 ou XL2010, vous pouvez sélectionner vos données puis sur l'onglet Données, il y a un gros bouton Supprimer les Doublons et Hop :).
 

mutzik

XLDnaute Barbatruc
Re : aider moi à trier un file excel plus de 30000 lignes

re,
bien vu, MJ, pour ma part, je laisse toujours les données originales pour pouvoir compter les doublons ...
mais effectivement dans ce cas, c'est la même chose que ce que je décris dans mon petit fichier
 

laetitia90

XLDnaute Barbatruc
Re : aider moi à trier un file excel plus de 30000 lignes

bonjour tous

un autre code si pas excel 2007 & 2010

Code:
Sub es()
Dim t As Variant, t2() As Variant, x As Long, i As Long, k As Long, M As Object
On Error Resume Next
Application.ScreenUpdating = False
Set M = CreateObject("Scripting.Dictionary")
t = Range("a2:p" & Cells(Rows.Count, 1).End(xlUp).Row)
x = 1
For i = 1 To UBound(t)
t(i, 16) = t(i, 1) & t(i, 2) & t(i, 3) & t(i, 4) & t(i, 5) & t(i, 6) & t(i, 7) & t(i, 8) _
& t(i, 9) & t(i, 10) & t(i, 11) & t(i, 12) & t(i, 13) & t(i, 14) & t(i, 15)
If Not M.Exists(t(i, 16)) Then
M.Add t(i, 16), t(i, 16)
ReDim Preserve t2(1 To 15, 1 To x)
For k = 1 To 15: t2(k, x) = (t(i, k)): Next k: x = x + 1: End If: Next i
Range("a2:o" & Cells(Rows.Count, 1).End(xlUp).Row).ClearContents
Range("a2").Resize(UBound(t2, 2), UBound(t2, 1)) = Application.Transpose(t2)
Erase t, t2: Set M = Nothing
End Sub

voir aussi dans discusions similaire une reponse de BOISGONTIER un code mega rapide que je salue au passage:)
 
Dernière édition:

Discussions similaires

Réponses
10
Affichages
259
Réponses
5
Affichages
370

Statistiques des forums

Discussions
312 388
Messages
2 087 869
Membres
103 672
dernier inscrit
ammarhouichi