IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Etiqueter le premier et dernier points d'une série [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 335
    Points : 229
    Points
    229
    Par défaut Etiqueter le premier et dernier points d'une série
    Bonjour,

    Au départ d'Access, je crée un fichier (WorkBook) excel qui ne contient qu'une feuille (WorkSheet). Dans cette feuille je crée, via VBA un graphique intégré avec la plupart des formats que je souhaite pour les points, les séries, les légendes, .... jusque là tout va bien

    Une fois ce fichier créé, via VBA, j'y transfère le contenu d'un recordset Access (ca fonctionne bien aussi) et le graphique se met automatiquement à jour. Au total, j'ai 16 colonnes de valeurs.

    Ce que je souhaiterai faire ensuite est d'afficher une étiquette personnalisée pour le premier point et le dernier point des séries(colonnes) 7 à 16. En cherchant sur le net j'ai trouvé plusieurs solutions dont je me suis inspiré mais... ca coince...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
        xlSheet.Cells(4, 1).CopyFromRecordset rec3 ' copie du recordset à partir de la cellule (4,1)= "A4" de la feuille
        xlSheet.ChartObjects(1).Activate
     
        nbrseries = ActiveChart.SeriesCollection.count
     
        'redéfinit l'axe des abcisses (X)
        With ActiveChart.Axes(xlCategory)
            .MinimumScale = xlSheet.Range("A4").value
            .MaximumScale = xlSheet.Range("A" & rec3.RecordCount).value + 2       
        End With
        ActiveChart.DisplayBlanksAs = xlZero
     
        ActiveChart.DisplayBlanksAs = xlNotPlotted
     
       'on rajoute un label aux premiers et derniers points des séries
         For j = 7 To rec3.Fields.count
        MsgBox "nbrseries = " & nbrseries & "; rec3.Fields.count = " & rec3.Fields.count
            With ActiveChart.SeriesCollection(j).Points(1)
                        .HasDataLabel = True
                        .DataLabel.text = "P"
            End With
            With ActiveChart.SeriesCollection(j).Points(ActiveChart.SeriesCollection(j).Points.count)
                        .HasDataLabel = True
                        .DataLabel.text = "P"
            End With
        Next j
    J'ai une erreur 1004 la plupart du temps et de temps en temps une erreur 345, après avoir ajouter le code pour ajouter des etiquettes aux points.
    Sinon tout se passe super bien si je n'ajoute pas ce code...

    Pouvez-vous me dire ce que j'ai mal écris et m'aider à corriger cela, svp?

    Un grand merci d'avance

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 335
    Points : 229
    Points
    229
    Par défaut
    Bonjour,

    Après ce bon weekend, je vois qu'il n'y a toujours pas de suggestion pour corriger mon code voire le remplacer par un autre qui fonctionnerait...
    Je continue de chercher de mon côté mais suis toujours nulle part...

    Bonne semaine en tout cas et au plaisir de vous lire (j'espère ;-) )

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 335
    Points : 229
    Points
    229
    Par défaut
    Bonjour,

    J'ai trouvé une solution qui fonctionne bien même si ce n'est peut-être pas la plus optimale en nbr de ligne de codage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
        ActiveSheet.ChartObjects(1).Activate
        ActiveChart.FullSeriesCollection(1).DataLabels.Delete
     
        ActiveChart.SeriesCollection(1).Points(1).HasDataLabel = True
        ActiveChart.SeriesCollection(1).Points(1).DataLabel.Select
        Selection.Interior.Color = ActiveSheet.Cells(1 + 1, 1).Interior.Color
        Selection.Font.Size = 7
        Selection.Text = "ce qu'on veut comme texte"
        ActiveChart.SeriesCollection(1).Points(1).MarkerBackgroundColorIndex = 4
        ActiveChart.SeriesCollection(1).Points(1).MarkerBackgroundColor = ActiveSheet.Cells(1 + 1, 1).Interior.Color
     
     
        ActiveChart.SeriesCollection(1).Points(ActiveChart.SeriesCollection(1).Points.Count).HasDataLabel = True
        ActiveChart.SeriesCollection(1).Points(ActiveChart.SeriesCollection(1).Points.Count).DataLabel.Select
        Selection.Interior.Color = ActiveSheet.Cells(ActiveChart.SeriesCollection(1).Points.Count + 1, 1).Interior.Color
        Selection.Font.Size = 7
        Selection.Text = "ce qu'on veut comme texte"
        ActiveChart.SeriesCollection(1).Points(ActiveChart.SeriesCollection(1).Points.Count).MarkerBackgroundColorIndex = 4
        ActiveChart.SeriesCollection(1).Points(ActiveChart.SeriesCollection(1).Points.Count).MarkerBackgroundColor = ActiveSheet.Cells(ActiveChart.SeriesCollection(1).Points.Count + 1, 1).Interior.Color
    Bonne journée à tous et toutes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E] Changement de couleur d'un point d'une série dans un graphique ?
    Par epfyffer dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/02/2020, 11h59
  2. [Toutes versions] Etats afficher le premier et dernier champ d'une page
    Par sardaucar dans le forum IHM
    Réponses: 4
    Dernier message: 15/04/2014, 16h02
  3. Bordure premier et dernier élément sur une listview
    Par Willy55 dans le forum Composants graphiques
    Réponses: 0
    Dernier message: 29/03/2014, 20h30
  4. Récupérer le premier ou dernier fichier d'une liste
    Par adlmdi dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 11/09/2007, 10h53
  5. VBA, graphiques : Acceder au Range pointé par une série
    Par CCHEVALIER dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/09/2005, 10h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo