Trier et regrouper un listing en supprimant les doublons

  • Initiateur de la discussion Initiateur de la discussion Joëlle
  • Date de début Date de début

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 !

J

Joëlle

Guest
Bien le bonjour à tous

( Plantée sur le sujet, débutante, mes macro actuelles, je les enregistre et les traficotes après)

voilà le type de base de donnée qui s’exporté en auto dans une feuille Exel.

Référence Nom date Nombre Prix
5010545148 ENS Tommande 20/08/2004 2 7410
5010621008 BARRE Gourma 20/08/2004 1 2173
5010621008 BARRE Gourma 24/08/2004 2 4346
5010621008 BARRE Gourma 27/08/2004 2 4346

Comment faire pour regrouper les lignes de même référence avec addition Nombre et prix ?
Sachant en plus que lors de l’exportation la virgule des centimes disparaît.

Je voudrai créer une macro pour arriver à cela :
Référence Nom date Nombre Prix
5010545148 ENS Tomma 20/08/2004 2 74,10
5010621008 BARRE Gourma 20/08/2004 5 108.65

Je ne sais si cela est possible, si vous maîtrisez comment dérouler cette possibilité je suis preneuse.

G Merci
Joëlle
 
Bonsoir Joelle, le Forum.


Tu trouveras ci-joint un exemple qui pourrait peut-être répondre à ta question.

Sub Traitement()
Dim TabTemp As Variant
Dim TabResult As Variant
Dim Maxi As Long, L As Long, L2 As Long, N As Long
'Charge les données dans un tableau variant temporaire
With Sheets("Feuil1")
Maxi = .Range("A65536").End(xlUp).Row
TabTemp = .Range(.Cells(1, 1), .Cells(Maxi, 6)).Value
End With
'Pour chaque ligne du tableau
For L = 1 To Maxi
'Si la ligne n'est pas "topée"
If Not TabTemp(L, 6) Then
N = N + 1
'Pour les lignes qui suivent
For L2 = L + 1 To Maxi
'Si trouve une correspondance
If TabTemp(L2, 1) = TabTemp(L, 1) Then
'Additionne les prix
TabTemp(L, 5) = TabTemp(L, 5) + TabTemp(L2, 5)
'"Tope" la ligne
TabTemp(L2, 6) = True
End If
Next L2
End If
Next L
'Prépare le tableau des résultats
ReDim TabResult(1 To N, 1 To 5)
N = 0
'Compose le tableau des résultats (= lignes non "topées")
For L = 1 To Maxi
If Not TabTemp(L, 6) Then
N = N + 1
For L2 = 1 To 5
TabResult(N, L2) = TabTemp(L, L2)
'Divise pas 100 les prix (rétablie la virgule)
If N > 1 And L2 = 5 Then TabResult(N, L2) = TabResult(N, L2) / 100
Next L2
End If
Next L
'Colle les résultats dans la feuille
Range(Cells(1, 7), Cells(N, 11)).Value = TabResult
End Sub



Ce n'est sans doute pas la solution idéale, mais ça devrait convenir...

Cordialement,
Didier_mDF
 

Pièces jointes

Avant d’essayer d’appliquer la solution de Didier, Merci et big bisou pour Marc, Jean-Marie et Michel. Mais avec une double big bisous pour Didier.

Marc77
Le fichier est exporte sur demande d’une base générale inmodifiable, il ouvre alors exel et créait une nouvelle page extension *.exl.


Michel
Tout est relatif à partir de combien de lignes exporté dans ce même fichier celui-ci est-il interprété comme important ?
Devant exporter ce fichier chaque semaine il comporte de 0 à 100 lignes maxi

J’go essayer la solution de Didier et repasse ( pas le linge !)

Merci à tous et bon début de WK
 
Me Re-voilou!

la macro de Didier fonctionne, mais les résultats du nombre sont erronées
Testé la liste ci-dessous
Ref Nom Dâte Nombre Prix
2010621008 BARRE 20/08/2004 2 4346
2010621008 BARRE 20/08/2004 2 4346
1200147333 ECLAIR 18/08/2004 1 252
1200163516 PRO 24/08/2004 1 2554
1200163516 PRO 23/08/2004 1 2554
1200163516 PRO 23/08/2004 1 2554
1200188575 LEVI 24/08/2004 1 883
1200188575 LEVI 24/08/2004 1 883
1200215112 CONTRE 24/08/2004 1 143
1200215112 CONTRE 24/08/2004 1 143
1200225292 GARNITURE 18/08/2004 2 465
1200230579 TU 20/08/2004 1 1363
1200230579 TU 20/08/2004 1 1363
1200265409 CALASS 30/08/2004 1 4107
1200265409 CALASS 19/08/2004 1 4107

Resultante de la macro :
Ref Nom Dâte Nombre Prix
2010621008 BARRE 20/08/2004 2 86,92
1200147333 ECLAIR 18/08/2004 1 2,52
1200163516 PRO 24/08/2004 1 76,62
1200188575 LEVI 24/08/2004 1 17,66
1200215112 CONTRE 24/08/2004 1 2,86
1200225292 GARNITURE 18/08/2004 2 4,65
1200230579 TU 20/08/2004 1 27,26
1200265409 CALASS 30/08/2004 1 82,14


les sommes du nombre de pièce ne sont pas juste
Pour les 2 lignes (2010621008 ; Barre ) regrouper elle donne Nombre 2 pour un Prix de 86.92
Les valeurs devraient être Nombre 4 ( 2+2) par contre la somme elle est juste.

Déjà merci pour l'espoir de cette faisabilité sous exel

Joëlle
 
Bonjour,

100 lignes, ce n'est pas important....Mon critère perso est qu'un classeur ne doit pas dépasser pas 4 à 500 ko mais c'est un autre débat

je jette un oeil sur ma bidouille d'hier car j'avais sommeil sans sommeil.

Michel
 
Bonjour tout le monde,


Effectivement Joelle, j'avais oublié l'addition des quantités (j'avais même oublié les quantités dans mon exemple)...

Tu trouveras ci-joint le rectificatif.

Il convient simplement d'ajouter la ligne de code :
TabTemp(L, 4) = TabTemp(L, 4) + TabTemp(L2, 4)
juste après celle-ci
If TabTemp(L2, 1) = TabTemp(L, 1) Then


Cordialement,
Didier_mDF
 

Pièces jointes

Houpillllllll !!!!!!!!
C’est géant cela fonctionne nickel-chrome.

Triage, suppression des doublons, calcul: Nombre de pièce et somme des prix.

Voilà un big bisous pour vous tous, avec un Smatch rien que pour Didier.

Au job je vais être Zen , Grand Grand Merci.

Le temps de mettre cela en application, je rechercherai macro pour transmettre ces données triées, dans mon suivi annuel. Mais je posterai sur un new poste car autre sujet, que je ne crois pas réalisable (dois m’informé avant de la possibilité de modifier l'aspect de ce tableau .

Encor milles Merci et bisous.
 
Bonsoir Didier

Non le listing ne dépasse jamais 8000 ligne. Mais ta macro fonctionne tip top , et mon potentiel création macro, se limite aux macros enregistrées avec bidouilles après !
Tableau croisés ne signifie pour moi-même qu’une feuille ou je vais chercher des données sur une autre feuille avec calcul ci-besoin (pour éviter de faire copier coller valeur).

Encore un grand merci à toi.

Joëlle
 
Bonjour,
Merci d'avance de votre aide.
J'en ai besoin car je ne sais plus comment avancé?

Suite à votre exemple PourJoelle2.xls
Comment faire pour regrouper les lignes de même référence et de noms differents?
c-à-d avec addition de prix par nom et à la fin par reference?

et le resultat sur une nouvelle feuille.

Merci beaucoup
KIM
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour