supprimer toutes les lignes qui à partir de B9 sont en double

Broch002

XLDnaute Occasionnel
Bonjour, au forum.

En glanant sur le Web, j'ai trouvé ce code pour éliminer les doublons à parti de A2
J'ai essayer de la modifier pour que le trie ce face sur la colonne B
et à partir de la ligne 9 (B9) et et les doublons sont toujours présents (et je m’arrache les cheveux).

Quelqu'un a-t'il une solution.

Code:
Sub supDoublonsTradi()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
[A1].Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess
For i = [A65000].End(xlUp).Row To 2 Step -1
If Cells(i, 1) = Cells(i - 1, 1) Then Rows(i).Delete
Next i
Application.Calculation = xlCalculationAutomatic
End Sub

Merci d'avance.

Broch002
 

Broch002

XLDnaute Occasionnel
Re : supprimer toutes les lignes qui à partir de B9 sont en double

Bonjour,

Voici l'un des nombreux essais, le dernier

Sub SUPPRIMER_DOUBLONS()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
[A1].Sort Key1:=Range("B9"), Order1:=xlAscending, Header:=xlGuess
For i = [A65000].End(xlUp).Row To 2 Step 1
If Cells(i, 1) = Cells(i - 1, 2) Then Rows(i).Delete
Next i
Application.Calculation = xlCalculationAutomatic
End Sub

A+
 

Legolas

XLDnaute Occasionnel
Re : supprimer toutes les lignes qui à partir de B9 sont en double

Re,

En interprétant le code :
For i = [A65000].End(xlUp).Row To 2 Step 1 => tu pars de la dernière ligne non vide, jusque la ligne 2 mais avec une incrémentation positive...
If Cells(i, 1) = Cells(i - 1, 2) => par ex : si A8 = B7 supprimer la ligne 8

Peux tu nous mettre le fichier en pièce jointe stp ?

A première vue :

VB:
Sub SUPPRIMER_DOUBLONS()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
[B1].Sort Key1:=Range("B9"), Order1:=xlAscending, Header:=xlGuess '... je sais pas où la ligne de titre...
For i = [B65000].End(xlUp).Row To 9 Step -1
If Cells(i, 2) = Cells(i - 1, 2) Then Rows(i).Delete
Next i
Application.Calculation = xlCalculationAutomatic
End Sub

A+
 

Broch002

XLDnaute Occasionnel
Re : supprimer toutes les lignes qui à partir de B9 sont en double

Bonjour,

Voici le fichier.
J'ai volontairement doublé les lignes 9/23 de 24 à 39.
Bien sur ce n'est pas comme cela, mais pour tester.....
Merci de votre aide.

A+
 

Pièces jointes

  • Test broch002.xlsx
    15.3 KB · Affichages: 33
  • Test broch002.xlsx
    15.3 KB · Affichages: 37
  • Test broch002.xlsx
    15.3 KB · Affichages: 37

Legolas

XLDnaute Occasionnel
Re : supprimer toutes les lignes qui à partir de B9 sont en double

Re,

En utilisant la fonction tableau, pas besoin de macro...
Tu sélectionnes toute ta plage de données : B7 à D39
Insertion, tableau (la mise en forme peut faire peur mais elle se modifie facilement)
Une fois le tableau créé :
Onglet Outils de tableau, supprimer les doublons.
Sélectionner toutes les colonnes et le travail est fait...
 

Pièces jointes

  • Test%20broch002(1).xlsx
    11.6 KB · Affichages: 32

Broch002

XLDnaute Occasionnel
Re : supprimer toutes les lignes qui à partir de B9 sont en double

Re,

En utilisant la fonction tableau, pas besoin de macro...
Tu sélectionnes toute ta plage de données : B7 à D39
Insertion, tableau (la mise en forme peut faire peur mais elle se modifie facilement)
Une fois le tableau créé :
Onglet Outils de tableau, supprimer les doublons.
Sélectionner toutes les colonnes et le travail est fait...

Bonsoir,

Ce tableau est généré par une macro, il faut donc que ce code soit intégré à la Macro.

D'ou ma question.

Merci.

A+
 

laetitia90

XLDnaute Barbatruc
Re : supprimer toutes les lignes qui à partir de B9 sont en double

bonjour tous :)

comme je comprends en fonction de ton fichier a partir de la ligne 8 a adapter

Code:
Dim m As Object, i As Long, z As Variant
 Application.ScreenUpdating = False
 Set m = CreateObject("Scripting.Dictionary")
 For i = Cells(Rows.Count, 2).End(xlUp).Row To 8 Step -1
 z = Cells(i, 2) & Cells(i, 3)
 If Not m.Exists(z) Then m.Add z, z Else Rows(i).Delete
 Next i
 

Broch002

XLDnaute Occasionnel
Re : supprimer toutes les lignes qui à partir de B9 sont en double

Bonsoir,

Votre macro fonctionne sous le fichier test qui n'est qu'un cas possible du fichier originale.
Je pense qu'il est mieux de joindre un fichier qui résume ce que fait toute la macro en amont de ce que devrait faire le code.
1. Année 2013, elle remplit les lignes B9/D9 à la ligne XXX de la colonne, qui est variable en fonction du nombre de références.
2. Année 2012, elle remplit des lignes à un emplacement en fin de fichier.
3. Comme il y des références qui disparaissent et d'autre qui se créées, elle copie à la première ligne vide de le colonne B le résultat de 2.
4 et c'est là qu'intervient le code chercher, éliminer les lignes en double (références en double).
5. ensuite le code reprends et par une recherche verticale, renseigne les cellules E9/F9 => à ....... des résultats 2012.
C'est pas claire, mais le fichier devrait être plus explicite.
 

Pièces jointes

  • Test broch002.xlsx
    34.5 KB · Affichages: 46
  • Test broch002.xlsx
    34.5 KB · Affichages: 47
  • Test broch002.xlsx
    34.5 KB · Affichages: 49
Dernière édition:

Broch002

XLDnaute Occasionnel
Re : supprimer toutes les lignes qui à partir de B9 sont en double

Bonsoir,

Votre macro fonctionne sous le fichier test qui n'est qu'un cas possible du fichier originale.
Je pense qu'il est mieux de joindre un fichier qui résume ce que fait toute la macro en amont de ce que devrait faire le code.
1. Année 2013, elle remplit les lignes B9/D9 à la ligne XXX de la colonne, qui est variable en fonction du nombre de références.
2. Année 2012, elle remplit des lignes à un emplacement en fin de fichier.
3. Comme il y des références qui disparaissent et d'autre qui se créées, elle copie à la première ligne vide de le colonne B le résultat de 2.
4 et c'est là qu'intervient le code chercher, éliminer les lignes en double (références en double).
5. ensuite le code reprends et par une recherche verticale, renseigne les cellules E9/F9 => à ....... des résultats 2012.
C'est pas claire, mais le fichier devrait être plus explicite.

Bonsoir,

S'il vous faut plus d'information, prévenez-moi.

A+

Broch002
 

laetitia90

XLDnaute Barbatruc
Re : supprimer toutes les lignes qui à partir de B9 sont en double

re,tous:)

comme je comprends

Code:
Sub es()
 Dim t(),  i As Long, c As Range, m As Object
 Application.ScreenUpdating = 0: Application.DisplayAlerts = 0
 Set m = CreateObject("Scripting.Dictionary")
 t = Range("b9:f" & Cells(Rows.Count, 2).End(xlUp).Row).Value
 For i = 1 To UBound(t)
 m(t(i, 1)) = m(t(i, 1)) & t(i, 2) & "¤" & t(i, 3) & "¤" & t(i, 4) & "¤" & t(i, 5)
 Next i
 Range("b9" & ":f" & Cells(Rows.Count, 2).End(xlUp).Row).Delete
 [b9].Resize(m.Count) = Application.Transpose(m.keys)
 [c9].Resize(m.Count) = Application.Transpose(m.Items)
 For Each c In Range("c9", Cells(Rows.Count, "c").End(xlUp))
 c = Replace(c, "¤¤¤¤", "¤")
 c.TextToColumns c, xlDelimited, , , , , , , True, "¤"
 Next c
End Sub

si tu as vraiment beaucoup de lignes on peut le faire avec des tablos + split plus rapide
on verra aprés:)
 

Statistiques des forums

Discussions
312 103
Messages
2 085 324
Membres
102 862
dernier inscrit
Emma35400