XL 2013 VBA Grouper valeur

Kidcarotte

XLDnaute Junior
Bonjour a tous et a toutes

Je souhaiterai mentionne par avance que cela fait deux heures que je tourne en rond sur les forums et que je ne trouve rien de concluant, c'est donc pour cela que je m'adresse ici. J'ai vu le nombre de sujet ouvert, mais les codes proposes ne fonctionne pas et mes connaissances VBA sont tres limites.

J'ai une colonne B de plusieurs noms ( il y en a un peu pres une trentaine et le fichier fais 5000 lignes.)
CK Underwear
CK Underwear
CK Underwear
TH Accessories
CK Underwear
CK Underwear
CK Underwear
CK Underwear
CK Underwear
CK Underwear
CK Underwear
TH Accessories
TH Accessories
TH Accessories
TH Accessories
TH Accessories
TH Accessories
TH Accessories
CK Jeans

Je voudrais les regrouper par similirate
Donc CK Underwear, TH Accessories etc.
Je sais qu'il y a des formules pour cela, cependant je creer un tableau analytique a partir d une enorme base de donnees.
Donc l'idee est: Lorsque l'utilisateur appuie sur le bouton "Create report" au lieu d'avoir les 1500000 lignes, les 25 grands groupes sont regroupes

Des suggestions ?

Cordialement
 

Kidcarotte

XLDnaute Junior
Bonjour,

Ci joint un example

Le tableau que je souhaiterai est en page deux.
Plusieurs criteres:
Je souhaiterai les classes par categorie
Je souhaiterai le nombre total de transaction par categories. Mais la "valeur des transactions ne m'interesse pas". Exemple, 2 transaction de 50euros, ce qui m'interesse est les deux transactions, pas la valeur total de 100e.

Et je voudrais egalement que cela se rajoute en semaine 48, car la semaine 47 est deja completer.

J'espere que c'est plus clair

Cordialement
 

Pièces jointes

  • Tryout Macro Paul.xlsx
    9.6 KB · Affichages: 6

Kidcarotte

XLDnaute Junior
Egalement je ne sais pas si c'est possible mais,

Toujours avec ce meme fichier, on est cense faire une update chaque semaine,
J'aimerai savoir si c'est possible que a chaque fois que l'on clique sur "Rapport" il est possible d'ajouter les valeurs a la colonne d'a cote avec la date actuelle : Exemple

Donc colonne A Colonne B 01/01/2020 Colonne C 08/01/2020
Ck Jeans 150 170
Ck Underwear 210 50
 

Kidcarotte

XLDnaute Junior
Bonjour Daniel

J'ai joint un excel sur la page expected 2, pour ce que serait le final ideal.

Ce fichier excel on l'ouvre une fois par semaine. Donc je souhaiterai que lorsque l'on ouvre en semaine 1, ce soit Week 1 qui se rempli. Et la prochaine fois qu'on run une macro again ce soit la semaine d'apres. (Si je ne me trompe pas il y a une fonction macro qui, si la colonne A est rempli, du coup ca va automatiquement a la colonne B ?)

Egalement en Row 1, j'aimerais bien que les dates se mettent a jour de maniere mensuelle. E.G tout les premiers du mois, j'ai les 4 lundis qui apparaissent en colonne C D E F

Je sais pas si c'est tres clair

Merci par avance pour votre aide
 

Pièces jointes

  • Tryout Macro Paul.xlsm
    24.1 KB · Affichages: 6

Kidcarotte

XLDnaute Junior
Hello Daniel

J'ai trouve la fonction VBA pour les dates. Je te remercie par avance pour le temps que tu as pu consacrer
Ma derniere question reste cependant (je re-accroche le fichier avec ma fonction VBA) :
Lorsque le tableau dynamique se creer, j'aimerais qu'a chaque fois que l'on clique sur report, les valeurs se mettent sur la colonnes d'a cote pour chaque semaine. Par exemple
1st Janvier => Report => Colonne B
7th janvier => Report => Colonne C
14th Janvier => Report => Colonne D etc....

Sachant que le nombre total de "division" reste le meme a chaque fois. Ils seront juste mis sur "0"

Merci par avance
 

Pièces jointes

  • Tryout Macro Paul.xlsm
    29.2 KB · Affichages: 3

danielco

XLDnaute Accro
Remplace la macro TCD par celle-ci :

VB:
Sub TCD()
  Dim C As Range, Plage As Range, Ligne As Long, Col As Long
  With Sheets("Database")
    Set Plage = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
  End With
  With Sheets("Expected (2)")
    Set C = .Cells(1, .Columns.Count).End(xlToLeft).Offset(, 1)
    If C.Column = 2 Then
      C.Value = Date
    Else
      C.Value = DateAdd("ww", 1, Date)
    End If
    C.NumberFormat = "d/mm/yy"
    Col = C.Column
    For Each C In Plage
      Ligne = Application.Match(C.Value, .[A:A], 0)
      .Cells(Ligne, Col) = Cells(Ligne, Col) + 1
    Next C
    .Cells(7, Col) = Application.Sum(.Range(.Cells(2, Col), .Cells(6, Col)))
  End With
End Sub

Daniel
 

Kidcarotte

XLDnaute Junior
Merci beaucoup Daniel, vos connaissances VBA sont tres impressionnante.

Cependant je me suis trompee dans une de mes formulations. J'ai dis que les "Divisions" allaient rester les memes, ce qui n'est pas vrai. Il peut arrive que d'une semaine a l'autre, une des divisions soit manquantes.
Le maximum etant 24, mais dans le weekly report il se peut que seulement deux sur 24 soient presentes.

Dans le VBA ci dessus, il ne marche uniquement si les 24 divisions sont presente

Avez vous une idee pour contrer cela ?

Merci par avance
 

Discussions similaires

Réponses
6
Affichages
1 K

Statistiques des forums

Discussions
312 330
Messages
2 087 335
Membres
103 523
dernier inscrit
mounir2025