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 :

Mise à jour à "distance" d'un chart


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut Mise à jour à "distance" d'un chart
    Bonjour
    Dans un classeur, une feuille appelée "PLANCHE" porte 2 charts vides que j'ai positionné à la souris et aussi formaté comme par exemple le quadrillage etc selon ce que me donne excel pour le faire.

    Je souhaiterais leurs faire tracer les 45 premières lignes d'une colonne identique pour chaque feuilles du classeur qu'il m'est possible de sélectionner une à une selon le besoin.

    J'ai bien la variable qui permet d'adresser la feuille dans laquelle sont les données à tracer, mais je ne sais pas comment dialoguer avec un chart tracé "à la main"...

    Avec vous une idée?
    Merci

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Malouxa,

    Pour te mettre sur la voie. Dans une feuille de calcul, un graphique est contenu dans un objet ChartObject.

    Voici un petit code qui te donnera des idées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub EnumGraph()
    Dim oGraph As Excel.ChartObject, oSh As Excel.Worksheet
     
    Set oSh = Application.ThisWorkbook.WorkSheets("PLANCHE")
    For Each oGraph In oSh.ChartObjects
        MsgBox " Container : " & oGraph.Name & "; contenu : " & oGraph.Chart.Name
    Next oGraph
     
    End Sub
    Fais le tourner dans ton appli.

    PGZ

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    Merci, je regarde ce qu'on peut "piloter" avec ces objets

    Voici un essai de mise à jour d'un graphique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub EnumGraph()
    Dim oGraph As Excel.ChartObject, oSh As Excel.Worksheet
     
    Set oSh = Application.ThisWorkbook.Worksheets("PLANCHE")
     
    oSh.ChartObjects(2).Activate
    ActiveChart.SeriesCollection.Add Source:=Worksheets("DATA").Range("V1:V45")
     
        ActiveSheet.ChartObjects("Graphique 2").Activate
        ActiveChart.PlotArea.Select
        ActiveChart.SeriesCollection(1).Delete
     
    End Sub
    Avez vous une astuce pour que la courbe qui remplace la précédente reprenne ses caractéristiques comme la couleur etc?

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Malouxa,

    Au lieu d'effacer la série, remplace ses valeurs, par ex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oSh.ChartObject(2).SeriesCollection(1).Values = Worksheets("MaFeuille").Range("A5:A13")
    Par ailleurs, tu n'as pas besoin d'activer le graphique.

    PGZ

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    C'est nikel ! et ça allège le code
    Merci encore pour l'aide

    Voilà j'ai appliqué la simplification mais il se produit une erreur à l'initialisation de la macro là où j'ai surligné
    "Membre de méthode ou de données introuvable"

    ça semble bon pourtant

    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 exportDataToGRAPHE(LectureTab)
    Application.ScreenUpdating = False
    Dim oGraph As Excel.ChartObject, oSh As Excel.Worksheet
     
    Set oSh = Application.ThisWorkbook.Worksheets("PLANCHE")
    'oSh.ChartObjects(2).Activate
    
    'préparation de la synchro data à celles de la prédiction à J+2
    'copie des colonnes de l'ensemble des cours
    Worksheets(LectureTab & "C").Activate
    Range("L:L,O:R,T:T,V:V,Z:Z,AB:AB").Select
    Selection.Copy
    
    Sheets("INPUT").Select
    Columns("A:G").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        
        Rows("1:1").Select
        Selection.Insert Shift:=xlDown
        Selection.Insert Shift:=xlDown
    
    '100compo data
    oSh.ChartObject(2).SeriesCollection(1).Values = Worksheets("INPUT").Range("G1:G45")
    'Vsurface data
    'oSh.ChartObjects(2).Activate
    'ActiveChart.SeriesCollection.Add Source:=Worksheets("INPUT").Range("V1:V45")
    
    'suppression des courbes antérieures
    ActiveSheet.ChartObjects("Graphique 2").Activate
    ActiveChart.PlotArea.Select
    ActiveChart.SeriesCollection(1).Delete
    
    Worksheets("PLANCHE").Activate
    
    End Sub
    Edit
    oSh.ChartObject(2) il manque un S à object, j'ai copié ta ligne du dessus, cependant ça donne une autre erreur "propriété ou méthode non géré par cet objet"

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Je ne vois pas ce que tu as surligné.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    Citation Envoyé par pgz Voir le message
    Je ne vois pas ce que tu as surligné.
    Dans le code inséré dans mon message du dessus, il faut user de l'ascenceur.
    La ligne en dessous "'100compo data"

  8. #8
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Malouxa,

    ChartObject est le container. Essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oSh.ChartObject(2).Chart.SeriesCollection(1).Values
    PGZ

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    Citation Envoyé par pgz Voir le message
    Malouxa,

    ChartObject est le container. Essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oSh.ChartObject(2).Chart.SeriesCollection(1).Values
    PGZ
    Salut, je me suis repenché sur l'affaire !
    Y a que comme ça que ça a pu tracer les courbes
    La solution que tu as transmis cause une erreur, finalement j'active une fois le graphe.

    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
    Application.ScreenUpdating = False
    Dim oGraph As Excel.ChartObject, oSh As Excel.Worksheet
     
    Set oSh = Application.ThisWorkbook.Worksheets("PLANCHE")
    'oSh.ChartObjects(2).Activate
     
    '**************
    '*** TRACÉS ****
    '**************
     
    oSh.ChartObjects(2).Activate
    ActiveChart.SeriesCollection(5).Values = "=INPUT!R1C1:R45C1"
     
    ActiveChart.SeriesCollection(6).Values = "=INPUT!R1C8:R45C8"
    ActiveChart.SeriesCollection(7).Values = "=INPUT!R1C9:R45C9"
     
    ActiveChart.SeriesCollection(1).Values = "=INPUT!R1C6:R45C6"
     
    ActiveChart.SeriesCollection(2).Values = "=INPUT!R1C7:R45C7"
     
    ActiveChart.SeriesCollection(3).Values = "=INPUT!R1C10:R45C10"
     
    ActiveChart.SeriesCollection(4).Values = "=INPUT!R1C11:R45C11"

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/03/2013, 16h30
  2. Connexion à distance impossible après mise à jour
    Par Invité dans le forum Windows XP
    Réponses: 3
    Dernier message: 31/10/2010, 21h18
  3. mise à jour à distance d'un sous formulaire
    Par Marie_2116 dans le forum VBA Access
    Réponses: 9
    Dernier message: 17/08/2007, 15h51

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