Suppression doublons et addition de valeurs

Gipéhel

XLDnaute Occasionnel
Bonjour à tous,
Le fichier joint a pour but de supprimer les doublons après avoir additionné les valeurs contenues en colonne D.
Pour supprimer les doublons de la feuille 1 en totalité, il faut que je relance la macro plusieurs fois. Il y a de toute évidence, un bug dans ce que j’ai fait.
Je remercie d’avance celui ou celle qui pourra me proposer une solution.
JP.
[file name=EssaisSupDdoublons.zip size=16600]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/EssaisSupDdoublons.zip[/file]
 

Pièces jointes

  • EssaisSupDdoublons.zip
    16.2 KB · Affichages: 168

ZZR09

XLDnaute Occasionnel
Bonjour Gipehel62, le forum

je viens de regarder ta macro,
en enlevant Exit For de ta boucle i tu devrais résoudre ton problème.
En effet, par cette commande tu ne peux géréer qu'unseul doublon à la fois et il faut donc relancer ta macro s'il y a plusieurs doublons.

Je fait quelques essais avec ta macro puis je t'enverrai un fichier.

A+ ;)
 

Gipéhel

XLDnaute Occasionnel
Bonjour et merci ZZR09,
Ce que tu as fait est presque parfait, en effet, il reste un petit bug car en fin de tableau, il ya 2 donblons qui n'ont pas été détectés. (W9335 et Y1039).
Merci.
[file name=GipeHel622.zip size=21719]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/GipeHel622.zip[/file]
 

Pièces jointes

  • GipeHel622.zip
    21.2 KB · Affichages: 185

ZZR09

XLDnaute Occasionnel
Re,

Oui je vois le problème :
Quand on supprime une ligne, il faut rétrograder le compteur i sinon il passe une ligne après dans la boucle :p

Exemple

il est à la ligne 4 et détect un doublon, il fait ses opérations et supprime la ligne 4.
La ligne 5 devient ligne 4 :sick:
au tout suivant il analyse la ligne suivante :ligne 5 ... qui l'ancienne ligne 6 ...
En fait, la ligne 5 est passée à la trappe !

Il faut rajouter une ligne du genre
i=i-1 dans la boucle i



Code:
 For Each Cell In Range('B1:B' & Range('B65536').End(xlUp).Row)
  
                    For i = 1 To Range('B65536').End(xlUp).Row
                              Set Rng = Cell.Offset(i, 0)
                              If Rng <> '' And Rng = Cell Then
                                        Range('B' & Cell.Row).Select
                                        Ligne = Cell.Row
                                        ' ajout des valeurs de la colonne D lors d'une détection de doublons
                                        Cells(Ligne, 4).Value = Cells(Ligne, 4).Value + Cells(Ligne + i, 4).Value
                                        ' suppression de la ligne en doublons
                                        Range(Cells(Ligne + i, 1), Cells(Ligne + i, 5)).Delete
                                        'Ajouter à la liste
                                        UserForm1.ListBox1.AddItem (Cells(Ligne + i, 2))
                                        ' sortie de la boucle
                                    [B] i = i - 1 [/B]
                              End If
                    Next i
  Next Cell
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 246
Membres
103 498
dernier inscrit
FAHDE