Sub DoublonsTotal()
'Pour pouvoir utiliser cette méthode, assurez vous que la référence "Microsoft Scripting Runtime" est activée.
Set d = CreateObject("Scripting.Dictionary") 'Création d'un Dico pour la colonne 2(Désignation)
Set d2 = CreateObject("Scripting.Dictionary") 'Création d'un Dico pour la colonne 3 (Qté)
Set d3 = CreateObject("Scripting.Dictionary") 'Création d'un Dico pour la colonne 4 (Prix Unit)
Set d4 = CreateObject("Scripting.Dictionary") 'Création d'un Dico pour la colonne 5 (Total)
For Each c In Range("a1", [a65000].End(xlUp)) 'Boucle sur les données col 1
d(c.Value) = d(c.Value) + c.Offset(, 1).Value ' regroupe dans le dico col 2
d2(c.Value) = d2(c.Value) + c.Offset(, 2).Value ' regroupe dans le dico col 3
d3(c.Value) = d3(c.Value) + c.Offset(, 3).Value ' regroupe dans le dico col 4
d4(c.Value) = d4(c.Value) + c.Offset(, 4).Value ' regroupe dans le dico col 5
Next c
[A1:E65000].Clear 'vide la feuille
[a1].Resize(d.Count, 1) = Application.Transpose(d.keys) 'replace les données col 1 sans doublons (clé)
[b1].Resize(d.Count, 1) = Application.Transpose(d.items) 'replace les données col 2
[c1].Resize(d.Count, 1) = Application.Transpose(d2.items) 'replace les données col 3
[d1].Resize(d.Count, 1) = Application.Transpose(d3.items) 'replace les données col 4
[e1].Resize(d.Count, 1) = Application.Transpose(d4.items) 'replace les données col 5
End Sub
Ce n’ai pas pour t’embêter, mais juste pour que ce soit plus clair pour celui / celle qui a ta réponse et surtout pour les nombreux visiteurs du forum qui peuvent y trouver une solution sans être obligés d’ouvrir un fichier.
@Mimimathy Pour ajouter le code VBA il te suffit de le coller dans ton message, précédé de (3 accents graves vb) et suivi de (3 accents graves)
La syntaxe VBA est alors mise en valeur automatiquement! Comme expliqué ici Comment écrire du beau code VBA bien formatté sur ce forum
bonjour, je suis nouveau et je ne sais pas vraiment comment fonctionne le forum.
j’ai trouvé ce VBS de Mimimaty que j’ai essayé d’adapter pour mes besoins mais a quelque part ça coince…
ci-joint mon fichier excel
colonne 1 = nb de pièces
colonne 2 = longueurs des pieces que je peux débiter sur une longueur de 4000mm
colonne 3 = reste ou chute
mon problème est que maintenan dans la colonne chute j’ai la totalité des chutes, et j’aurais besoin de la valeur pour une seule barre
mon VBA:
Sub DoublonsTotalmodif()
'Pour pouvoir utiliser cette méthode, assurez vous que la référence « Microsoft Scripting Runtime » est activée.
Set d = CreateObject(« Scripting.Dictionary ») 'Création d’un Dico pour la colonne 3(Zuschnitt)
Set d2 = CreateObject(« Scripting.Dictionary ») 'Création d’un Dico pour la colonne 1 (Anzahl)
For Each c In Range(« b1 », [b65000].End(xlUp)) 'Boucle sur les données col 2
d(c.Value) = d(c.Value) + c.Offset(, 1).Value ’ regroupe dans le dico col 3
d2(c.Value) = d2(c.Value) + c.Offset(, -1).Value ’ regroupe dans le dico col 1
Next c
[A1:E65000].Clear 'vide la feuille
[a1].Resize(d.Count, 1) = Application.Transpose(d2.items) 'replace les données col 1
[b1].Resize(d.Count, 1) = Application.Transpose(d.keys) 'replace les données col 2 sans doublons (clé)
[c1].Resize(d.Count, 1) = Application.Transpose(d.items) 'replace les données col 3
Sub Chutes()
Dim i, N, Dict
Set Dict = CreateObject("scripting.dictionary") 'dictionaire
With Sheets("Tabelle")
With .Range("A1").CurrentRegion 'vos données
For i = 1 To .Rows.Count 'boucler
Dict(.Cells(i, "C").Value) = Dict(.Cells(i, "C").Value) + .Cells(i, "A").Value 'incrementer le nombre de ce chute avec la colonne A
Next
End With
N = Dict.Count
If N = 1 Then Dict([Rnd]) = 1 'seulement si le nombre de clés est 1, il faut ajouter un "dummy"
With .Range("E2").Resize(N)
.Resize(100, 2).ClearContents 'vider
If N > 0 Then
.Value = Application.Transpose(Dict.keys) 'les chutes
.Offset(, 1).Value = Application.Transpose(Dict.items) 'son nombre
End If
End With
End With
End Sub
Ich habe einen Fehler mit den Zahlen gemacht.
Finallement on a le même nombre, 41, mais moi, à partir de la 4eme combinaison, j’utilisais un autre système. (voir ligne 5, les cellules en rose).
Si on avait besoin de 44x610, moi, je pouvais le faire avec 40 barres.
(ma solution est réalisé avec « Solveur », un app d’Excel)