Regroupement de cellules portant les memes ref


#1

Re bonjour, j aimerai regrouper dans mon tableau les mêmes références mais avec le résultat cumulé.

EX:
REF DESIGNATION QUANTITE PRIX UNITAIRE TOTAL

AA BATEAU 5 50 250
AA BATEAU 10 50 500

J aimerai que cela fasse après formule

AA BATEAU 15 50 750

mon fichier comporte 2000 ref je vous en joins un extrait.
MERCIexcel essai.xlsx (8,8 Ko)


#2

Bonsoir @BTPSHOP,

Voici une proposition:

J’ai nommé les colonnes de la “Feuil1” dans le “Gestionnaire de noms”.

Puis j’ai mis les résultats dans la “Feuil2”

En “A2” une formule permettant d’extraire les réf de la “Feuil1” sans doublons.

=SI(LIGNE(A1)>SOMME(1/NB.SI(Col_A;Col_A));"";INDEX(Col_A;EQUIV(MIN(SI(NB.SI(A$1:A1;Col_A)=0;NB.SI(Col_A;"<"&Col_A)));NB.SI(Col_A;"<"&Col_A);0)))

Formule matricielle a valider avec les touches ctrl + maj + entrée
Tirer vers le bas autant que nécessaire.

En “B2”

=SIERREUR(INDEX(Col_B;EQUIV($A2;Col_A;0));"")
Tirer vers le bas autant que nécessaire.

En “C2”

SOMMEPROD((Col_A=$A2)*Col_C)

Tirer vers le bas autant que nécessaire.

En “D2”

=SIERREUR(INDEX(Col_D;EQUIV($A2;Col_A;0));"")
Tirer vers le bas autant que nécessaire.

En “E2”

=SOMMEPROD((Col_A=$A2)*Col_D)
Tirer vers le bas autant que nécessaire.

Ton fichier en retour ICI==>BTPSHOP V1.xlsx (15,7 Ko)

Cordialement.


#3

Bonjour à tous,
Salut MDO

t’as été plus rapide
un test en VBA
excel essai (1).xlsm (17,3 Ko)

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

#4

Bonsoir @Mimimathy,

Mais ta solution est différente, donc @BTPSHOP a le choix.

Par contre et comme te l’a déjà demander @DocteurExcel, peux-tu expliciter tes réponses et mettre tes codes VBA et/ou tes formules dans le message.

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.

Bien cordialement.


#5

@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


#6

Waouuu merci, c’est quoi le VBA ? merci de m’aider j en suis très reconnaissant


#7

Merci, je suis impressionné, je vais essayer de mettre cela en place.

UN GRAND GRAND MERCI