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 :

VBA - Création de plusieurs graphiques sur plusieurs feuilles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 8
    Par défaut VBA - Création de plusieurs graphiques sur plusieurs feuilles
    Bonjour après plusieurs jours à chercher je ne comprend toujours pas l'utilisation des graphiques.
    J'ai créé plusieurs macro qui traitent et évaluent les travail des équipes, tout fonctionne très bien et la dernière étape qui est la représentation par graphique (j'aimerai en avoir 3 par salarié) a raison de moi.

    Je me permets de vous poser directement toutes les questions et j'apprécierai beaucoup qu'on me renvoi pas sur la page des graphiques de ce site, je ne m'en sors pas non plus
    J'ai l'impression qu'il y a plusieurs façon de déclarer un graphique et je mélange tout.
    A savoir aussi que j'ai programmer tout mon code qui marche très bien en remontant dans ce forum depuis maintenant 5 semaines mais la...

    Voila mes problèmes que j'aimerai comprendre :

    -Comment déclarer un graphique (lignes) avec plusieurs entrées ? exemple : A1:A6 , C1,C6 pour l'axe X et Y
    -Peut on remplacer les chiffres des lignes par des variables et si oui qu'elle est la syntaxe ?
    -Dois-je créer une série ? et a quel moment la déclarer ?


    Je vous explique mon code : Sur la feuille 1 colonne J se trouve la liste des préparateurs. Pour le traitement des données chaque préparateur possède sa propre feuille pour un historique qui s'appelle "S"+nom du préparateur. Sur cette feuille se trouve un certain nombre d'information, mais considérons que seulement la colonne A et C est importante, je saurai m'occuper du reste si je comprend déjà cela.

    Les feuilles des préparateur vont s'incrémenter et gagner en ligne chaque semaine donc j'ai des variables qui me permettront d'obtenir toujours les 4 dernières semaines.
    Et finalement la feuil4 contient l'ensemble, le total des préparateurs, ce avec la colonne F qui servira de moyenne hebdomadaire pour pouvoir etre retranscrite sur chaque graphique afin d'avoir une idée plus visuelle du travail de tel ou tel préparateur

    Voici le code pour le graphique qui ne marche pas du tout bien évidemment

    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
     
    Sub Graphiques()
     
     
    Dim chrt As Object, Lastrow As Long
    Dim debut As Integer, Derniereligne As Integer, name As String
    Dim rng As Range, rng1 As Range, rng2 As Range
    Dim debut2 As Integer, Lastrow2 As Integer
     
     
     
        Feuil1.Activate
        Derniereligne = Range("J300").End(xlUp).Row
     
        For i = 8 To Derniereligne
     
            Cells(i, 10) = name
            Sheets("S" & name).Activate
            Lastrow = Range("A6000").End(xlUp).Row
            debut = Lastrow - 3
     
     ''''''''''''le debut2 et LR2 concerne le tableau recap afin de se mettre au meme niveau'''''''''''''
            debu2 = debut + 2
            Lastrow2 = Lastrow + 2
     
            ActiveSheet.ChartObjects.Delete ' efface les graphiques incorporés
     
            Set rng = ActiveSheet.Range(" A & debut:A & Lastrow")
            Set rng1 = ActiveSheet.Range(" C & debut:C & Lastrow")
            Set rng2 = Feuil4.Range("F & debut2: F & Lastrow2")
     
            Set chrt = ActiveSheet.Shapes.AddChart2
     
            chrt.Chart.SetSourceData Source:=(rng & rng1 & rng2)
     
        .HasTitle = True ' sur true, permet de définir le titre du graphique
        .ChartTitle.Text = "Moyenne_poids"
        With ActiveSheet.ChartObjects(1)
        .Top = Range("G2").Top
        'position du graphique, bord supérieur
        .Left = Range("G2").Left ' bord gauche
       ' .Name = "Graph Produit GSC" 'titre du graphique
        End With
     
    End With
     
    ActiveSheet.Activate
     
    ActiveChart.Deselect
     
        Next i
     
    End Sub
    Je vous remercie déjà de m'avoir lu, je ne cherche pas à avoir la réponse toute faite bien entendu mais si vous arriviez à m'expliquer avec vos mots plutôt que me renvoyer sur une page que j'ai déjà lu un bon nombre de fois, ce serait un plus.

    Merci !

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 437
    Par défaut
    Bonjour,

    Une correction "à vue", non testée. Les "Set Rng" sont certainement à corriger, ainsi que la partie "SourceData". Pour le reste je n'ai pas compris les différents appels de feuilles (Feuil1, feuille S..., Feuil4). A éviter absolument: donner à un objet un libellé déjà utilisé par Excel, ici "name" (remplacé par sName).
    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
    Sub Graphiques()
        Dim Chrt As Object, LastRow As Long
        Dim Debut As Integer, Derniereligne As Integer, sName As String
        Dim Rng As Range, Rng1 As Range, Rng2 As Range
        Dim i As Long, Debut2 As Integer, LastRow2 As Integer
        Feuil1.Activate
        Derniereligne = Range("J300").End(xlUp).Row
        For i = 8 To Derniereligne
            Cells(i, 10) = sName
            Sheets("S" & sName).Activate
            LastRow = Range("A6000").End(xlUp).Row
            Debut = LastRow - 3
            '--- debut2 et LR2 concerne le tableau recap afin de se mettre au meme niveau
            Debut2 = Debut + 2
            LastRow2 = LastRow + 2
            ActiveSheet.ChartObjects.Delete '--- efface les graphiques incorporés
            Set Rng = ActiveSheet.Range("A" & Debut & ":A" & LastRow)
            Set Rng1 = ActiveSheet.Range("C" & Debut & ":C" & LastRow)
            Set Rng2 = Feuil4.Range("F" & Debut2 & ":F" & LastRow2)
            Set Chrt = ActiveSheet.Shapes.AddChart
            With Chrt
                .SetSourceData Source:=(Rng.Address & "," & Rng1.Address & "," & Rng2.Address)
                .HasTitle = True    '--- permet de définir le titre du graphique
                .ChartTitle.Text = "Moyenne_poids"
            End With
            With ActiveSheet.ChartObjects(1)
                 .Top = Range("G2").Top
                 .Left = Range("G2").Left
            End With
        Next i
    End Sub
    Bonne continuation.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 8
    Par défaut
    Super, merci de m'avoir donné une piste pour l'écriture de plusieurs plages. Néanmoins le set souce data comme prévenu ne fonctionne pas, je vais essayer plusieurs choses.
    Merci encore d'avoir répondu, à bientôt.

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 437
    Par défaut
    Voir si ceci ne convient pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .SetSourceData Source:=Range(Rng.Address & "," & Rng1.Address & "," & Rng2.Address)
    '--- ou
    .SetSourceData Source:=Range("""" & Rng.Address & "," & Rng1.Address & "," & Rng2.Address & """")
    Cordialement.

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 8
    Par défaut
    Malheureusement non plus, pour votre première ligne j'ai une erreur d'exécution 438, propriété ou méthode non gérer par cette objet.
    Pour la seconde, c'est inscrit que la méthode range de l'objet global a échouée.

    Si j'arrive à trouver la solution je l'inscrirai ici.
    Merci quand même

    Cordialement

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 8
    Par défaut
    Pour aider les prochains qui tomberont sur cette discussion :

    Au final j'ai réussi tout simplement en copiant les valeurs des autres feuilles et en les collant sur la feuille active qui recevra les graphiques. pour que les valeurs soient cachées je me suis arrangé pour que les graphiques soit positionnés dessus

    Voici le code pour faire des graphiques avec des lignes :

    Pensez à bien définir les variables avant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Range("G3:I6").Select
                        ActiveSheet.Shapes.AddChart.Select
                            ActiveChart.SetSourceData Source:=Range("G3:I6")
                                ActiveChart.ChartType = xlLineMarkers
                                    ActiveChart.Legend.Delete
                                        'ActiveChart.SeriesCollection(1).ApplyDataLabels
                                            ActiveChart.SeriesCollection(2).ApplyDataLabels
                    With ActiveChart
                        .HasTitle = True
                        .ChartTitle.Characters.Text = "Moyenne des poids pesés"
                    End With
    Bon courage

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

Discussions similaires

  1. [XL-2010] PB de création d'un graphique sur une feuille créée dans une macro
    Par ecailley dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/04/2013, 15h16
  2. Création de plusieurs feuilles à partir d'une plage
    Par sylvestre09 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 22/03/2012, 15h04
  3. [XL-2003] Plusieurs graphiques sur une feuille
    Par bbcancer dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 21/06/2011, 15h00
  4. [XL-2003] création de plusieurs feuilles et remplissage automatique
    Par tonitto85 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/11/2009, 17h11
  5. Réponses: 2
    Dernier message: 21/06/2007, 15h26

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