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 :

copier un graphique vers le bas [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 55
    Par défaut copier un graphique vers le bas
    Bonjour,

    J'ai un tableau excel avec des chiffre mois par mois par client et je souhaite transformer ces chiffre sous forme de graphique. J'y arrive mais ce que je veux faire c'est de copier ce graphique pour toute les lignes. Et bien sur quand je copie mon graphique de ligne en ligne il garde comme donnée celle de la première ligne.

    Je joint le tableau avec le 1er graphique.

    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Essaie :


    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
    Sub test()
        Application.ScreenUpdating = False
        With ActiveSheet
            Set Modele = ActiveSheet.Shapes(1)
            ctr = 0
            Do While [J2].Offset(ctr + 1, -1) <> ""
                Modele.Copy
                .Paste
                Set s = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
                ctr = ctr + 1
                s.Top = [J2].Offset(ctr).Top
                s.Left = [J2].Offset(ctr).Left
                With .ChartObjects(.ChartObjects.Count).Chart.SeriesCollection(1)
                    .Formula = Application.Substitute(.Formula, "$2", "$" & (ctr + 2))
                    .Name = Application.Substitute(.Name, "$2", "$" & (ctr + 2))
                End With
            Loop
        End With
        Application.ScreenUpdating = True
    End Sub

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Les graphiques sont créés pour chaque ligne et non copiés (je les ai paramétrés par rapport à ton graphique exemple, qu'il faut d'ailleurs supprimer avant de tester mon code, ce qui peut être fait sur une copie du classeur). Il te faut adapter à tes besoins :
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    Sub Graphique()
     
        Dim Graph As Shape
        Dim Fe As Worksheet
        Dim S As Shape
        Dim DerL As Long
        Dim I As Long
     
        Set Fe = ActiveSheet
     
        'supprime les graphs existants (à voir si nécessaire ?)
        For Each S In Fe.Shapes
     
            If InStr(S.Name, "Graph") <> 0 Then
     
                S.Delete
     
            End If
     
        Next S
     
        'recherche la dernière ligne
        With Fe
     
            DerL = .Cells(.Rows.Count, 1).End(xlUp).Row
     
        End With
     
        'largeur de la colonne J à 68
        Fe.Columns("J").ColumnWidth = 68
     
        For I = 2 To DerL
     
            'hauteur des différentes lignes à 92
            Fe.Rows(I).RowHeight = 92
     
            'permet d'acceder à Excel durant la création
            'des graphiques
            DoEvents
     
            'ajoute le graphique en cours
            Set Graph = Fe.Shapes.AddChart
     
            'paramètre le graphique
            With Graph.Chart
     
                .SetSourceData Fe.Range("A" & I & ":I" & I)
                .ChartType = xlLineMarkers
                .Legend.Delete
                .ApplyDataLabels
     
            End With
     
            'renomme le graphique au nom du client (en colonne I) préfixé de "Graph_"
            Fe.Shapes(Graph.Name).Name = "Graph_" & Range("I" & I)
     
            'dimensionne et positionne le graphique dans les cellules de la colonne J
            With Fe.Shapes("Graph_" & Range("I" & I))
     
                .Width = Fe.Range("J" & I).Width
                .Height = Fe.Range("J" & I).Height
                .Top = Fe.Range("J" & I).Top
                .Left = Fe.Range("J" & I).Left
     
            End With
     
        Next I
     
    End Sub
    Hervé.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 55
    Par défaut
    Merci beaucoup pour vos 2 réponses. Les 2 fonctionnent très bien .

    L'avantage de celle de Daniel, c'est qu'il copie le modèle de graphique éxistant, donc je récupère toute la mise en forme (taille police, pas de titre, etc).

    L'avantage de celle de Theze, est que les graphique remplissent parfaitement les cellules de la colonne J est que je peux modifier dans le code la largeur et hauteur.

    Bref, un grand merci à vous deux pour vos réponses. Cela m'aide grandement.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/09/2013, 16h43
  2. copier vers le bas une ligne de formule tant que
    Par lebowsky60 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 18/09/2013, 10h23
  3. [XL-2007] Copier des graphiques vers feuille de calcul
    Par m@tix dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 18/08/2011, 09h51
  4. copier une feuille graphique vers un autre classeur en vba
    Par rob1son76 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/03/2011, 17h53
  5. copier automatiquement cellules vers le bas selon conditions
    Par washy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/05/2008, 12h53

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