[TCD] Grouper par script

LFB-U

XLDnaute Nouveau
Bonjour,

Travaillant actuellement sur un tableau croisé dynamique, je voudrais grouper des éléments afin d'obtenir une lecture plus aisée. Malheureusement le "Clic droit>grouper" n'est pas suffisant, certains élément se dégroupant lors de l'actualisation du tableau. Par exemple sur la capture d'écran suivante:

Capture partagé sur ZimageZ

J'ai groupé les éléments manuellement.
Ces éléments ont "222AC" en commun, donc faire un groupage par script sur VB (en appuyant sur un bouton par exemple) doit sûrement être possible, et c'est à ce niveau que je bloque.

Si cela peut vous aider à m'aider, j'ai déjà le script suivant qui s'active lors de l'appui sur un bouton, pour mettre en forme le tableau:

Sub BASE()
Call Mémoire_page_tab
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddFields RowFields:= _
Array("Sections generales", "Centre de charge", "Nature Analytique" ), ColumnFields:="Mois", _
PageFields:="Table"
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Table"). _
CurrentPage = Pgtab
End Sub

Je suis sous Excel 2003.
J'ai trouvé un autre sujet identique au mien, mais il n'a pas été résolu:
https://www.excel-downloads.com/threads/regroupement-dans-un-tableau-croise-dynamique.135703/

Merci d’avance pour votre aide !

LFB-U
 

LFB-U

XLDnaute Nouveau
Re : [TCD] Grouper par script

Votre solution ne me conviendrais pas ici, car la feuille source est issue d'une requête sur base de données. Elle n'est donc jamais la même.

Je vais quand même voir si je peux arriver à quelque chose sur la base de cette idée.
 

chris

XLDnaute Barbatruc
Re : [TCD] Grouper par script

Bonjour

Votre solution ne me conviendrais pas ici, car la feuille source est issue d'une requête sur base de données. Elle n'est donc jamais la même.

Je vais quand même voir si je peux arriver à quelque chose sur la base de cette idée.

Si les 5 premiers caractères du centre de charge sont la base du regroupement, ne peux-tu ajouter un champ calculé dans la requête ?

Quelle est est la base source ? As-tu les droits pour y créer des requêtes ?
 

LFB-U

XLDnaute Nouveau
Re : [TCD] Grouper par script

Merci à vous deux pour vos réponses!

Effectivement la solution d'ajouter une colonne à mon tableau source me parait la plus simple. Je vais créer un script qui remplit automatiquement cette colonne (par comparaison donc, comme vous me le proposez).
Après recherches je pense que l'instruction LIKE pourra faire l'affaire.

Quelle est est la base source ? As-tu les droits pour y créer des requêtes ?

Concrètement, exel effectue une série de requêtes sur une base Oracle, et met dans un tableau ces données. Etant donné que ce sont des budgets, les requêtes -sur mois, sur année- peuvent changer, et donc le tableau de destination est modifié.

A très bientôt!
 

LFB-U

XLDnaute Nouveau
Re : [TCD] Grouper par script

J'ai établi une solution qui fonctionne:

i = 1

Do While i < 15000
j = Range("B" & i)

'222AC
If Left(j, 5) = "222AC" Then
Range("K" & i).Value = "222AC"
End If

i = i + 1
Loop

En fait LIKE compare l'intégralité de la chaine, et SUBSTR n'existe pas en VBA (j'aurais dû préciser que je code en VBA).

Cela peut paraitre tout bête comme code au final, mais étant donné que je n'ai que des notions de VBA ça me paraissait compliqué.

Encore merci pour votre aide!
 

chris

XLDnaute Barbatruc
Re : [TCD] Grouper par script

Bonjour

SUBSTR est dans SQL : comme tu parlais de requêtes sur ORACLE, j'ai pensé SQL.

L'important est que tu aies trouvé la solution.

Toutefois si tu dois grouper tous les codes selon les 5 premiers caractères :
tu peux appliquer Range("K" & i).Value =left(j, 5) partout
 

Discussions similaires

Réponses
1
Affichages
518

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 206
Messages
2 086 210
Membres
103 158
dernier inscrit
laufin