XL 2010 Fusion des cellules identiques d'une partie d'un TCD - macro VBA

boostiik

XLDnaute Nouveau
Bonjour,

J'ai créé une macro permettant de générer un TCD à partir de données.
Je voudrais que seulement la colonne B ait les cellules identiques qui se fusionnent. Je veux donc appliquer la fonction "fusionner et centrer les étiquettes" uniquement sur cette colonne et non pas sur le tableau croisé dynamique entier.

Comment faire ?

J'ai essayé la solution qui consiste à appliquer la fusion de cellule sur le tableau en entier et en annulant la fusion sur la colonne B. Cela fonctionne mais lorsque j'applique un filtre sur une étiquette de mon TCD par la suite, la défusion s'annule.

Merci par avance pour votre aide.
 

boostiik

XLDnaute Nouveau
Re : Fusion des cellules identiques d'une partie d'un TCD - macro VBA

Voici un exemple de la macro :

Sub test()

'Creation TCD
Range("A1").CurrentRegion.Select
ActiveWorkbook.Names.Add Name:="BD", RefersToR1C1:=Selection

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"BD", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="", TableName:="Pivot_Table_2", _
DefaultVersion:=xlPivotTableVersion14


ActiveWorkbook.ShowPivotTableFieldList = True
With ActiveSheet.PivotTables("Pivot_Table_2").PivotFields( _
"A")
.Orientation = xlRowField
.Position = 1
End With

With ActiveSheet.PivotTables("Pivot_Table_2").PivotFields( _
"B")
.Orientation = xlRowField
.Position = 2
End With

With ActiveSheet.PivotTables("Pivot_Table_2").PivotFields( _
"C")
.Orientation = xlRowField
.Position = 3
End With

'Enelever totaux, sous totaux etc
Dim p As PivotField
For Each p In ActiveSheet.PivotTables(1).PivotFields
If p.Orientation = 1 Then p.Subtotals = Array(False, False, False, False, _
False, False, False, False, False, False, False, False)
Next p

With ActiveSheet.PivotTables("Pivot_Table_2")
.ColumnGrand = False
.RowGrand = False
End With
ActiveSheet.PivotTables("Pivot_Table_2").RowAxisLayout xlTabularRow

'Activer fusion des cellules identiques
ActiveSheet.PivotTables("Pivot_Table_2").MergeLabels = True

'Conserver format des cellules et ajustement auto
With ActiveSheet.PivotTables("Pivot_Table_2")
.HasAutoFormat = False
.PreserveFormatting = True
End With

End Sub


J'aimerais que les valeurs qui sont identiques dans la colonne B soient fusionnées. Je cherche donc à appliquer la fonction MergeLabels uniquement à la colonne B et non pas au tableau entier.
En espérant que mon explication soit claire, je vous remercie par avance.

Cordialement.
 

gosselien

XLDnaute Barbatruc
Re : Fusion des cellules identiques d'une partie d'un TCD - macro VBA

Bonjour,

tu insistes...
les plus anciens déconseillent la fusion, pourquoi ne pas la faire sur une copie du tcd si tu y tiens et ensuite comment veux tu que les gens t'aident avec juste du code vba ?
P.
 

boostiik

XLDnaute Nouveau
Re : Fusion des cellules identiques d'une partie d'un TCD - macro VBA

Bonjour,

J'ai bien compris que la fusion est déconseillée mais là dans une seule colonne, j'ai de nombreuses fois la même valeur, donc je trouve ça plus esthétique de les fusionner.
Je ne comprend pas tout à fait, en quoi copier mon TCD permettrait de résoudre mon problème ?

Merci,

Cordialement.
 

boostiik

XLDnaute Nouveau
Re : Fusion des cellules identiques d'une partie d'un TCD - macro VBA

Voici un exemple de mon fichier.

Je souhaite que dans la colonne B, les cellules à la suite qui sont identiques, soient fusionnées dans le TCD.

Merci.
 

Pièces jointes

  • Classeur_test.xlsm
    16.9 KB · Affichages: 43

JHA

XLDnaute Barbatruc
Re : Fusion des cellules identiques d'une partie d'un TCD - macro VBA

Bonjour à tous,

Après essai, la formule ne donne pas le bon ordre des villes.

Mais sans formule, le TCD marche très bien (TCD ter), où est ton soucis? Dans le code VBA?

JHA
 

Pièces jointes

  • Classeur_test bis.xlsm
    30.9 KB · Affichages: 47
Dernière édition:

boostiik

XLDnaute Nouveau
Re : Fusion des cellules identiques d'une partie d'un TCD - macro VBA

Bonjour JHA,

Merci pour ta réponse. Oui, mon problème se trouve au niveau du code VBA. Je souhaiterais appliquer le code suivant seulement au niveau de la colonne B et non pas au niveau du Pivot_Table_2 entier :
Code:
ActiveSheet.PivotTables("Pivot_Table_2").MergeLabels = True

Cordialement.
 

Discussions similaires

Statistiques des forums

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