Vba-enlever les chiffres apres la virgule -graphique croise dynamique

Celeda

XLDnaute Barbatruc
Bonjour,

Je rencontre une difficulté dans l'affichage du Nom dans un graphique croisé dynamique.
Le "Nom" en question est un chiffre avec 8 chiffres après la virgule.

La base du graphique croisé dynamique est un tableau croisé dynamique qui lui a aussi une base de données dans laquelle apparaissent les montants qui sont issus eux aussi d'une extraction de bd....:)

J'ai essayé de changer les formats de ces montants, dans le tcd ou dans la base de données, mais rien n'y fait, excel considère que le "Nom" doit apparaître avec tous les chiffres dans le graphique croisé dynamique et moi, je n'en veux pas. Et c'est normal qu'il veuille tout afficher, il ne sait pas lui que je veux me servir de ce chiffre en tant que nom, donc Bill n'a pas prévu cette option :D

Dans le fichier ci-joint, j'ai reproduit l'exemple et fait un copier coller du graphique croisé dynamique.
Je pense que pour eradiquer définitivement ces chiffres après la virgule, il faut construire une petite macro pour les eliminer dans le TCD directement (avec peut-être auparavant, demander d'arrondir supérieur).
Ainsi, le graphique croisé dynamique ne verra que du feu.

Pensez-vous que cela est possible.

A l'avance, je vous remercie.
 

Pièces jointes

  • EtiquetteGCD.zip
    27.5 KB · Affichages: 98

pierrejean

XLDnaute Barbatruc
Re : Vba-enlever les chiffres apres la virgule -graphique croise dynamique

Re

testée sous 2010 cette version du code de notre ami Pierrot semble fonctionner

VB:
Sub Test()
Dim s As Series, d As DataLabel, t() As String
Set s = Sheets("TCD").ChartObjects(1).Chart.SeriesCollection(1)
If s.HasDataLabels Then
    With s.DataLabels
        If .ShowValue And .ShowCategoryName And .Separator = vbLf Then
            For Each d In s.DataLabels
                t = Split(d.Caption, vbLf)
                d.Caption = Int(CDbl(t(0))) & vbLf & t(1)
            Next d
        End If
    End With
End If
End Sub
 

MJ13

XLDnaute Barbatruc
Re : Vba-enlever les chiffres apres la virgule -graphique croise dynamique

Bonjour à tous

Sinon, on peut nommer par exemple "zone" , la zone contenant les valeurs de la première colonne du TCD.

Puis appliquer cette macro:

Code:
Sub test3()
Dim DataLab(1000)
'Set s = Sheets("TCD").ChartObjects(1).Chart.SeriesCollection(1)
Sheets("TCD").ChartObjects(1).Activate
For i = 1 To Range("zone").Item(1, 1)
'MsgBox Range("zone").Item(i, 1).Value
DataLab(i) = Format(Range("zone").Item(i, 1).Value, "0.0")
Next
    'Stop
    ActiveChart.SeriesCollection(1).DataLabels.Select
    MsgBox ActiveChart.SeriesCollection(1).DataLabels.Count
    ActiveChart.SeriesCollection(1).DataLabels.Select
    For i = 1 To ActiveChart.SeriesCollection(1).DataLabels.Count
        'MsgBox ActiveChart.SeriesCollection(1).DataLabels(i).Text
    ActiveChart.SeriesCollection(1).DataLabels(i).Text = DataLab(i)
   Next
End Sub
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Vba-enlever les chiffres apres la virgule -graphique croise dynamique

Re

testée sous 2010 cette version du code de notre ami Pierrot semble fonctionner

VB:
Sub Test()
Dim s As Series, d As DataLabel, t() As String
Set s = Sheets("TCD").ChartObjects(1).Chart.SeriesCollection(1)
If s.HasDataLabels Then
    With s.DataLabels
        If .ShowValue And .ShowCategoryName And .Separator = vbLf Then
            For Each d In s.DataLabels
                t = Split(d.Caption, vbLf)
                d.Caption = Int(CDbl(t(0))) & vbLf & t(1)
            Next d
        End If
    End With
End If
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Vba-enlever les chiffres apres la virgule -graphique croise dynamique

Re,

oui, effectivement sous 2007 il faut plutôt utiliser la propriété "caption".... maintenant si l'on veut automatiser le lancement lors de l'actualisation, placer le code ci-dessous dans le module "thisworkbook" :

Code:
Option Explicit
Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)
Dim s As Series, d As DataLabel, t() As String, p As Variant
If Sh.Name <> "TCD" Then Exit Sub
Set s = Sh.ChartObjects(1).Chart.SeriesCollection(1)
If s.HasDataLabels Then
    With s.DataLabels
        If .ShowValue And .ShowCategoryName Then
            p = .Separator
            .Separator = vbLf
            For Each d In s.DataLabels
                t = Split(d.Caption, vbLf)
                d.Caption = Int(t(0)) & vbLf & t(1)
            Next d
            .Separator = p
        End If
    End With
End If
End Sub

et celui-ci dans le module de la feuille TCD :
Code:
Option Explicit
Private Sub Worksheet_Activate()
Me.PivotTables(1).RefreshTable
End Sub

@PierreJean:), à priori sur le poste sur lequel je viens de tester sous 2007, pas besoin de convertir avec "cdbl"... bon, à voir.... Celeda:) nous dira.... Bon je retourne à 2003, je préfère, enfin je connais mieux....

@+
 

Celeda

XLDnaute Barbatruc
Re : Vba-enlever les chiffres apres la virgule -graphique croise dynamique

Bonjour,

Ah c'est fort, les gars, tout fonctionne très bien!!! tout ce que vous avez fait!!!!(l'actualisation, la zone, les différentes versions, j'ai tout testé et conservé!! et il faut conserver ce fil : je ne sais pas si je vais pas demander à Pascal de le mettre dans la FAQ parce que je pense que je ne serai pas la seule à rencontrer cette situation).

Comblée, heureuse et encore avec tous mes cheveux!!!! grâce à vous.

Je vous remercie beaucoup : est-ce que l'adage, "à plusieurs on est plus fort", vous concernerait-il ????
:)
Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks Many thanks !!!!
 

Discussions similaires

Réponses
6
Affichages
345

Statistiques des forums

Discussions
312 394
Messages
2 088 020
Membres
103 702
dernier inscrit
Greedyyy3317