Pb macro pour suppression

A

AL

Guest
Bonjour le forum

J' ai une feuille de calcul sur laquelle il y a 1038 enregistrements B2 a AC1038, et j' aimerais faire une suppression des lignes doublonner.
Le point de depart serait la colonne B, mais la recherche de doublons doit prendre en compte les minuscules majuscules et les Espaces ainsi que les Accents, car les noms sont de stiles " La chèvre de Mr Seguin" où "la Chevre de Monsieur seguin"
J' ai essayé cette ùacro que j' avais trouvé sur le forum

Sub SupprimerLignesDoublons()
'http://www.excel-downloads.com/html/French/forum/messages/1_62749_62749.htm
'michel
'le 24.12.2003
Dim Cell As Range
Dim Ligne As Integer, i As Integer
Dim M As Byte, U As Byte, N As Byte
Dim Tableau(), Tableau2()
Dim Resultat As String

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

For Each Cell In Range("A1:A" & Ligne)
U = 0
For i = 1 To M
If Cell = 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 = 1
End If
Next i

If Tableau(M - 1) = "" And U = 0 Then
Tableau(M - 1) = Cell ' remplissage tableau 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

End Sub

Le Pb en la modifiant et en mettant B2 j' ai un plantage a M= M+1
en inserant une colonne pour comprendre le pourquoi, j' ai toujours le blocage à "M=M+"

merci a celui qui pourra m' aider à comprendre le pourquoi ?


AL
 
M

michel

Guest
bonjour Al

ci joint une adaptation qui j'espere pourra t'aider

si tu as plus de 256 valeurs , il faut remplacer Dim M as byte par Dim M as integer….
il me semble que je te l'avais deja signalé dans un autre fil
http://www.excel-downloads.com/html/French/forum/messages/1_63892_63892.htm

ci dessous un exemple pour prendre en compte les minuscules majuscules et les Espaces ainsi que les Accents dans la colonne B
je n'ai pas utilisé toutes les accentuations possibles ni les differences entre "Mr" et "monsieur" mais tu pourras l'adapter sur le meme principe que l'exemple ci dessous

Sub DoublonsV02()
Dim Cell As Range
Dim Ligne As Integer, i As Integer
Dim M As Integer, N As Integer
Dim U As Boolean
Dim Tableau(), Tableau2()
Dim Val As String

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

Application.ScreenUpdating = False
For Each Cell In Range("B2:B" & Ligne)
U = False
For i = 1 To M
'*********************************************************
'prendre en compte les minuscules majuscules et les Espaces ainsi que les Accents
Val = Cell
Val = Application.Substitute(Val, "é", "e")
Val = Application.Substitute(Val, "è", "e")
Val = Application.Substitute(Val, "ê", "e")
Val = Application.Substitute(Val, "à", "a")
'....adapter pour les autres accentuations........
Val = UCase(Application.Substitute(Val, " ", ""))
'******************************************************
If Val = 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) = Val ' 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
Rows(Tableau2(i - 1)).Delete
Next i

End Sub


bon dimanche
michel
lapin4.gif
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote