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 avec les séries d'un graphique


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Par défaut Problème avec les séries d'un graphique
    Bonjour à tous, je bute depuis un certain temps sur ce problème... Lors de l'exécution du code suivant, je reçois le message d'erreur 1004 "Impossible de définir la propriété Values de la classe Series" alors que dans le débogueur l'objet MonGraphe comporte bien la dite propriété dans le sous objet series.
    Je tiens à préciser que le graphe en question (nuage de points) comporte déjà 5 séries (d'index 1 à 5) dont je veux modifier les valeurs.
    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
    Dim MonGraphe As Chart, MaSerie As Series, MaFeuille As Worksheet
    
    Set MaFeuille = ThisWorkbook.Worksheets("CoordNoeuds")
    Set MonGraphe = ThisWorkbook.Charts("ForceTemps")
    LigneArrivee = 1
    For CompteurSeries = 1 To 5
        LigneDepart = LigneArrivee + 1
        LigneArrivee = CompteurSeries * (LigneNouveau \ 5)
        Set MaSerie = MonGraphe.SeriesCollection(CompteurSeries)
        With MaSerie
             .Values = "=" & MaFeuille.Range(Cells(LigneDepart, 6), Cells(LigneArrivee, 6)).Address(False, True, xlA1, True)
             .XValues = "=" & MaFeuille.Range(Cells(LigneDepart, 5), Cells(LigneArrivee, 5)).Address(False, True, xlA1, True)
             .Name = "=" & CStr(Round(MaFeuille.Cells(LigneDepart, 7).Value)) & " - " & _
            CStr(Round(MaFeuille.Cells(LigneArrivee, 7).Value))
        End With
    Next CompteurSeries
    Merci d'avance pour votre aide

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Dans cette ligne, tu mets true.
    .Values = "=" & MaFeuille.Range(Cells(LigneDepart, 6), Cells(LigneArrivee, 6)).Address(False, True, xlA1, True)
    Quand à xlA1, c'est le paramètre pas défaut.
    Enfin, pour Address, essaie plutôt cette syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Address(RowAbsolute:=False, ColumnAbsolute:=False, ... etc)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Par défaut
    Merci pour ta réponse, mais le problème ne change pas avec la modification que tu proposes.

    J'ai remarqué aussi que si je rajoute la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ThisWorkbook.Charts("ForceTemps").Activate
        Set MaFeuille = ThisWorkbook.Worksheets("CoordNoeuds")
        Set MonGraphe = ThisWorkbook.Charts("ForceTemps")
    ...
    L'erreur obtenue est :La méthode cells de l'objet _Global a échoué.

    J'ai par ailleurs essayé de remplacer la ligne fautive par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Values = "=CoordNoeuds!F1:F10"
    mais j'ai toujours l'erreur "Impossible de définir la propriété values" etc.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu as essayé avec select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Charts("ForceTemps").Select
    Au moins pour voir s'il y a un changement Mais je ne comprends pas l'erreur que tu indiques avec le code que tu mets. Manque pas un bout ?
    Tu dis

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    PS - Je viens de trouver le code manquant
    A la place de
    Set MaSerie = MonGraphe.SeriesCollection(CompteurSeries)
    With MaSerie
    .Values = "=" & MaFeuille.Range(Cells(LigneDepart, 6) _
    , Cells(LigneArrivee, 6)).Address(False, True, xlA1, True)
    mets plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With MonGraphe
        Set MaSerie = .SeriesCollection(CompteurSeries)
        With MaSerie
             .Values = "=" & MaFeuille.Range(Cells(LigneDepart, 6) _
            , Cells(LigneArrivee, 6)).Address(False, True, xlA1, True)
    '....
    Tu dis

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Par défaut
    Non, hélas, j'ai toujours la même erreur, que ce soit avec le Select ou le With MonGraphe, with MaSerie.
    Quel est le genre de code avant qui pourrait poser problème ? (car il y a du code avant mais je n'ai pas le sentiment que ce dernier puisse avoir une influence sur le code présenté)

  7. #7
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    je n'ai pas testé ta procédure mais quelle est la valeur attribuée à la variable LigneNouveau ?

    de plus le signe "divisé est erroné dans cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LigneArrivee = CompteurSeries * (LigneNouveau \ 5)
    remplace \ par /


    bon week end
    michel

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Par défaut
    non, non il n'y a pas d'erreur avec le signe divisé, il s'agit d'un division euclidienne (i.e. division entière),
    ligne nouveau est un entier qui pour ma phase de test vaut 109.
    Ligne arrivée vaut 21 pour la première itération (et ca plante dès la première itération)
    Je ne pense pas que le problème vienne de là...

  9. #9
    Expert éminent


    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
    Par défaut
    rajoute une varaible chaine afin de voir ce que tu ve mettre dans .value !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ...
    Dim st As string
      Set MaSerie = MonGraphe.SeriesCollection(CompteurSeries)
        With MaSerie 
         st = "=" & MaFeuille.Range(Cells(LigneDepart, 6), Cells(LigneArrivee, 6)).Address(False, True, xlA1, True) 
            Debug.print st 'Affiche variable st dans fenêtre exécution...
            .Values = st
    ensuite dis nous la valeur de st ... ou bien par un copier/coller essai de l'affecter "manuellement" à ton graphe.. voir ce que te dis Excel..;


    PS: SilkyRoad , le signe \ c'est la division entiére en fait
    (LigneNouveau \ 5) = round(LigneNouveau / 5)

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Par défaut
    héhé, je crois que je vais craquer là
    La ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    st = "=" & MaFeuille.Range(Cells(LigneDepart, 6) _
    , Cells(LigneArrivee, 6)).Address(False, True, xlA1, True)
    provoque une erreur : la méthode 'cells' de l'objet '_global' a échoué
    Au passage
    LigneDepart = 2
    LigneArrivee = 21

    En tout cas merci de vos réponses

  11. #11
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    rebonjour

    ok pour Euclide...;o)


    tu peux tester cette adaptation


    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
    Dim MonGraphe As Chart
    Dim MaSerie As Series
    Dim MaFeuille As Worksheet
    Dim PlageX As Range, PlageY As Range
     
    Set MaFeuille = ThisWorkbook.Worksheets("CoordNoeuds")
    Set MonGraphe = ThisWorkbook.Charts("ForceTemps")
    LigneNouveau = 109
    LigneArrivee = 1
     
    For CompteurSeries = 1 To 5
        LigneDepart = LigneArrivee + 1
        LigneArrivee = CompteurSeries * (LigneNouveau \ 5)
     
    Set PlageX = MaFeuille.Range(MaFeuille.Cells(LigneDepart, 5), _
        MaFeuille.Cells(LigneArrivee, 5))
    Set PlageY = MaFeuille.Range(MaFeuille.Cells(LigneDepart, 6), _
        MaFeuille.Cells(LigneArrivee, 6))
     
        Set MaSerie = MonGraphe.SeriesCollection(CompteurSeries)
     
        With MaSerie
             .XValues = PlageX
             .Values = PlageY
             '.Name = "=" & CStr(Round(MaFeuille.Cells(LigneDepart, 7).Value)) & " - " & _
            CStr(Round(MaFeuille.Cells(LigneArrivee, 7).Value))
        End With
    Next CompteurSeries


    bon apres midi
    michel

  12. #12
    Expert éminent


    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
    Par défaut
    je n'ai pas relu le code à SilkyRoad ... qui à premiére vu doit résoudre ton probléme.. car par tout ou il utilise l'objet Cells.. celui-ci est prefixé de MaFeuille.. sans rien.. excel/Vba utilise la feuille en cours et ci celle-ci est un graphique... il n'y as pas d'objet cells..
    tu aurai pu aussi essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    st = "=" & MAfeuille.Range("F" & LigneDepart & ":F" & LigneArrivee) _
    .Address(False, True, xlA1, True)

  13. #13
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Par défaut
    YAYOUUUUUUUUUH

    C'est bon ca marche d'enfer comme ca, il fallait pas mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .Values = "=" & MaFeuille.Range(Cells(LigneDepart, 6) _
    , Cells(LigneArrivee, 6)).Address(False, True, xlA1, True)
    Mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set PlageX = MaFeuille.Range(MaFeuille.Cells(LigneDepart, 5), _
        MaFeuille.Cells(LigneArrivee, 5))
    '...
    .XValues = PlageX
    Merci à tous, et maintenant je vais enfin pouvoir partir en Week end

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

Discussions similaires

  1. [CR 2011] de gros problèmes avec les graphiques
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 09/07/2012, 15h40
  2. [Lazarus] Problème avec les caractères graphiques alternatifs
    Par ChPr dans le forum Lazarus
    Réponses: 2
    Dernier message: 16/06/2011, 10h14
  3. problème avec les composant graphique de gwt-ext
    Par ensienne2008 dans le forum GWT et Vaadin
    Réponses: 9
    Dernier message: 16/09/2008, 09h32
  4. Réponses: 15
    Dernier message: 20/12/2006, 16h56
  5. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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