Suppression doublons et addition de valeurs

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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+ 😉
 
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

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 😛

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

D
Réponses
10
Affichages
1 K
débutantplus
D
M
Réponses
4
Affichages
829
M
N
  • Question Question
Réponses
5
Affichages
3 K
M
  • Question Question
Réponses
2
Affichages
1 K
E
Réponses
12
Affichages
2 K
Evgueny
E
G
  • Question Question
Réponses
3
Affichages
2 K
Greenstrawberry
G
I
Réponses
3
Affichages
1 K
G
Réponses
4
Affichages
1 K
G
B
Réponses
2
Affichages
1 K
Retour