[Résolu] Mise en forme d'étiquettes de données avec MsoAutoShapeType

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

InaPiotr

XLDnaute Nouveau
Bonjour à tous,
je cherche actuellement à automatiser la mise en forme d'étiquettes de donées sur un graphique via du VBA. J'ajoute les étiquettes via le code suivant :
VB:
With graphique.Chart.FullSeriesCollection(serie)
        If .HasDataLabels Then .DataLabels.Delete   'suppression des étiquettes seulement si elles existent
        .ApplyDataLabels    'ajout des étiquettes
      
        With .DataLabels
            .ShowValue = False
            .Format.TextFrame2.TextRange.InsertChartField msoChartFieldRange, source.Address(external:=True), 0 'liaison entre le contenu des étiquettes et ma plage
            .ShowRange = True
            .ShowLegendKey = -1
            .Position = xlLabelPositionAbove
            .Format.AutoShapeType = MsoAutoShapeType.msoShapeOvalCallout ''ne fait rien
        End With
    End With
c'est globalement assez simple, et ça fonctionne bien. A une exception près : la dernière ligne ne produit aucun effet. Pourtant, lorsqu'on change la mise en forme des étiquettes à la main en enregistrant une macro, c'est bien cette fonction qui est utilisée ; mais ici, elle ne produit aucun résultat (c'est à dire que les étiquettes gardent leur forme de base, sans arrière plan ni forme quelconque).
J'ai eu beau chercher sur internet, je ne parviens pas à trouver un début d'explication. C'est pourquoi si vous aviez ne serait-ce qu'une piste de recherche, je vous en serais reconaissant.
Cordialement,
Ianpiotr
 
Bon, je viens de trouver l'explication. En fait, la ligne en question fonctionnait bien, mais pour une raison obscure, lorsque les étiquettes sont créées, leur arrière plan et leur couleur de bordure sont tous deux définis sur "aucun" (et donc la mise en forme de l'étiquette est là, mais invisible). il suffit donc de rajouter le code suivant juste avant la définition de l'autoshapetype :
VB:
             With .Format.Fill
                .Visible = msoTrue
                .ForeColor.rgb = rgb(255, 255, 255)
                .Solid
            End With
            With .Format.Line
                .Visible = msoTrue
                .ForeColor.rgb = rgb(89, 89, 89)
            End With
Finalement c'était simple, j'espère que cela pourra en aider d'autres qui auront le même problème.
Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour