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 :

Réaliser une macro en VBA pour excel afin de créer un graphe


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Réaliser une macro en VBA pour excel afin de créer un graphe
    BONJOUR,

    Je souhaite faire une macro qui dessine un graphe.

    J'ai utilisé pour cela l'enregistreur automatique d'excel.

    Mais voila lorsque je veux utiliser cette macro avec un autre classeur elle bloque sur :

    ActiveChart.SetSourceData Source:=ActiveSheet(TOTO_1).Range( _
    "FX1:FX3343,GW1:GW3343,HD1:HD3343"), PlotBy:=xlColumns

    Car ActiveSheet(TOTO_1) change de nom et peux etre sous le nouveau classeur "TOTO_2" que dois je faire pour éliminer ce problème.

    Merci de votre aide

    Ps je peux vous faire parvenir les données que je traite si cela peux vous aider.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    d'ou sort ce code :
    il ne me semble pas correct ?

    ensuite , toto_1 et toto_2 c'est quoi un classeur une feuille?

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour bbil

    voici le code entier de cette macro qui me pose certain probleme lorsque je souhaite l'utiliser dans un autre classeur comptenant les mêmes type de données, mais dont la feuilles active "TOTO_1" s'appelle "TOTO_n"

    je peux t'envoyer le fichier et la macro si tu le souhaite

    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
    Sub data1vsdatas()
    '
    ' data1vsdatas Macro
    ' Macro enregistrée le 04/12/2005 par Administrateur
    '
     
    '
        Columns("FX:FX").Select
        ActiveWindow.SmallScroll ToRight:=27
        Range("FX:FX,HD:HD,HE:HE,GY:GY").Select
        Range("GY1").Activate
        Charts.Add
        ActiveChart.ChartType = xlLine
        ActiveChart.SetSourceData Source:=Sheets("TOTO_1").Range( _
            "FX1:FX6467,GY1:GY6467,HD1:HE6467"), PlotBy:=xlColumns
        ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="DATA vs DATAS 234"
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = "DATA1 vs DATAs 2;3;4"
            .Axes(xlCategory, xlPrimary).HasTitle = False
            .Axes(xlValue, xlPrimary).HasTitle = False
        End With
        ActiveChart.SeriesCollection(4).Select
        ActiveChart.SeriesCollection(4).AxisGroup = 2
        ActiveChart.SeriesCollection(3).Select
        ActiveChart.SeriesCollection(3).AxisGroup = 2
        ActiveChart.SeriesCollection(2).Select
        ActiveChart.SeriesCollection(2).AxisGroup = 2
        ActiveChart.Legend.Select
        Selection.Left = 449
        Selection.Top = 1
        Selection.Width = 269
        Selection.Height = 38
        ActiveChart.ChartTitle.Select
        Selection.Left = 42
        Selection.Top = 2
        ActiveChart.ChartArea.Select
        ActiveChart.Legend.Select
        Selection.Left = 303
        Selection.Width = 409
        ActiveChart.PlotArea.Select
        Selection.Width = 707
        With Selection.Border
            .ColorIndex = 16
            .Weight = xlThin
            .LineStyle = xlContinuous
        End With
        Selection.Interior.ColorIndex = xlNone
        ActiveChart.Legend.Select
        ActiveChart.Legend.LegendEntries(3).LegendKey.Select
        With Selection.Border
            .ColorIndex = 3
            .Weight = xlThin
            .LineStyle = xlContinuous
        End With
        With Selection
            .MarkerBackgroundColorIndex = xlNone
            .MarkerForegroundColorIndex = xlNone
            .MarkerStyle = xlNone
            .Smooth = False
            .MarkerSize = 3
            .Shadow = False
        End With
    End Sub

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    .. comment lance tu ta macro ... ? si tu la lance depuis la feuille contenant les données..
    voici le debut de conde à modifier pour mémoriser dans une variable range la plage servant comme source de donnéee..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ..
    Dim rSource As Range ' Definie source données
    Set rSource = ActiveSheet.Range("FX:FX,HD:HD,HE:HE,GY:GY")
    Charts.Add
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=rSource _
    , PlotBy:=xlColumns
    ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="DATA vs DATAS 234"
    With ActiveChart
    ...
    Attention la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="DATA vs DATAS 234"
    définit l'emplacement du graphique dans nouvelle feuille nommée "DATA vs DATAS 234" , nom qui doit être unique dans le classeur !...

  5. #5
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci bbil

    c'était si simple !!!

    J'ai pourtant passer pas mal d'heures sur le net et dans les bouquins sans trouver la solution.

    Je savais que cette macro pouvais etre simplifier sur beaucoup de domaine mais je buttais toujours sur cette fonction "ActiveChart.SetSourceData Source:= ;;;;"

    peux tu m'expliquer ton choix :

    Dim rSource As Range
    Set rSource = ActiveSheet.Range("FX:FX,HD:HD,HE:HE,GY:GY")

    est une donnée spécifique à VBA

    Encore milles merci car vue l'ensemble de graph que j'ai à traiter et la taille des fichiers, je peux t'assurer que ton aide ma été +++que précieuse.

    Juste une dernière question

    Dans ce cas on ne traite pas le fait qu'il y est des cellules vides dans les colonnes FX HD HE GY est cela peux poser un problème lorsqu'il ya moins de données.


    A+

    Je pense que je ferais encore appel à ta maitrise du code VBA d'ici quelques jours.

    Bon Dimanche

  6. #6
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    .. comment lance tu ta macro ... ?

    Juste pour répondre à ta question BBIL

    Oui je la lance à partir de la feuille de donées, j'espère même arriver à lui affecter un bouton sur une barre perso, car comme je te le disais précédement j'ai pas mal de graphe à réaliser.

    Salut

Discussions similaires

  1. [XL-2010] Utiliser une macro d'un fichier excell pour mettre en page une autre fichier excell
    Par ab1to dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 29/11/2013, 16h40
  2. Réponses: 3
    Dernier message: 09/07/2009, 15h19
  3. Problème pour réaliser une macro "de boucles" dans VBA
    Par philou7176 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/12/2008, 15h41
  4. Demarrer une Macro/Appli VBA sans paser par les feruilles Excel
    Par size_one_1 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 08/12/2006, 21h23
  5. Executer une Macro Access à partir d'Excel (avec VBA)
    Par math78 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 08/11/2006, 14h05

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