Suppression Automatique des Doublons

TrucNuch

XLDnaute Junior
Bonjour à tous,

A chaque jour sont nouveau problème !

J'identifie les doublons avec une formule simple (=SI(B3=B2;"oui";"non")) qui je matérialise par un "OUI" pour les lignes à supprimer.

Avec une petite macro, je sélectionne via le filtre automatique ces "OUI" et je supprimes les lignes.

Je souhaiterais automatiser cette action dans plusieurs fichiers différents, mais la difficulté réside dans le fait que ces doublons ne sont jamais identifies aux même N° de lignes, quand aux nombre de lignes, elles varient de 100 à plusieurs milliers.

Si j'utilise la macro, cela se traduit par des doublons (Lignes) non supprimées.

Je joins le fichier "Test", la colonne de tri J n'est pas figée, dans d'autres fichiers ou j'utilise la même formule cela change.

Avez-vous une proposition ?

Merci,

Cdt,
 

jeanpierre

Nous a quitté
Repose en paix
Re : Suppression Automatique des Doublons

Bonjour TrucNuch,

Essaie avec, en J2 : =NB.SI($B$2:$B$186;B2), plage à adapter.

Double clic sur le coin bas à droite de la cellule pour alimenter toute la colonne (s'il n'y a pas de cellules vides immédiatement à gauche)

Ainsi, au lieu de supprimer toute ligne qui comporte "Oui", tu supprimes toutes les lignes supérieures à 1.

Je n'ai pas compris ta colonne K qui fait référence à C.

Bonne journée.

Jean-Pierre
 

TrucNuch

XLDnaute Junior
Re : Suppression Automatique des Doublons

Bonjour Jean-Pierre,

Désolé, j'aurais du mettre le bon fichier.
Ci-joint le nouveau fichier.

Tu peux constater en J le résultat attendu.
En K j'ai fait l'essai avec la formule, mais ce n'est pas probant !

Peux-tu y jetter un œil ?

Merci
Cdt,
 

jeanpierre

Nous a quitté
Repose en paix
Re : Suppression Automatique des Doublons

Re,

De toutes façons ma formule n'était pas bonne, elle supprimait sans conservation d'un exemplaire unique.

Essaie celle-ci en J2 : =SI(B2<>B1;"non";SI(B2=B1;"oui";"non")), elle correspond, cette fois, à ta demande.

Jean-Pierre
 

TrucNuch

XLDnaute Junior
Re : Suppression Automatique des Doublons

JP,

Ok pour la formule, ca fonctionne, mais la finalité est de supprimer en automatique les lignes repérées "OUI".

Pour y parvenir comme j'expliqué précédemment j'ai automatisé via une petite macro crée en mode absolu et non en Macro VBA ces suppressions de lignes.

Mais du fait que les données des fichiers sont aléatoires (dans les nombres de lignes à traiter), ma macro qui est faite sur le format du fichier joint ne fonctionnera pas correctement pour les fichiers suivant.

Les lignes à supprimées ne seront pas positionner sur les mêmes N° de lignes.

C'est là que j'ai besoin de vos suggestions pour mettre en place une formule ou macro qui sera applicable dans n'importe quels fichiers.

Basiquement: Si K (colonne ou j'ai mis la formule) = OUI ==> Supprimer lignes correspondantes.

Je pense que cette approche pourrait etre une solution.

Je ne sais pas si mes explications sont claires,au cas ou n'hesites pas à demander de clarifier.
A+,
 
Dernière édition:

Dull

XLDnaute Barbatruc
Re : Suppression Automatique des Doublons

Salut TrucNuch, JP:), le Forum

Essayes avec ces lignes de Codes

Code:
Option Explicit
Dim C As Range
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
For Each C In Range("B2:B" & Range("B" & Rows.Count).End(xlUp).Row)
    If C.Offset(-1, 0).Value = C.Value Then C.EntireRow.Delete
Next C
Application.ScreenUpdating = False
End Sub
Mais ce que je ne comprend pas c'est qu'il faut appuyer 3 fois sur le bouton pour que TOUS les doublons soient supprimés alors qu'avec C.EntireRow.Hidden=True à la place de C.EntireRow.Delete ça Fonctionne pour tout les Doublons :confused:

Je joint le Fichier pour Information et Suite à donner

(Fautquej'arrêteWordMoi...):p

Bonne Journée
 

jeanpierre

Nous a quitté
Repose en paix
Re : Suppression Automatique des Doublons

Re, Salut Dull,

"Mais ce que je ne comprend pas c'est qu'il faut appuyer 3 fois sur le bouton pour que TOUS les doublons"

3 fois et plus selon le nombre de "oui" qui se suivent.

C'est normal car dés que tu as supprimé une ligne, la suivante est remontée et n'est plus traitée.

Bonne journée et meilleurs voeux.

Jean-Pierre
 

TrucNuch

XLDnaute Junior
Re : Suppression Automatique des Doublons

Re, Salut DULL,

Comme tu le precises,ta solution fonctionne (sauf qu'il faut relancer X fois la macro) pour supprimer toutes les lignes concernées.

Autre problematique, cette mini macro devra s'imbriquer dans une macro Microsoft Office Excel realisée en automatique.
J'essaye de récupérer les codes pour les adapter dans cette macro générique (afin de l'utiliser pour mes autres fichiers) mais impossible de la faire fonctionner.

Le problème ne peut venir que de ma manip, mais je ne trouve pas l'erreur !!!
Un message "erreur de compilation" bloque le lancement de cette dernière.

J'ai également essayé de la récupérer via tes boutons sans succès.
Dailleur le bouton "Cacher les lignes" est intéressent!
En clair, peux-tu m'expliquer comment faire, enfin si c'est faisable.

Merci,
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Suppression Automatique des Doublons

Bonjour à tous
Je doute qu'une structure For Each... ...Next soit adaptée à ce problème.
Sous réserve de remplacer la formule
Code:
[COLOR="DarkSlateGray"][B]=SI(C3=C2;"oui";"non")[/B][/COLOR]
par
Code:
[COLOR="DarkSlateGray"][B]=SI([COLOR="Sienna"]DECALER(C2;1;)[/COLOR]=C2;"oui";"non")[/B][/COLOR]
en K2, le code suivant
Code:
[COLOR="DarkSlateGray"][B]Sub toto()
Dim tPlg, i As Long
   tPlg = Range("[COLOR="Sienna"]K1:K[/COLOR]" & Range("[COLOR="Sienna"]K[/COLOR]" & Rows.Count).End(xlUp).Row)
   With Application: .ScreenUpdating = False: .Calculation = xlCalculationManual: End With
   On Error GoTo E
   For i = UBound(tPlg, 1) To 2 Step -1
      If tPlg(i, 1) = "oui" Then Rows(i).EntireRow.Delete
   Next i
E: With Application: .Calculation = xlCalculationAutomatic: .ScreenUpdating = True: End With
End Sub[/B][/COLOR]
fonctionne (en une passe) sur le classeur du message #1.​
ROGER2327
#2557


Note : j'en étais resté au message #6 en rédigeant ces lignes. Elles ne répondent donc pas aux messages suivants.
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Suppression Automatique des Doublons

bonjour a tous

Dans le domaine de la suppression de doublons j'opte generalement pour le classique

Peux-tu tester ceci qui ne se preoccupe pas de la colonne J (du coup elle perd un peu en utilité)

Code:
Sub supp_doublons()
For n = Range("B65536").End(xlUp).Row To 2 Step -1
  If Range("B" & n) = Range("B" & n - 1) Then
   Rows(n).Delete
  End If
Next n
End Sub
 
NB: La feuille est supposée classée en colonne B
 

TrucNuch

XLDnaute Junior
Re : Suppression Automatique des Doublons

Re,

Je note vos suggestions, je les essayerai dés que possible, mais là je dois m'absenter.

Mais compte tenu du "niveau" des solutions avancées, je devrais en tant que néophyte en baver !!!
Je suis preneur de solutions mais également d'explications pour la mise en pratique, c'est comme cela que l'on apprends sur "le tas" enfin je crois.

Je vous tiendrais au courant des résultats.

Bonne soirée.

Cdt,
 
Dernière édition:

TrucNuch

XLDnaute Junior
Re : Suppression Automatique des Doublons

Bonjour à tous,

Pierre jean,

Effectivement ca fonctionne sous la condition que la colonne B soit classer, le problème c'est que le fichier initial ne doit pas être modifié (Pas de filtre).
De ce fait je ne peux exploiter correctement ton code.

Merci quand même.

ROGER 2327,

Ok, c'est tout bon.

Reste plus qu'à adapter dans la macro "d'actions Automatique" créée en amont.

Je devrais y parvenir !

Merci à tous, bonne journée.
A+,
 

Discussions similaires

Statistiques des forums

Discussions
312 472
Messages
2 088 709
Membres
103 928
dernier inscrit
MIKETUAU