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

Excel Discussion :

Macro pour sélection de plage de données


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut Macro pour sélection de plage de données
    Bonjour à tous,

    Je débute en macro, je suis donc un peu perdu.

    Je vous expose mon problème, j'ai un tableau de donné avec 92 lignes et 84 colonnes, chaque ligne représente un essai.
    Je souhaite tracer un graphique pour chaque essai, à savoir, mes x et mes y sont sur la même ligne. Je veux tracer un graphique pour chaque ligne.

    pour ce faire, j'ai donc choisi de faire une macro, j'ai utiliser l'enregistrement et ensuite je cherche à la modifier afin de l'automatiser, en utilisant une boucle.

    Voici ce que j'ai fait :

    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
    Sub MacroV()
    '
    ' MacroV Macro
    ' Macro enregistrée le 21/05/2014 par vincent.trombetta
    '
    ' Touche de raccourci du clavier: Ctrl+a
    '
        Charts.Add
        ActiveChart.ChartType = xlXYScatter
        ActiveChart.SetSourceData Source:=Sheets("COM_maxi_geophones_en_mms_VLT_1"). _
            Range("D98")
     
     Dim a As Integer
     
     
     
        For a = 1 To 92
     
        ActiveChart.SeriesCollection.NewSeries
     
        ActiveChart.SeriesCollection(a).XValues = _
            "=COM_maxi_geophones_en_mms_VLT_1!RaC5:RaC28"
     
        ActiveChart.SeriesCollection(a).Values = _
            "=COM_maxi_geophones_en_mms_VLT_1!RaC29:RaC52"
     
        Next a
     
    ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Graph3"
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = "onde V"
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "distance (m)"
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "amplitude (mm/s)"
        End With
    End Sub
    C'est au niveau de la boucle For que ça bloque, je pense que s'est du à " RaC5:RaC28 ", il faut peut-être une écriture particulière ?

    Je vous remercie par avance pour votre aide.

    Respectueusement

    Vincent

  2. #2
    Membre expérimenté Avatar de lucasgaetan
    Homme Profil pro
    dessinateur BE
    Inscrit en
    Août 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 175
    Par défaut
    Salut Vincent T.
    essais ça voir
    For a = 1 To 92

    ActiveChart.SeriesCollection.NewSeries

    ActiveChart.SeriesCollection(a).XValues = _
    "=COM_maxi_geophones_en_mms_VLT_1!R" & a & "C5:R" & a & "C28"

    ActiveChart.SeriesCollection(a).Values = _
    "=COM_maxi_geophones_en_mms_VLT_1!R" & a & "C29:R" & a & "C52"

    Next a
    a+

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Merci beaucoup lucasgaetan ça marche parfaitement

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Re-bonjour,

    Nouveaux soucis, pour mon tableau de données, je souhaite désormais sélectionner 3 zone différentes afin de faire 3 graph sur 3 page différentes.

    Pour cela j' ai fait ça :

    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    Sub graph3()
    '
    ' graph3 Macro
    ' Macro enregistrée le 21/05/2014 par vincent.trombetta
    '
     
    '
        Charts.Add
        ActiveChart.ChartType = xlXYScatterSmooth
        ActiveChart.SetSourceData Source:=Sheets("COM_maxi_geophones_en_mms_VLT_1"). _
            Range("E95")
     
     
        Dim a As Integer
     
     
     
        For a = 1 To 50
     
        ActiveChart.SeriesCollection.NewSeries
     
        ActiveChart.SeriesCollection(a).XValues = _
            "=COM_maxi_geophones_en_mms_VLT_1!R" & a & "C5:R" & a & "C28"
        ActiveChart.SeriesCollection(a).Values = _
            "=COM_maxi_geophones_en_mms_VLT_1!R" & a & "C29:R" & a & "C52"
     
        Next a
     
        ActiveChart.Location Where:=xlLocationAsNewSheet
     
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = "onde V mb"
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "distance (m)"
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "amplitude (mm/s)"
        End With
        Sheets("COM_maxi_geophones_en_mms_VLT_1").Select
        Charts.Add
        ActiveChart.ChartType = xlXYScatterSmooth
        ActiveChart.SetSourceData Source:=Sheets("COM_maxi_geophones_en_mms_VLT_1"). _
            Range("E95")
     
     
        Dim b As Integer
     
     
     
        For b = 51 To 71
     
        ActiveChart.SeriesCollection.NewSeries
     
        ActiveChart.SeriesCollection(b).XValues = _
            "=COM_maxi_geophones_en_mms_VLT_1!R" & b & "C5:R" & b & "C28"
        ActiveChart.SeriesCollection(b).Values = _
            "=COM_maxi_geophones_en_mms_VLT_1!R" & b & "C29:R" & b & "C52"
     
             Next b
     
        ActiveChart.Location Where:=xlLocationAsNewSheet
     
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = "onde V mh"
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "distance (m)"
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "amplitude (mm/s)"
        End With
        Sheets("COM_maxi_geophones_en_mms_VLT_1").Select
        Charts.Add
        ActiveChart.ChartType = xlXYScatterSmooth
        ActiveChart.SetSourceData Source:=Sheets("COM_maxi_geophones_en_mms_VLT_1"). _
            Range("E95")
     
     
        Dim c As Integer
     
     
     
        For c = 51 To 71
     
        ActiveChart.SeriesCollection.NewSeries
     
        ActiveChart.SeriesCollection(c).XValues = _
            "=COM_maxi_geophones_en_mms_VLT_1!R" & c & "C5:R" & c & "C28"
        ActiveChart.SeriesCollection(c).Values = _
            "=COM_maxi_geophones_en_mms_VLT_1!R" & c & "C29:R" & c & "C52"
     
            Next c
     
        ActiveChart.Location Where:=xlLocationAsNewSheet
     
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = "onde V vp"
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "distance (m)"
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "amplitude (mm/s)"
        End With
    End Sub

    il passe bien la première boucle , mais bloque à la deuxième , alors que c'est la même

    j'ai le message d'erreur suivant : " erreur d'exécution '1004' "
    "La méthode 'SerieCollection' de l'objet '_chart' a échoué "

    je vous remercie par avance pour votre aide

    Vincent

  5. #5
    Membre expérimenté Avatar de lucasgaetan
    Homme Profil pro
    dessinateur BE
    Inscrit en
    Août 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 175
    Par défaut
    Vinc

    Le problème est que tu demandes dans ton graf 2 de faire référence à la série 51 à 71 "ActiveChart.SeriesCollection(b)"
    alors que juste au dessus tu crées 20 nouvelles séries (pour excel de 1 à 21) du coup il ne trouve pas ta série 51
    dans cet ordre là ça devrait êtres mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim b As Integer
        For b = 1 to 21 ' 51 To 71
            ActiveChart.SeriesCollection.NewSeries
            ActiveChart.SeriesCollection(b).XValues = _
                "=COM_maxi_geophones_en_mms_VLT_1!R" & cstr(b+50) & "C5:R" & b & "C28"
            ActiveChart.SeriesCollection(b).Values = _
                "=COM_maxi_geophones_en_mms_VLT_1!R" & cstr(b+50) & "C29:R" & b & "C52"
        Next b

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Encore un grand merci à toi ça marche parfaitement

    Bonne journée

Discussions similaires

  1. besoin de macro pour traiter ma base de donnée
    Par barbie-9 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/10/2010, 04h10
  2. [XL-2007] Créer une macro pour sélectionner une plage
    Par scoubi10 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/09/2010, 16h41
  3. Problème pour récupérer une plage de données
    Par sincenono dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 17/12/2008, 10h55
  4. Réponses: 1
    Dernier message: 09/03/2007, 07h52

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