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 :

Position des graphiques


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2018
    Messages : 20
    Par défaut Position des graphiques
    Bonjour à tous,

    J'ai fait une macro pour automatiser la création de graphiques, mais je n'arrive pas à faire en sorte que les graphiques se positionnent à coté de mon tableau, les uns à la suite des autres.

    Voici le code d'origine, merci par avance.


    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Dim ligne As Integer
     
    ligne = 5
     
    While Sheets("Taux de service Mensuel 2").Range("B" & ligne).Value <> ""
        Union(Range("C4:N4"), Range(Cells(ligne, 3), Cells(ligne, 14))).Select
        Sheets(5).Shapes.AddChart.Select
        activeChart.ChartType = xlColumnClustered
        activeChart.SeriesCollection(1).Select
        activeChart.SeriesCollection(1).ChartType = xlLine
        activeChart.SeriesCollection(1).Name = "='Taux de service Mensuel 2'!$B$4"
        activeChart.SeriesCollection(2).Name = "=""Taux de service"""
        activeChart.SeriesCollection(2).XValues = _
            "='Taux de service Mensuel 2'!$C$3:$N$3"
        activeChart.SetElement (msoElementChartTitleAboveChart)
        activeChart.ChartTitle.Text = Cells(ligne, 2)
        Selection.Format.TextFrame2.TextRange.Characters.Text = Cells(ligne, 2)
        With Selection.Format.TextFrame2.TextRange.Characters(1, 1).ParagraphFormat
            .TextDirection = msoTextDirectionLeftToRight
            .Alignment = msoAlignCenter
        End With
        With Selection.Format.TextFrame2.TextRange.Characters(1, 1).Font
            .BaselineOffset = 0
            .Bold = msoTrue
            .NameComplexScript = "+mn-cs"
            .NameFarEast = "+mn-ea"
            .Fill.Visible = msoTrue
            .Fill.ForeColor.RGB = RGB(0, 0, 0)
            .Fill.Transparency = 0
            .Fill.Solid
            .Size = 18
            .Italic = msoFalse
            .Kerning = 12
            .Name = "+mn-lt"
            .UnderlineStyle = msoNoUnderline
            .Strike = msoNoStrike
        End With
     
        ligne = ligne + 1
        DoEvents
     
    Wend
    End Sub

  2. #2
    Membre éprouvé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 91
    Par défaut
    Essaie quelque chose comme ça :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    Sub test()
    Dim ligne As Integer
     
    ligne = 0
     
    While Sheets("Taux de service Mensuel 2").Range("B" & 5 + ligne).Value <> ""
        Range("C4:N" & 5 + ligne).Select
        Sheets(1).Shapes.AddChart.Select
        ActiveChart.ChartType = xlColumnClustered
        While ActiveChart.SeriesCollection.Count > 2
            ActiveChart.SeriesCollection(2).Delete
        Wend
        ActiveChart.SeriesCollection(1).Select
        ActiveChart.SeriesCollection(1).ChartType = xlLine
        ActiveChart.SeriesCollection(1).Name = "='Taux de service Mensuel 2'!$B$4"
        ActiveChart.SeriesCollection(2).Name = "=""Taux de service"""
        ActiveChart.SeriesCollection(2).XValues = _
        "='Taux de service Mensuel 2'!$C$3:$N$3"
        ActiveChart.SetElement (msoElementChartTitleAboveChart)
        ActiveChart.ChartTitle.Text = Cells(5 + ligne, 2)
        Selection.Format.TextFrame2.TextRange.Characters.Text = Cells(5 + ligne, 2)
        With Selection.Format.TextFrame2.TextRange.Characters(1, 1).ParagraphFormat
        .TextDirection = msoTextDirectionLeftToRight
        .Alignment = msoAlignCenter
        End With
        With Selection.Format.TextFrame2.TextRange.Characters(1, 1).Font
        .BaselineOffset = 0
        .Bold = msoTrue
        .NameComplexScript = "+mn-cs"
        .NameFarEast = "+mn-ea"
        .Fill.Visible = msoTrue
        .Fill.ForeColor.RGB = RGB(0, 0, 0)
        .Fill.Transparency = 0
        .Fill.Solid
        .Size = 18
        .Italic = msoFalse
        .Kerning = 12
        .Name = "+mn-lt"
        .UnderlineStyle = msoNoUnderline
        .Strike = msoNoStrike
        End With
     
     
        strName = Replace(ActiveChart.Name, ActiveSheet.Name & " ", "") 'le nom du graphe dans la macro reprend le nom de l'onglet
        With ActiveSheet.Shapes(strName)
            .Left = 3
            .Top = 2 + 225 * ligne
        End With
     
        ligne = ligne + 1
        DoEvents
     
    Wend
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2018
    Messages : 20
    Par défaut
    Merci beaucoup Bob, du coup pour que je comprenne comment le placer à ma guise, c'est cette partie qui gère le positionnement ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       With ActiveSheet.Shapes(strName)
            .Left = 3
            .Top = 2 + 225 * ligne
        End Wit
    By the way le code fonctionne, mais à partir de la ligne 16, les graphiques sont faux, ma ligne objectif n'est plus une droite perpendiculaire à l’abscisse et les mois sont décalés. Je commence à perdre patience avec cette macro

  4. #4
    Membre éprouvé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 91
    Par défaut
    oui, c'est cela.


    pour le problème de données, peux-tu me donner un exemple de données?
    Ce serait plus facile
    (Pas besoin d'en avoir beaucoup et les réelles)

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2018
    Messages : 20
    Par défaut
    Alors en gros, on a normalement, perpendiculaire à l'axe des abscisses une droite qui représente le taux de service cible, fixé à 90% et a côté de ça, le taux de service mensuel sous forme de bâtons.

    Pour la ligne 16 où tout s'emballe on a de Janvier à Avril 0%, 100% de mai à Juillet, 75% en Août, 100% en septembre et novembre et 0% en octobre et décembre. A la base je voulais mettre des "-" à la place des 0% vu que c'est des mois sans commande donc pas de taux de service, mais impossible pour faire les graphiques.

  6. #6
    Membre éprouvé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 91
    Par défaut
    Perpendiculairement à l'axe des ordonnées, plutôt (ou parallèlement à l'axe des abscisse)?
    => une droite horizontale, quoi


    Tu mets 0 pour les mois sans commande
    mais formate les cellules :
    Format personnalisée : 0;"";"-"

    Au lieu de voir des 0 dans ton tableau, tu verras des -

Discussions similaires

  1. [2008R2] Position dynamique des graphiques
    Par Chucky69 dans le forum SSRS
    Réponses: 1
    Dernier message: 12/07/2013, 17h45
  2. Réponses: 0
    Dernier message: 06/02/2008, 18h30
  3. [CrystalReports 8.5]Graphique 3D : position des étiquettes
    Par caubry dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 01/09/2004, 11h17
  4. Exportation des graphiques d'un modèle (Power AMC)
    Par boubaouz dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 16/04/2003, 15h59
  5. Changer dynamiquement la position des onglets
    Par ginnovy dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/09/2002, 18h24

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