Regroupé les doublons d'une liste et incrémenter une valeur

moustiik

XLDnaute Nouveau
Bonjour!
je reviens (une fois de plus^^) vers vous :) question du jour bonjour!!

voilà après avoir avancé dans mes petites affaires, avoir réussi à transférer ce que je voulais transférer il me reste quelques petites choses à améliorée^^

donc je me retrouve avec un fichier du style:

carotte / 1
poireau / 1
tomate / 1
poireau / 1

et je voudrais avoir une macro qui regrouperait mes doublons de manière à avoir

carotte / 1
poireau / 2
tomate / 1

je vous joins le fichier excel d'exemple

cordialement,
une inculte d'excel qui admire vos compétences!
 

Pièces jointes

  • exemple trie des doublons.xlsx
    9.3 KB · Affichages: 314

JNP

XLDnaute Barbatruc
Re : Regroupé les doublons d'une liste et incrémenter une valeur

Re :),
Juste une petite erreur, je n'ai pas considéré le cas où il n'y avait pas de doublon :eek:...
Il suffit de modifier cette ligne
Code:
Range("B" & Hauteur + 1 & ":E" & DerLig + 1).ClearContents
et ça devrait être bon :p...
Bon courage :cool:
 

moustiik

XLDnaute Nouveau
Re : Regroupé les doublons d'une liste et incrémenter une valeur

bon sa ne supprime plus les références :) mais par contre sa supprime le nbre de doublon :/ sa fait combien d'année que tu/vous pratiques/ez excel et les macros?
 

JNP

XLDnaute Barbatruc
Re : Regroupé les doublons d'une liste et incrémenter une valeur

Re :),
Oui, je calculais la quantité avec le nombre de fois où la réf était présente, donc la 2ème fois, évidemment, elle n'était présente qu'une fois :rolleyes:...
Une seule ligne à changer
Code:
Tableau(I, 2) = Evaluate("sumproduct((" & MaRéf.Address & "=""" & temp(I) & """)*(" _
    & Replace(MaRéf.Address, "B", "D") & "))")
Depuis quand je pratique VBA :rolleyes: ?
Ben depuis mon inscription sur le forum :p...
Et le "tu" es grosso modo de rigueur sur le forum :).
Et enfin, les bises sont autorisées :p...
Bises :cool:
 

david84

XLDnaute Barbatruc
Re : Regroupé les doublons d'une liste et incrémenter une valeur

Bonsoir tout le monde,
JNP:) ayant fourni une possibilité VBA, ci-joint une possibilité via formules (classement sans doublons triés).
A+
 

Pièces jointes

  • fichier_doublons-1.xlsm
    25.6 KB · Affichages: 84
  • fichier_doublons-1.xlsm
    25.6 KB · Affichages: 104
  • fichier_doublons-1.xlsm
    25.6 KB · Affichages: 109

david84

XLDnaute Barbatruc
Re : Regroupé les doublons d'une liste et incrémenter une valeur

Re
Erreur dans le fichier précédent : ci-joint nouveau fichier.
A+
 

Pièces jointes

  • fichier_doublons-1.xlsm
    25.8 KB · Affichages: 130
  • fichier_doublons-1.xlsm
    25.8 KB · Affichages: 130
  • fichier_doublons-1.xlsm
    25.8 KB · Affichages: 119

NektarMinuit

XLDnaute Nouveau
Re : Regroupé les doublons d'une liste et incrémenter une valeur

Bonjour,
La discussion est éloignée dans le temps mais toujours d'actualité puisque je me retrouve confrontée au même probleme.
En revanche, les colonnes ne sont pas les mêmes et je vais jusqu'à traiter 4 colonnes et une colonne valeur.
En clair si la concaténation des 4 champs s'avère être un doublon dans ma liste de plus de 120 000 lignes, alors je dois les sommer.
Les lignes uniques conservent leur valeur comprise dans la colonne "valeur".
J'ai essayé de reprendre le language VBA de JNP et de l'adapter à mon cas mais sans succès donc si vous voulez bien me venir en aide, j'en serais honorée.
Merci beaucoup.
NM
 

NektarMinuit

XLDnaute Nouveau
Re : Regroupé les doublons d'une liste et incrémenter une valeur

Medey Medey,
Est ce que quelqu'un m'entend ?????:)
Je vous joins au message précédent, un exemple ainsi cela sera certainement plus parlant.
Le principe est simple (mais pas si simple pr moi!!!), dès lors où nous avons identifié des doublons via une mise en forme conditionnelle j'aimerais qu'en actionnant le regroupement de la macro,voir uniquement la charge des doublons additionnée et le must portée sur une seule ligne qui au final deviendra unique.
Alors qu'est ce que vous en dîtes?!! Faisable? Merci de vos réponses par avance.
Cordialement
NM
 

Pièces jointes

  • fichier_doublons.xlsm
    27.2 KB · Affichages: 70
  • fichier_doublons.xlsm
    27.2 KB · Affichages: 71
  • fichier_doublons.xlsm
    27.2 KB · Affichages: 78

Dranreb

XLDnaute Barbatruc
Re : Regroupé les doublons d'une liste et incrémenter une valeur

Bonsoir.
Pourquoi ne commenceriez vous pas par tout classer sur ces 4 colonnes ? Les lignes à sommer se retrouveraient alors ensemble.

P.S. Chez moi cette procédure a l'air de fonctionner :
VB:
Sub SuppressionDesDoublons()
With Feuil1.Rows(2).Resize(Feuil1.Cells(Feuil1.Rows.Count, 1).End(xlUp).Row - 1)
    .Sort Key1:=.Columns(3), Order1:=xlAscending, Key2:=.Columns(4), Order2:=xlAscending, _
        Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
    .Sort Key1:=.Columns(1), Order1:=xlAscending, Key2:=.Columns(2), Order2:=xlAscending, _
        Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
    .Columns(10).FormulaR1C1 = "=AND(RC1=R[-1]C1,RC2=R[-1]C2,RC3=R[-1]C3,RC4=R[-1]C4)"
    .Columns(9).FormulaR1C1 = "=RC7+IF(R[1]C10,R[1]C9,0)"
    .Columns(8).FormulaR1C1 = "=IF(RC10,""Suppr"",RC9)"
    .Columns(7).Value = .Columns(8).Value
    .Columns(7).SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete
    End With
Feuil1.[H:J].Delete
End Sub
S'il fallait conserver l'ordre de 1ère apparition de chaque combinaison, ce qui aurait pu être votre objection, il serait possible de commencer par noter le numéro de ligne dans une 11ème colonne, valeurs figées, puis de tout reclasser dessus à la fin.
 
Dernière édition:

NektarMinuit

XLDnaute Nouveau
Re : Regroupé les doublons d'une liste et incrémenter une valeur

Bonjour Dranreb,
Merci de ton retour que je regarde au fur et à mersure.
En effet, le tri sur les colonnes est judicieux car j'arrive à mieux cerner les doublons et donc les on se rend mieux compte de la charge qui DOIT être cumulée et au final après passage de la macro nous devons abolument avoir le même total de la charge.
Chose qu'actuellement le language vba ne fait pas ou sinon j'ai râté quelque chose :)
Si je dois prendre l'exeemple du doublon de "BMXCPS2010schneiderPierre41640", on voit qu'il est dupliqué 2 fois avec de la charge de 136h et 120h. En fin de compte on devrait voir sur une ligne porté par BMXCPS2010schneiderPierre41640 une charge de 256h et non pas 136h ou 120h.
En faisant le total, nous avons 1126 h et 17 lignes et avec la macro, je suis censée avoir toujours 1126 h dans la colonne F mais 12lignes.
On est sur la bonne voie!!!!!
 

Dranreb

XLDnaute Barbatruc
Re : Regroupé les doublons d'une liste et incrémenter une valeur

Bonjour.
Dans le classeur joint, une des 2 lignes du BMXCPS2010schneiderPierre41640 avait sa cellule Charge heure vide, l'autre à 120. Ce qui fait bien un total de 120. Suggestion: mettez un stop avant l'instruction .Columns(7).Value = .Columns(8).Value pour examiner les choses à ce state.
 

NektarMinuit

XLDnaute Nouveau
Re : Regroupé les doublons d'une liste et incrémenter une valeur

En effet je ne sais pas où avais la tête !!! je me mélange les pinceaux avec tous les fichiers ouverts en même temps. Au temps pour moi !!! Avant la macro on a 990 heures et après 990 heures
Sinon croyez vous que dès lors où je vais l'adapter à mon fichier avec plus de 120 000 lignes, il va digérer ce lourd processus? je crains le pire!
Par contre dans le vba, si ma feuille 1 se nomme XXX il faut absolument que je change Feuill1 oar XXX. ET autre petite question subsidiaire : si tant est qu'il y est des colonnes entre les colonnes déjà existantes, cela décale du coup tes formules de Columns (n)?
Enfin pr que je comprenne , qu'est ce tes KEY? Au final servons nous de la colonne concaténation? Ou bien elle sert à rien.
Bon appetit:)
 

Dranreb

XLDnaute Barbatruc
Re : Regroupé les doublons d'une liste et incrémenter une valeur

Sinon croyez vous que dès lors où je vais l'adapter à mon fichier avec plus de 120 000 lignes, il va digérer ce lourd processus?
C'est pourquoi j'ai écris une procédure qui descend tout droit, sans boucle. J'ignore si un tri en une seule passe par l'objet Sort, propriété Sort de l'objet Workheet, comme c'est la mode, apporterait une amélioration par rapport à la méthode Sort de l'objet Range.
Par contre dans le vba, si ma feuille 1 se nomme XXX il faut absolument que je change Feuill1 oar XXX
Pour une macro qui travaille avec les feuilles du classeur contenant son projet VBA, j'utilise toujours le nom VBA de l'objet Workseet, rubrique "Microsoft Excel Objets", pas le nom Excel de la feuille correspondante qui exige de sa part une recherche absurde dans sa collection Sheets.
si tant est qu'il y est des colonnes entre les colonnes déjà existantes, cela décale du coup tes formules de Columns (n)?
Oui, bien sûr il faut utiliser des colonnes libres, et modifier les Cx en conséquence dans les formules.
Au final servons nous de la colonne concaténation? Ou bien elle sert à rien.
Elle ne sert à rien.
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
314 655
Messages
2 111 605
Membres
111 217
dernier inscrit
aladinkabeya2