Effacer les doublons

siocnarf

XLDnaute Occasionnel
Bonjour,

J'ai un petit problème que j'ai tenté de résumer plus bas (et dans la pièce jointe). J'ai une série de composant et certaines ont une version et d'autres pas. Ainsi la composant Pomme a le no 1. La composant Pomme est présente deux fois. L'une a un no de version et l'autre pas.

Je souhaiterais donc supprimer la ligne contenant le composant si celui-ci est en double et que le no de version est vide. Dans l'exemple que je donne je ne conserverais que la seconde ligne du composant 1 (pour le composant 1).

Composant Version No
Pomme 1
Pomme 1.0 1
Orange 1.0 2
Raisin 1.0 2
tomate 3
Carotte 1.0 4
Carotte 4

Je souhaites effectuer cet exercice pour tous les composants. Le véritable fichier a 22 000 lignes. Il faut donc que cela soit dynamique.

Comment on ferait cela?

Merci,

François
 

Pièces jointes

  • test.xls
    36 KB · Affichages: 26
  • test.xls
    36 KB · Affichages: 31
  • test.xls
    36 KB · Affichages: 27

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Effacer les doublons

Re,


Pour un grand nombre de lignes à traitre, il vaut mieux figer l'affichage
avec ce code:
Code:
Sub Macro1()
Application.ScreenUpdating = False
For i = Range("A65535").End(xlUp).Row To 2 Step -1
    If WorksheetFunction.CountIf(Range("A:A"), Cells(i, 1)) > 1 And Cells(i, 2) = "" Then Rows(i).Delete
Next i
Application.ScreenUpdating = True
End Sub

à+
Philippe
 

phlaurent55

Nous a quittés en 2020
Repose en paix

siocnarf

XLDnaute Occasionnel
Re : Effacer les doublons

Bonjour,

Il semble y avoir un problème avec votre code. Peut-être mon explication était-elle incorrecte. Je vais donc reformuler.
Il faut dire que dans mon post mon exemple à l'écran a mal sortie...

La dernière colonne contient des nos d'ordinateurs (dernière colonne). Dans votre exemple, cette colonne est vide.
J'ai des ordinateurs qui peuvent avoir des éléments (colonne A) qui sont redondants. Ma différence est dans la version. En effet, lorsque redondant, il y aura un vide dans la colonne version. Donc lorsqu'il y a une redondance pour un ordinateur, on doit supprimer la ligne avec le no de version vide.

Attention, un élément avec un no de version vide mais pas de redondance doit être conservée.
Dans l'exemple que je rejoins avec votre macro: Poireau 5 est retiré alors qu'il devrait demeurer, de même pour laitue 6.

Merci,

François
 

Pièces jointes

  • test.xlsm
    17.2 KB · Affichages: 17
  • test.xlsm
    17.2 KB · Affichages: 24
  • test.xlsm
    17.2 KB · Affichages: 23

siocnarf

XLDnaute Occasionnel
Re : Effacer les doublons

Bonjour,

Il semble qu'une formule tel: =SOMMEPROD(($B$1:$B1395=$B1396)*($G$1:$G1395=$G1396)*($B1396<>"")*($C1396="")) pourrait régler mon problème. Toutefois, je m'interroge sur l'effet qu'elle aura sur la performance du classeur. Ici la formule représente ce qu'elle aura l'air à la ligne 1396. Donc à la ligne 1, cela sera rapide mais à la ligne 20 000...

Je vais la transcrire en vba et on verra à moins d'une meilleure proposition.

Merci,

François
 

Discussions similaires

Statistiques des forums

Discussions
312 377
Messages
2 087 738
Membres
103 656
dernier inscrit
chaval