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 :

Macro Excel VBA : création automatique de 140 graphes/graphiques


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Macro Excel VBA : création automatique de 140 graphes/graphiques
    Je souhaite générer au moins 140 graphes sur l'évolution sur 1 an de
    mes données.
    Toutefois, j'ai un bug car si j'imagine que toutes mes données sont
    sur un fichier et que sur 140 lignes, je créée mes graphes, mon
    incrémentation ne marche pas, si je n'ai pas de variable et que je
    créée 140 fois le même graphe, ça marche, mais, pour des lignes
    différentes, rien, les 140 graphes sont sans courbe, donc, je n'ai pas
    su écrire mon incrémentation, un truc que je cherche encore et que je
    ne sais pas, donc, si quelqu'un connait mon erreur et vu que je
    travaille surtout le soir là-dessus, ça me permettrait d'avancer,
    merci !



    J'ai compté que ma macro fonctionnera sur 140 courbes à exécuter
    automatiquement, ce qui est gros.

    J'ai 1 seul bug qui est que ma ligne d'incrémentation, VBA ne la
    comprend pas :

    Si je créée 5 fois la même courbe, ça marche, mais, si je veux prendre
    en compte chaque ligne avec ses données, il crée 5 tableaux vides,
    donc, il ne comprend pas ce que j'ai écrit, c'est bien écrit, mais
    non, donc, je cherche une autre solution ou où est mon erreur ?



    Ceci ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    lignier1 = Chr(34) & "=" & "(tableau!R" & i & "C3," & "tableau!R"
    & i & "C4," _
    & "tableau!R" & i & "C6," & "tableau!R" & i & "C8," & "tableau!R"
    & i & "C10)" & Chr(34)
     
    ActiveChart.SeriesCollection(1).Values = lignier1

    dans uen cellule, j'ai écrit ce que ça donne :

    "=(tableau!R2C3,tableau!R2C4,tableau!R2C6,tableau!R2C8,tableau!R2C10)"

    de 2 à 5 comme prévu et il ne me donne aucune courbe ?



    J'ai essayé une autre méthode, mais ,j'ai là aussi un problème
    d'incrémentation.



    Merci.





    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    Sub courbes()
    '
    ' courbes Macro
    ' Macro enregistrée le 10/02/2007 par pc2
    '
    '
    ' version2 Macro
    ' Macro enregistrée le 09/02/2007 par eric31
    '
     
    'maxlig = Range("B65535").End(xlUp).Row
    maxlign = 5
     
     
    For i = 2 To maxlign
     
    Sheets("tableau").Select
    Charts.Add
    'ActiveChart.ApplyCustomType ChartType:=xlBuiltIn, TypeName:= _
    "Courbes"
    ActiveChart.ChartType = xlLine
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).XValues = _
    "=(tableau!R1C3,tableau!R1C4,tableau!R1C6,tableau!R1C8,tableau!
    R1C10)"
     
    lignier1 = Chr(34) & "=" & "(tableau!R" & i & "C3," & "tableau!R"
    & i & "C4," _
    & "tableau!R" & i & "C6," & "tableau!R" & i & "C8," & "tableau!R"
    & i & "C10)" & Chr(34)
     
    ActiveChart.SeriesCollection(1).Values = lignier1
     
    'voir ActiveChart.SeriesCollection(1).Values = _
    "=(tableau!R2C3,tableau!R2C4,tableau!R2C6,tableau!R2C8,tableau!
    R2C10)"
    '"=(tableau!R2C3,tableau!R2C4,tableau!R2C6,tableau!R2C8,tableau!
    R2C10)"
     
    ActiveChart.SeriesCollection(1).Name = "=""1ereserie"""
     
    'lignier2 = Chr(34) & "=" & "(tableau!R" & i & "C5," & "tableau!R"
    & i & "C7," _
    & "tableau!R" & i & "C9," & "tableau!R" & i & "C11,"
    & "tableau!R" & i & "C13)" & Chr(34)
     
    'ActiveChart.SeriesCollection(2).Values = lignier2
     
    'ActiveChart.SeriesCollection(2).Values = _
    "=(tableau!R(i)C5,tableau!R(i)C7,tableau!R(i)C9,tableau!R(i)
    C11,tableau!R(i)C13)"
    'tableau!R8C3,tableau!R8C4,tableau!R8C6,tableau!R8C8,tableau!
    R8C10
     
    'ActiveChart.SeriesCollection(2).Name = "=""2emeserie"""
    ActiveChart.Location Where:=xlLocationAsObject, Name:="graphmaison"
     
    'ActiveChart.Axes(xlCategory).Select
    ActiveChart.PlotArea.Select
    ActiveChart.ChartType = xlLine
    'ActiveChart.ApplyCustomType ChartType:=xlBuiltIn, TypeName:= _
    "Courbes" '"Courbes à deux axes"
     
    With ActiveChart
    .HasTitle = False
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
    '.Axes(xlCategory, xlSecondary).HasTitle = False
    '.Axes(xlValue, xlSecondary).HasTitle = False
    End With
    Sheets("graphmaison").Cells(i, 1) = lignier1
     
    Sheets("tableau").Select
     
    Next
    '
     
     
    '
    ActiveSheet.Shapes.AddTextEffect
    (msoTextEffect11, "courbes", "Impact", 20#, _
    msoFalse, msoFalse, 249#, 147#).Select
    Selection.ShapeRange.IncrementLeft 208.5
    Selection.ShapeRange.IncrementTop -30.75
    Range("H15").Select
    End Sub

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    J'ai fait ça pour 120 graphes. Je n'ai pas la procédure ici mais j'ai utilisé cette méthode pour utiliser des variables pour la création de graphes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub CréerUnGrapheApartirDeVariables()
    Dim r As Range, NoCol1, NoCol2, NoLig1, NoLig2
        NoCol1 = 1
        NoCol2 = 2
        NoLig1 = 14
        NoLig2 = 19
        Worksheets("Récapitulatif").Cells(NoLig1, NoCol1).Select
        Set r = Range(Cells(NoLig1, NoCol1), Cells(NoLig2, NoCol2))
        Charts.Add
        ActiveChart.ChartType = xlColumnClustered
        ActiveChart.SetSourceData Source:=Sheets("Récapitulatif").Range(r.Address), PlotBy:=xlColumns
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Récapitulatif"
    End Sub
    Si tu n'as qu'une "SeriesCollection", ça pourrait peut-être te faciliter la vie
    A+

    PS - Qu'entends-tu par "incrémenter" ? Le positionnement de tes graphes ? Il est là le pb ?

Discussions similaires

  1. macro excel vba
    Par alain33320 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/11/2009, 15h09
  2. Appeler une dll ou un autre module vba depuis une macro excel vba
    Par technobiz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/11/2008, 14h24
  3. Réponses: 3
    Dernier message: 19/03/2008, 21h44
  4. macro excel vba
    Par fildupa dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/12/2006, 21h29

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