Trier et regrouper un listing en supprimant les doublons

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
 
M

myDearFriend

Guest
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

  • PourJoelle.zip
    9 KB · Affichages: 77
J

Joëlle

Guest
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
 
J

Joëlle

Guest
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
 
M

Michel_M

Guest
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
 
M

myDearFriend

Guest
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

  • PourJoelle2.zip
    10.1 KB · Affichages: 93
J

Joëlle

Guest
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.
 
J

Jean-Marie

Guest
Bonsoir

Autre possibilité à envisager pour la fabrication d'un tel tableau, si le nombre de lignes dans la base de données est inférieure à 8000, est la création d'un Tableau Croisé Dynamique.

@+Jean-Marie
 
J

Joëlle

Guest
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
 
K

K BARAKAT

Guest
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
 

Statistiques des forums

Discussions
312 756
Messages
2 091 762
Membres
105 063
dernier inscrit
jazzinou