Supprimer données supperflues excel
Résolu/Fermé
A voir également:
- Supprimer données supperflues excel
- Supprimer liste déroulante excel - Guide
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Supprimer les données de navigation - Guide
- Si et excel - Guide
15 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
2 déc. 2010 à 18:54
2 déc. 2010 à 18:54
Bonjour,
J'avais fait la macro et l'ordi m'a fait un caprice! $@+#!!!
je te propose un truc demain dans le courant de la matinée
J'avais fait la macro et l'ordi m'a fait un caprice! $@+#!!!
je te propose un truc demain dans le courant de la matinée
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
3 déc. 2010 à 12:41
3 déc. 2010 à 12:41
Bonjour,
essaies cette macro
Tu dis, car j'ai eu encore pas mal de pb avec l'ordi ce matin d'où 3 heures supplémentaires à essayer de rester zen quand m^me :-)
essaies cette macro
Option Base 1 Sub supprimer_gauche() Dim Tablo Dim Derlig As Integer, Lig As Integer, Cptr As Integer Dim Ref As String ReDim Tablo(Cptr + 1) As Integer Lig = 2 With Sheets("STATUS_XLS 1 ") Derlig = .Range("C1000").End(xlUp).Row Ref = .Cells(Lig, 3) & .Cells(Lig, 1) For Lig = 3 To Derlig If Ref = Left(.Cells(Lig, 3) & .Cells(Lig, 1), Len(Ref)) Then Cptr = Cptr + 1 ReDim Preserve Tablo(Cptr) Tablo(Cptr) = Lig Else Ref = .Cells(Lig, 3) & .Cells(Lig, 1) End If Next Application.ScreenUpdating = False For Cptr = UBound(Tablo) To 1 Step -1 .Rows(Tablo(Cptr)).Delete Next End With End Sub
Tu dis, car j'ai eu encore pas mal de pb avec l'ordi ce matin d'où 3 heures supplémentaires à essayer de rester zen quand m^me :-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
BOnjour,
ça fonctionne parfaitement.
je verrai pour modifier le code que tu as fait pour supprimer les actions sur la colonne 3.
c'est l'utilisateur qui m'a indiqué qu'il filtrait sur la colonne 3 pour mieux voir les redondances sur la colonne 1 mais avec la macro ce filtre n'est nécessaire.
la colonne 1 doit être consultée et les lignes ayant les 7 premiers caractères communs avec la précédente doit être effacée.
j'avais essayé avec
Dim val1 As String*7, val2 As String*7
mais ensuite je ne savais pas comment faire.
en tous les cas merci beaucoup michel_m
ça fonctionne parfaitement.
je verrai pour modifier le code que tu as fait pour supprimer les actions sur la colonne 3.
c'est l'utilisateur qui m'a indiqué qu'il filtrait sur la colonne 3 pour mieux voir les redondances sur la colonne 1 mais avec la macro ce filtre n'est nécessaire.
la colonne 1 doit être consultée et les lignes ayant les 7 premiers caractères communs avec la précédente doit être effacée.
j'avais essayé avec
Dim val1 As String*7, val2 As String*7
mais ensuite je ne savais pas comment faire.
en tous les cas merci beaucoup michel_m
Bonjour michel_m
la macro ne fonctionne pas totalement, j'ai des données qui perdurent, exemple :
U042236, U042236C, U042236D
ou encore U044226, U044226B, U044226C, U044226D
la macro ne fonctionne pas totalement, j'ai des données qui perdurent, exemple :
U042236, U042236C, U042236D
ou encore U044226, U044226B, U044226C, U044226D
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
6 déc. 2010 à 11:02
6 déc. 2010 à 11:02
Bonjour,
teste le nombre de caractères (fonction XL nbcar) des données qui perdurent: il y a peut-être des espaces qui trainent avant ou après tes données
si oui, modifie
Ref = .Cells(Lig, 3) & .Cells(Lig, 1)
en
Ref =trim(.Cells(Lig, 3)) & trim(.Cells(Lig, 1))
si non je vois pas
teste le nombre de caractères (fonction XL nbcar) des données qui perdurent: il y a peut-être des espaces qui trainent avant ou après tes données
si oui, modifie
Ref = .Cells(Lig, 3) & .Cells(Lig, 1)
en
Ref =trim(.Cells(Lig, 3)) & trim(.Cells(Lig, 1))
si non je vois pas
bizarre je ne trouve pas mon dernier commentaire et le tien.
pour dire qu'il n'existe aucun espace, aucun caractère caché
pour dire qu'il n'existe aucun espace, aucun caractère caché
en fait je pense avoir compris le soucis.
généralement tu as 7 caractères sur la première ligne par exemple et sur la seconde tu vas avoir le 8ème caractère qui va être ajouté pour différencier de la ligne précédente.
ex : J033AJD, J033AJDA, J033AJDB etc --> J033AJDA et J033AJDB seront bien effacées
en fait la macro ne fonctionne pas dans le cas où ta première ligne à déjà 8 caractères et les suivantes aussi
ex : U023052R, U023052S, U023052T --> aucune n'est effacée
généralement tu as 7 caractères sur la première ligne par exemple et sur la seconde tu vas avoir le 8ème caractère qui va être ajouté pour différencier de la ligne précédente.
ex : J033AJD, J033AJDA, J033AJDB etc --> J033AJDA et J033AJDB seront bien effacées
en fait la macro ne fonctionne pas dans le cas où ta première ligne à déjà 8 caractères et les suivantes aussi
ex : U023052R, U023052S, U023052T --> aucune n'est effacée
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
Modifié par michel_m le 13/12/2010 à 14:15
Modifié par michel_m le 13/12/2010 à 14:15
bonjour,
le temps de retrouver les classeurs avec la macro et je regarde en fin de pm mais il faut que je me remette le pb en t^te !
le temps de retrouver les classeurs avec la macro et je regarde en fin de pm mais il faut que je me remette le pb en t^te !
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
13 déc. 2010 à 16:15
13 déc. 2010 à 16:15
re,
essaies cette modif (un peu au jugé!)
Tu dis...
essaies cette modif (un peu au jugé!)
... With Sheets("STATUS_XLS 1 ") Derlig = .Range("C1000").End(xlUp).Row Ref = .Cells(Lig, 3) & Left(.Cells(Lig, 1), 7) For Lig = 3 To Derlig If Ref = .Cells(Lig, 3) & Left(.Cells(Lig, 1), 7) Then ...
Tu dis...
il me met une erreur 1004
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
13 déc. 2010 à 16:21
13 déc. 2010 à 16:21
Où ?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
13 déc. 2010 à 16:34
13 déc. 2010 à 16:34
Je viens d'essayer ca marche
U023052S ligne 57, U023052T ligne 58 ont été supprimées..
http://www.cijoint.fr/cjlink.php?file=cj201012/cijm5MKtkk.xls
U023052S ligne 57, U023052T ligne 58 ont été supprimées..
http://www.cijoint.fr/cjlink.php?file=cj201012/cijm5MKtkk.xls
je suis rentré chez moi pour essayer sur un autre pc mais y a un bug
j'ai repris le fichier initial en grisant les lignes qui doivent disparaître et orangé celles qu'on doit retrouver après passage de la macro, copié ton code avec la modif mais je retrouve des cellules grisées, on dirait que la macro s'arrête avant d'aller à la fin
http://www.cijoint.fr/cjlink.php?file=cj201012/cijMTZ7xIv.xls
voici le fichier avant de lancer la macro
j'ai repris le fichier initial en grisant les lignes qui doivent disparaître et orangé celles qu'on doit retrouver après passage de la macro, copié ton code avec la modif mais je retrouve des cellules grisées, on dirait que la macro s'arrête avant d'aller à la fin
http://www.cijoint.fr/cjlink.php?file=cj201012/cijMTZ7xIv.xls
voici le fichier avant de lancer la macro
Hello
on m'avait donné jusqu'à la fin de l'année pour mettre au point une macro pour supprimer les doublons et ce matin je me suis penché sur la question.
finalement j'ai réussi à pondre un code qui fonctionne nickel.
Ca peut tjs servir
Sub sup_doublons()
Dim i As Integer, k As Integer, var As Integer
For i = 1 To Range("A65536").End(xlUp).Row
var = 0
nom1 = Range("A" & i).Value
nom3 = Range("C" & i).Value
For k = i + 1 To Range("A65536").End(xlUp).Row
nom2 = Range("A" & k).Value
nom4 = Range("C" & k).Value
If nom3 = nom4 Then
If Left(nom2, 7) = Left(nom1, 7) Then
var = 1
Rows(k).Delete
k = k - 1
End If
End If
Next k
Next i
End Sub
on m'avait donné jusqu'à la fin de l'année pour mettre au point une macro pour supprimer les doublons et ce matin je me suis penché sur la question.
finalement j'ai réussi à pondre un code qui fonctionne nickel.
Ca peut tjs servir
Sub sup_doublons()
Dim i As Integer, k As Integer, var As Integer
For i = 1 To Range("A65536").End(xlUp).Row
var = 0
nom1 = Range("A" & i).Value
nom3 = Range("C" & i).Value
For k = i + 1 To Range("A65536").End(xlUp).Row
nom2 = Range("A" & k).Value
nom4 = Range("C" & k).Value
If nom3 = nom4 Then
If Left(nom2, 7) = Left(nom1, 7) Then
var = 1
Rows(k).Delete
k = k - 1
End If
End If
Next k
Next i
End Sub