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

  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 -

  7. #7
    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
    Oui parallèle, pardon

    Le problème c'est que je veux différencier les mois où le taux de service est réellement de 0. Donc si je fais ta solution, ça me mettra tous les 0 en format "-".

  8. #8
    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
    alors, ne mets rien, ni zéro, ni tiret

  9. #9
    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
    Si je mets rien, les graphiques ne fonctionnent pas d'où mon problème.

  10. #10
    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
    Je ne comprends pas car chez moi, cela fonctionne.
    Peux-tu m'envoyer ton fichier?

  11. #11
    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
    Hélas non, ce sont des données sensibles..

  12. #12
    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
    je n'ai pas besoin des vrais données, juste de la structure de l'onglet "Taux de service Mensuel 2"
    Fais un fichier à part, mets n'importe quoi comme valeurs et aucune macro

    je t'ai mis celui que j'ai créé pour tester
    Fichiers attachés Fichiers attachés

  13. #13
    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
    Pour les données, j'ai des formules recherche v avec si erreur, ça doit bloquer à ce niveau là, vu que sur votre fichier tout fonctionne.

    Il faudrait que je vous envoie tout le classeur puisque tout est automatisé par des formules, mais cela m'est impossible.

  14. #14
    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
    faisons un essai autrement

    Copiez les données en tant que valeur et retentez les graphes
    si ça marche, ce sont effectivement les formules qui bloquent

  15. #15
    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
    J'ai déjà fait ce test et oui, ça fonctionne bien sans formule. Du coup je vais essayer de voir ce qui ne vas pas à ce niveau. Il faut absolument que tout soit automatisé.

  16. #16
    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
    Quand ça ne marche pas dans un sens, ....

    Gardes tes formules dans l'onglet "Taux de service Mensuel 2".

    Dans ton VBA, tu fais :
    Insertion d'un nouvel onglet nommé "Taux 3" (admettons)
    Copier coller en tant que valeurs de l'onglet "Taux de service Mensuel 2" vers "Taux 3"
    Création des graphes à partir de "Taux 3"

    => en cas de modification des données
    Suppression de "Taux 3"
    et on recommence Insertion, Copier/Coller, Création des graphes

  17. #17
    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
    A oui très bonne idée, je débute en VBA, je vais essayer de faire ça merci

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