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

Celeda

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

Bonjour,

J'aimerai remercier Luc pour son petit message concernant la problèmatique de ce fil.

En fait, je pense que cela n'est peut-être pas possible en vba de supprimer, à l'aide d'un bouton, tous les chiffres après la virgule, qui sont situés dans un tableau croisé dynamique de manière à ce que tous ces chiffres après la virgule n'apparaissent pas dans un graphique croisé dynamique.

Dans le tcd, on demande le nombre de fois que ces valeurs apparaissent. Et ces valeurs, pas de chance ont plein de chiffres après la virgule. Et le camenbert, graphique croisé dynamique, doit representer ces valeurs : l'étiquette associée doit mentionner le nombre (cela c'est ok) et le nom (et là, pas de bol).

Luc, tu me diras, si cela est plus clair.:) Merci encore.:cool:
 

JCGL

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

Bonjour à tous,

Chez moi les chiffres après la virgule n'apparaissent pas.
Je suis en séparateur décimal point donc tes virgules sont considérées comme du texte

02162011103216.jpg

A+ à tous

Édition : Salut PJ
 

Pièces jointes

  • JC EtiquetteGCD.xlsx
    37.1 KB · Affichages: 130
Dernière édition:

Celeda

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

Bonjour,

Cijoint.fr - Service gratuit de dépôt de fichiers


Tout d'abord, merci JC et PierreJean et Luc (tu me fais rire !!) de m'aider dans ce cas.
Je pense que c'est ma version 2007 qui fait le bug, j'essaierai de contrôler aussi,ce soir je suis sur 2010.

Néanmoins, je suis d'accord avec vos deux solutions. Je vous ai préparé en 2007, mais sauvegarder en 97-2003, le fichier exemple et vous allez voir que je n'arrive pas à supprimer ces virgules dans l'étiquette du graphique dynamique, même en utilisant ces deux méthodes. En fait, j'ai essayé plein de trucs mais je crains fort que je sois obligée d'intervenir dans la base de données et je trouve cela un peu c.. c..
D'ailleurs, si quelqu'un pouvait tester avec 2007, on aurait peut-être une piste....
car croyez-moi, ces maudits chiffres apparaissent bien.

Merci, messieurs, pour vos aides.Le fichier était tros gros, je l'ai mis chez cijoint.
 

MJ13

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

Bonjour à tous


Oui en effet, c'est un petit bug car Excel semble considérer les valeurs comme tu texte puisqu'il s'agit d'une zone de ligne.

Il faudrait dans ce cas le faire par macro et remettre le bon texte en face de chaque point, mais la, c'est assez corsé :confused:
 

Celeda

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

Bonjour,

Ouf MJ13 !!! je te remercie car je commençais à me dire que je touchais le plancher de la nullité!!!

Je vous remercie mais je me doute que cela ne doit pas être si aisé.
Et le fait déjà de savoir que la ligne crée ce genre de situation est très enrichissant (et aussi en terme d'économie d'energie pour rechercher à enlever ces chiffres après la virgule !!)
Par conséquent, il faut que je crée une colonne supplémentaire dans la base pour avoir que des chiffres sans virgules (en formules ou en macro).
Merci beaucoup.


à conserver dans nos têtes.
 

pierrejean

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

Re

Si tu acceptes la modification de la colonne AF de la feuille DATAA

VB:
Sub Test()
 tablo = Sheets("DATAA").Range("AF2:AF" & Sheets("DATAA").Range("AF65536").End(xlUp).Row)
 For n = LBound(tablo, 1) To UBound(tablo, 1)
   tablo(n, 1) = WorksheetFunction.Round(tablo(n, 1), 0)
 Next n
 Sheets("DATAA").Range("AF2").Resize(UBound(tablo, 1)) = tablo
 Sheets("TCD").PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
End Sub
 

Pierrot93

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

Bonsoir Celeda:), Jean-Claude:), PierreJean:), Michel:), Modeste:),

essaye peut être ceci, à la condition que dans les options du graphique, au niveau des étiquettes, le séparateur soit une nouvelle ligne... En espérant que j'ai bien compris ton souci...

Code:
Option Explicit
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.Characters.Text, vbLf)
                d.Characters.Text = Int(CDbl(Replace(t(0), ",", "."))) & vbLf & t(1)
            Next d
        End If
    End With
End If
End Sub

bonne soiré
@+
 

Celeda

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

Bonsoir,
Bonsoir Pierrot, Jean-Claude, PierreJean, Michel, Modeste, lol!!!
(cela je sais le faire : un simple copier coller lol)

"Si tu acceptes la modification de la colonne AF de la feuille DATAA "

oui, je l'accepte et c'est radical dans le TCD!! Merci PierreJean
à conserver dans MesMacros de Ti

"En espérant que j'ai bien compris ton souci... "
Tu as bien compris Pierrot : j'ai donc procédé comme tu l'as dit
j'ai mis les étiquettes sur une nouvelle ligne mais j'ai un arrêt sur cette ligne de code :

d.Characters.Text = Int(CDbl(Replace(t(0), ",", "."))) & vbLf & t(1)

mais je suis à la maison avec excel 2010.
Donc, demain je teste avec 2007 et je te reviens.

En attendant, vous êtes tous une super équipe.
 

Pierrot93

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

Bonjour à tous

essaye avec ceci, fonctionne sous 2003, et ce quelque soit le séparateur de décimale... pas testé avec ton fichier mais avec un des miens... ce matin je ne peux le récupérer sur "cjoint" (mon internet bridé)...

Code:
Option Explicit
Sub Test()
Dim s As Series, d As DataLabel, t() As String, p As Variant
Set s = Sheets("TCD").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.Characters.Text, vbLf)
                d.Characters.Text = Int(t(0)) & vbLf & t(1)
            Next d
            .Separator = p
        End If
    End With
End If
End Sub

A noter que l'on pourrait également lancer cette procédure automatiquement lors de l'actualisation du TCD.... A voir déjà si cela fonctionne chez toi comme tu le veux...

bonne journée
@+
 

Celeda

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

Bonjour tout le monde,

Merci Pierrot pour cette modif de code mais vlan, cela rebloque toujours sur la même ligne :


d.Characters.Text = Int(t(0)) & vbLf & t(1)

Peut-être que sur 2007 et 2010, certaines options ne fonctionnent pas.
Je ne veux pas t'embêter.

Si MJ13 peut tester aussi sur 2007 et nous confirmer si cela fonctionne ou pas......merci
.
 

Discussions similaires

Réponses
6
Affichages
310

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 187
dernier inscrit
ebenhamel