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 :

Classeurs et Macro Graphique


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 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut Classeurs et Macro Graphique
    Bonjour, voilà le problème :

    J'ai créé une macro créant un graphique. Je l'ai enregistrée dans un classeur personnel "perso.xls". (accessible depuis n'importe quel classeur)

    A partir d'un autre classeur, je lance la macro, et obtiens l'erreur "l'indice n'appartient pas à la sélection". Et dans le code ça bloque là :

    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
    Sub TestGraphique2()
    '
    ' TestGraphique2 Macro
    ' Macro enregistrée le 24/06/2009 par Tomtom
    '
    
    '
        ActiveWindow.ScrollRow = 31
        ActiveWindow.ScrollRow = 92
        (...) (il y en a beaucoup)
        ActiveWindow.ScrollRow = 17174
        ActiveWindow.ScrollRow = 17205
        ActiveWindow.ScrollRow = 17235
        Range("W3:W17268").Select
        Range("W17268").Activate
        Charts.Add
        ActiveChart.ChartType = xlLine
        ActiveChart.SetSourceData Source:=Sheets("voie_0_").Range( _
            "W3:W17268"), PlotBy:=xlColumns
    Sachant que le classeur initial où j'ai créé la macro s'appelle "voie_0_" et que je lance cette macro depuis un autre classeur.

    Pour exécuter la macro dans un classeur "B", il faut que les données soient prises dans ce même classeur "B" et non pas dans le classeur initial "A" où a été définie la macro.

    Comment faut-il modifier ça ?
    Je vous remercie.
    Tom

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour à tous,

    Essai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks("nomduclasseur").worksheets("voie_0_").Range( _
            "W3:W17268"), PlotBy:=xlColumns

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    Dans mon code initial, si je remplace à la main "voie_0_" par le nom du classeur dans lequel je souhaite utiliser ma macro, ça marche. Mais je souhaite utiliser cette macro pour d'autres classeurs (beaucoup).

    Je viens d'essayer ton code aalex_38 et ça ne marche pas : même indication d'erreur au même endroit.



    D'autres idées ?
    Tom

  4. #4
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Je viens d'essayer ton code aalex_38 et ça ne marche pas : même indication d'erreur au même endroit.
    J'ai pourtant un code similaire qui fonctionne (je met que le code utile):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    With Workbooks("Classeur2").Worksheets(1)
        Dim MyCell As Range
        Set MyCell = .Cells(.Range("A65536").End(xlUp).Row, 1)
    '...
    end with
     
    Set MyG = Charts.Add(After:=ThisWorkbook.Sheets(Sheets.Count))
     
    With MyG
        .Name = MyChartName
        .ChartType = xl3DColumnClustered
        .SetSourceData Source:=MyCell, PlotBy:=xlColumns
    '...
    end with

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    Aalex_38, je vais essayer de préciser.
    Dans mon classeur A, je crée une macro générant un graphique utilisant les données de la seule feuille du classeur A. Le code créé est :

    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
    Sub TestGraphique3()
    '
    ' TestGraphique3 Macro
    ' Macro enregistrée le 25/06/2009 par Tomtom
    '
    
    '
        ActiveWindow.ScrollRow = 3969
        ActiveWindow.ScrollRow = 4211
        ActiveWindow.ScrollRow = 4453
        ActiveWindow.ScrollRow = 4847
        ActiveWindow.ScrollRow = 5362
        ActiveWindow.ScrollRow = 6119
        ActiveWindow.ScrollRow = 7058
        ActiveWindow.ScrollRow = 8088
        ActiveWindow.ScrollRow = 9330
        ActiveWindow.ScrollRow = 10450
        ActiveWindow.ScrollRow = 11571
        ActiveWindow.ScrollRow = 12631
        ActiveWindow.ScrollRow = 13540
        ActiveWindow.ScrollRow = 14479
        ActiveWindow.ScrollRow = 15115
        ActiveWindow.ScrollRow = 15660
        ActiveWindow.ScrollRow = 16145
        ActiveWindow.ScrollRow = 16599
        ActiveWindow.ScrollRow = 16962
        ActiveWindow.ScrollRow = 17235
        ActiveWindow.ScrollRow = 3938
        ActiveWindow.ScrollRow = 17235
        ActiveWindow.ScrollColumn = 20
        ActiveWindow.ScrollColumn = 19
        ActiveWindow.ScrollColumn = 18
        ActiveWindow.ScrollColumn = 17
        ActiveWindow.ScrollColumn = 18
        Range("W3:W17268").Select
        Range("W17268").Activate
        Charts.Add
        ActiveChart.ChartType = xlXYScatterLinesNoMarkers
        ActiveChart.SetSourceData Source:=Sheets("A").Range( _
            "W3:W17268"), PlotBy:=xlColumns
        ActiveChart.SeriesCollection(1).XValues = "=A"
        ActiveChart.SeriesCollection(1).Name = "=""Youpi"""
        ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="genial"
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = "Youpi"
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "yeah"
            .Axes(xlValue, xlPrimary).HasTitle = False
        End With
    End Sub
    Le code est donc relatif à la feuille de mon classeur appelé A.

    Je souhaite ensuite appliquer cette macro dans un autre classeur B. Ca ne marche pas, et ça bloque à l'endroit où la macro essaie d'atteindre les données du classeur A (normal), ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveChart.SetSourceData Source:=Sheets("A").Range( _
            "W3:W17268"), PlotBy:=xlColumns
    Le principe d'une macro c'est que ça soit réutilisable dans d'autres classeurs : le code ne doit pas dépendre du classeur où la macro a été créée, non ?

    Pour répondre à ton dernier message, oui, si je change à la main le "A" en "B" et que je lance la macro dans le classeur B çà fonctionne, il n'y a pas besoin de préciser le workbook (classeur ?).

    Pour indication, d'autres macros classiques fonctionnent (où je fais juste des calculs).

    Ou bien serait-ce un problème de rangement de classeurs et de feuilles ?

    Cela éclaire-t-il ?
    Tom

  6. #6
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour,


    Dans l'exemple que je t'ai donné, le graphique n'est pas créer dans le classeur 2 mais depuis un autre classeur.

    Ca ne marche pas, et ça bloque à l'endroit où la macro essaie d'atteindre les données du classeur A
    Ton classeur A est-il ouvert au moment ou te lance la macro, sinon ça ne fonctionne pas, il faut l'ouvrir avant de l'utiliser.

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

Discussions similaires

  1. [XL-2003] Copie de classeur sans macro
    Par Enthau dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 03/07/2009, 10h41
  2. Macro Graphique Dynamique
    Par FreddyNB dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/11/2007, 21h49
  3. Masquer le classeur des macros personnelles
    Par mattjol dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/04/2007, 09h26
  4. [VBA-E] Empécher l'ouverture ou fermer les classeur de macros personnalisé
    Par LitteulKevin dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/03/2007, 20h37
  5. Excel, macro, graphique
    Par djibril dans le forum Modules
    Réponses: 8
    Dernier message: 05/05/2006, 21h18

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