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

Dranreb

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

Bonjour.
Essayez de construire un rapport de tableau croisé dynamique.
Ça doit sûrement quand même encore exister, même si ça ne se pilote plus de tout de la même façon que chez moi.
Cordialement.
 

MJ13

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

Bonjour moustiik, Dranreb

Voir le TCD dans ce fichier (avec insertion Tableau croisé dynamique):
 

Pièces jointes

  • TCD.xls
    15 KB · Affichages: 345
  • TCD.xls
    15 KB · Affichages: 348
  • TCD.xls
    15 KB · Affichages: 351

moustiik

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

bon enfaite c'est pas du tout ce que je veux :/ je veux que sa soit automatique (parce que oui mesdame, monsieur il y a pire que moi en connaissance excel...) donc tu appuie sur le bouton et en gros sa te trie tout par doublon sa incrémente le nbre d'éléments (et je m'en fou du nombre totale lol) mais si c'est pas possible c'est pas grave :(
 

MJ13

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

re


Dans ce cas, il faudra passer par du VBA, mais c'est assez simple quand on s'y met un peu :).

Sinon, il y a le 1% formation pour cela :eek:.
 

JNP

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

Bonjour le fil :),
A tester
Code:
Public Hauteur As Integer
Sub test()
DerLig = Range("A" & Rows.Count).End(xlUp).Row
Range("A1:B" & Hauteur).Value = Charge(Range("A1:A" & DerLig))
Range("A" & Hauteur + 1 & ":B" & DerLig).Clear
End Sub
Function Charge(MaRéf As Range)
'Dictionary par JB : http://boisgontierjacques.free.fr/ Formation Excel VBA JB
Dim Tableau()
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In MaRéf
MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
'--
Call tri(temp, LBound(temp), UBound(temp))
Hauteur = UBound(temp) + 1
ReDim Tableau(UBound(temp), 1)
For i = 0 To UBound(temp)
Tableau(i, 0) = temp(i)
Tableau(i, 1) = Evaluate("COUNTIF(" & MaRéf.Address & ",""" & temp(i) & """)")
Next i
Charge = Tableau
End Function
Sub tri(a, gauc, droi)
' Quick sort par JB : http://boisgontierjacques.free.fr/ Formation Excel VBA JB
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub
Bonne journée :cool:
 

JNP

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

Re :),
et genre c'était sencé être accessible à tout le monde... HUM :)
C'était faisable facilement en accessible à tous le monde, mais la première macro qui aurait rassemblé les données dans 2 autres colonnes ne t'aurait pas plu, puis tu aurais voulu par ordre alphabétique :rolleyes:, bref, j'ai pas fait au plus simple, mais au plus rapide sans refaire 3 fois la même chose :p...
Bonne journée :cool:
 

moustiik

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

enfaite non sa ne marche pas :/ mon cas est peut-être trop complexe :( je ne dois pas modifié les bons paramètres et sa fait n'importe quoi :( et si y a pas de doublons, il me supprime des lignes... donc bon, je vais abandonné je crois, je vous joins quand même le fichier a quoi il ressemble dès fois que sa serait une autre méthode qu'il faudrait appliqué!
 

Pièces jointes

  • fichier_doublons.xlsm
    21.1 KB · Affichages: 235
  • fichier_doublons.xlsm
    21.1 KB · Affichages: 251
  • fichier_doublons.xlsm
    21.1 KB · Affichages: 258

moustiik

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

(je m'en fou que sa soit par ordre alphabétique) je veux juste que sa me regroupe ce qui sont en double, triple voir plus :) mais je sais je suis trop exigeante mdr je vais essayé de me remettre dans ce que tu as fait mais à mon avis vu la geule de mon fichier c'est un peu plus complexe que ce que je pensais :s
 

JNP

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

Re :),
Avec "un peu" d'adaptation :p
Code:
Public Hauteur As Integer
Sub gestion_des_doublons()
DerLig = Range("B" & Rows.Count).End(xlUp).Row
Range("B9:E" & Hauteur).Value = Charge(Range("B9:B" & DerLig))
Range("B" & Hauteur + 1 & ":E" & DerLig).ClearContents
End Sub
Function Charge(MaRéf As Range)
'Dictionary par JB : http://boisgontierjacques.free.fr/ Formation Excel VBA JB
Dim Tableau()
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In MaRéf
MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
'--
Call tri(temp, LBound(temp), UBound(temp))
Hauteur = UBound(temp) + 9
ReDim Tableau(UBound(temp), 3)
For I = 0 To UBound(temp)
Tableau(I, 0) = temp(I)
Tableau(I, 1) = MaRéf.Find(temp(I), LookAt:=xlWhole).Offset(0, 1)
Tableau(I, 2) = Evaluate("COUNTIF(" & MaRéf.Address & ",""" & temp(I) & """)")
Tableau(I, 3) = MaRéf.Find(temp(I), LookAt:=xlWhole).Offset(0, 3)
Next I
Charge = Tableau
End Function
Sub tri(a, gauc, droi)
' Quick sort par JB : http://boisgontierjacques.free.fr/ Formation Excel VBA JB
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub
Mais par contre, il est toujours possible de rassembler aussi les Commandés, etc., mais je suis parti du principe que tu ne les rempliraient qu'après dédoublonnage :rolleyes:...
Bon courage :cool:
 

Dranreb

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

Ah mais s'il s'agit de regrouper les doublons, pourquoi ne pas mettre dans un colonne supplémentaire avec un NB.SI(LaColonne,LaColonne) et classer la liste par ordre décroissant de cette colonne ?
Le faire après s'être mis en enregistrement d'une nouvelle macro si le besoin revient souvent.
On vous aidera à optimiser le code.
 

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87