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 :

Problème pour une macro de traçage graphique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Par défaut Problème pour une macro de traçage graphique
    Bonjour,

    Je début dans Excel et me retrouve confronté à un petit problème dans le code d'une macro qui a pour objectif de tracer des graphiques avec des tableaux ayant un nombre de lignes variables selon le cas. Le code est le suivant.

    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
    Sub Graphiques()
    '
    ' Graphiques Macro
     
    '
    Dim LastRow As Long
    Dim crlf As String
     
    crlf = Chr(13) & Chr(10)
     
     
    LastRow = ActiveSheet.Cells.Find(What:="*", _
                  SearchDirection:=xlPrevious, _
                  SearchOrder:=xlByRows).Row
     
     
    ActiveSheet.Cells(1, 2).Value = Test
    ActiveSheet.Cells(1, 3).Value = Test2
    '
        Charts.Add
        ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
        ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("O7")
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(1).XValues = "=Sheet1!R2C6:R11C6"
        ActiveChart.SeriesCollection(1).Values = "=Sheet1!R2C7:R11C7"
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
        With ActiveChart.Axes(xlCategory)
            .HasMajorGridlines = False
            .HasMinorGridlines = False
        End With
        With ActiveChart.Axes(xlValue)
            .HasMajorGridlines = True
            .HasMinorGridlines = False
        End With
    End Sub
    J'aimerais que ce code s'applique à différents cas avec un nombre de lignes différent. C'est pour ça que j'ai crée la variable 'LastRow'. Mais je n'arrive pas à l'introduire au moment de la sélection des valeurs pour le graphique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveChart.SeriesCollection(1).XValues = "=Sheet1!R2C6:R11C6"
        ActiveChart.SeriesCollection(1).Values = "=Sheet1!R2C7:R11C7"
    Merci d'avance pour votre aide.

    Daniel

  2. #2
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    Bonjour, Pour LastRow, essai plutot un truc comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LastRow= Range("A65536").End(XlUp).Row
    Ensuite pour les series, utilise des plages:
    Voici comment je procède: (lgraphe et Coldroite sont des variable indéterminée au départ de la macro)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Set maplage = Range(Cells(lgraphe, 2), Cells(lgraphe + 6, ColDroite))
    Set plageX = maplage.Rows(4)
    Set plageY1 = maplage.Rows(6)
    Set plageY2 = maplage.Rows(7)
    Set plagelabel = maplage.Rows(2)

  3. #3
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    Je répond à ton MP ici que tout le monde puisse voir a réponse.

    Ici ce code permet de chercher la première cellule non vide de la colonne A en partant de la cellule A65536 et en remontant.
    Maintenant si tu n'as rien dans la colonne A c'est normal qu'il ne trouve rien, il faut que tu adaptes pour être sur la bonne colonne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LastRow= Range("A65536").End(XlUp).Row
    Ensuite tu peux utiliser le meme genre de code pour définir la colonne la plus à droite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ColDroite= Range("A1").end(xltoRight).Column
    Ensuite tu utilise LastRow et Coldroite pour définir une plage de donnée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Plage=Range(Cells(1, 2), Cells(LastRow, ColDroite))
    Et le tour est joué

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Par défaut
    Merci beaucoup! Ca marche nickel!

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

Discussions similaires

  1. [XL-2007] Problème dans une macro pour ajouter une date
    Par INFINITY100 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/05/2015, 20h28
  2. [XL-2010] Problème avec une macro Excel pour fermer un classeur
    Par benadry dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/10/2013, 15h48
  3. problème sur une macro pour une conversion en VB6.3
    Par Zoldick dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/06/2008, 14h41
  4. [VBA] Excell : demande d'aide pour une macro
    Par Fealendril dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/01/2006, 16h28
  5. problème pour une calculatrice
    Par Anthobask dans le forum C
    Réponses: 4
    Dernier message: 19/12/2005, 21h11

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