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 une série de données variable avec connexion externe [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable Middle Office
    Inscrit en
    Février 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Middle Office
    Secteur : Finance

    Informations forums :
    Inscription : Février 2024
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Problème avec une série de données variable avec connexion externe
    Hello @tous,

    Après avoir été un lecteur assidu du forum pour des questions diverses, c'est à mon tour de venir chercher de l'aide, après avoir fait choux blanc dans ma recherche de problèmes similaires !

    Le problème est probablement très bête à résoudre, mais à force de me casser les dents dessus... HELP !

    Pour des raisons de confidentialité je ne peux pas partager le classeur (qui comprend beaucoup de feuilles et plusieurs dizaines de milliers de lignes de code!), et le rendre anonyme me prendrait plus de temps que de décrire mon problème.


    En pratique : j'ai un graphique (courbe) dont la série de données a une ligne de départ variable (en fonction de la date).
    Le graphique est affiché dans une feuille nommée 'PTF_XXX', et les données proviennent d'une feuille nommée 'Temp_Data_H_3'.

    Voici le début du code :

    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
     
     
    Sub MàJGraphPTFVAL(wsPTF As Excel.Worksheet, FeuilleDataHisto As Excel.Worksheet, iLigneMaxUpdate, iNumFonds, DateRef)
     
    Dim MPerf As ChartObject, YPerf As ChartObject, HPerf As ChartObject, GAlpha2 As ChartObject, _
        ligM%, _
        iSeries As Series, YRangeSérie1 As Range, YRangeSérie2 As Range, YRangeSérie3 As Range, XRangeAbs As Range, NSerName1 As Range, NSerName2 As Range, NSerName3 As Range, sFormuleSerie, _
        iStartM, iStartY, iStartH, _
        sSeries$
     
    Set MPerf = wsPTF.ChartObjects("MPerf")
    Set YPerf = wsPTF.ChartObjects("YPerf")
    Set HPerf = wsPTF.ChartObjects("HPerf")
     
    iStartM = Application.WorksheetFunction.XLookup(CLng(MtD(CDate(DateRef))), FeuilleDataHisto.[A:A], FeuilleDataHisto.[A:A], 0)
    If Not iStartM = 0 Then iStartM = Application.WorksheetFunction.Match(CLng(iStartM), FeuilleDataHisto.[A:A], 0) + 1
    iStartY = Application.WorksheetFunction.XLookup(CLng(YtD(CDate(DateRef))), FeuilleDataHisto.[A:A], FeuilleDataHisto.[A:A], 0)
    If Not iStartY = 0 Then iStartY = Application.WorksheetFunction.Match(CLng(iStartY), FeuilleDataHisto.[A:A], 0) + 1
    iStartH = 4
     
    If Not iStartM = 0 Then
     
        'Chart perf Monthly
        With FeuilleDataHisto
            sSeries = "$A$" & iStartM & ":$A$" & iLigneMaxUpdate
            Set XRangeAbs = .Range(sSeries)
            sSeries = "$X$" & iStartM & ":$X$" & iLigneMaxUpdate
            Set YRangeSérie1 = .Range(sSeries)
            Set NSerName1 = .Range("X3")
        End With
     
        Set iSeries = MPerf.Chart.SeriesCollection(Index:=1)
        sFormuleSerie = "=SERIE(" & _
        NSerName1.Address(, , , True) & ";" & _
        XRangeAbs.Address(, , , True) & ";" & _
        YRangeSérie1.Address(, , , True) & ";1)"
        iSeries.FormulaLocal = sFormuleSerie
     
    End If
    L'espion me montre que la valeur String de la série est correctement renvoyée (exemple de la valeur retoutrnée : "=SERIE('[DAM PTF v2.7.4.2 (DEV)-3-b.xlsb]Temp_Data_H_3'!$X$3;'[DAM PTF v2.7.4.2 (DEV)-3-b.xlsb]Temp_Data_H_3'!$A$652:$A$671;'[DAM PTF v2.7.4.2 (DEV)-3-b.xlsb]Temp_Data_H_3'!$X$652:$X$671;1)"
    EN REVANCHE, et c'est là que le bât blesse, l'espion me montre que la valeur du paramètre FormulaLocal change la feuille Temp_Data_H_3 par une autre (celle de ma feuille de paramétrage) ! Voici la valeur du paramètre formulalocal de l'objet iSeries : "=SERIE(PARAM!$X$3;PARAM!$A$652:$A$671;PARAM!$X$652:$X$671;1)"

    Par contre, si je remplace la string variable par une string fixe, aucun souci, le graph est bien mappé à la bonne feuille.

    je suppose qu'il s'agit d'un format de variable mais lequel et pourquoi..? ça m'échappe totalement

    J'en appelle donc à vos lumières et à vot' bon coeur :')

    la bise

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 185
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 185
    Points : 1 740
    Points
    1 740
    Par défaut
    Salut,

    Je n'ai jamais manipulé les charts, mais voici les formules que j'ai obtenu avec deux test simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    =SERIES(;Feuil1!$A$2:$A$5,Feuil1!$B$2:$B$5;1)
    =SERIE("NomSerie";Feuil1!$A$2:$A$5;Feuil1!$B$2:$B$5;1)
    En gros, il y a un paramètre optionnel en début de formule: Le nom de la série, qui si précisé, sera affiché dans ton graph.

    A tester ...

    PS:
    Ta formule étant particulièrement pénible à lire, as-tu vraiment besoin de préciser le classeur dans l'équation ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Responsable Middle Office
    Inscrit en
    Février 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Middle Office
    Secteur : Finance

    Informations forums :
    Inscription : Février 2024
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Hello,
    merci pour ta réponse


    Citation Envoyé par deedolith Voir le message
    Salut,

    Je n'ai jamais manipulé les charts, mais voici les formules que j'ai obtenu avec deux test simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    =SERIES(;Feuil1!$A$2:$A$5,Feuil1!$B$2:$B$5;1)
    =SERIE("NomSerie";Feuil1!$A$2:$A$5;Feuil1!$B$2:$B$5;1)
    En gros, il y a un paramètre optionnel en début de formule: Le nom de la série, qui si précisé, sera affiché dans ton graph.

    A tester ...

    PS:
    Ta formule étant particulièrement pénible à lire, as-tu vraiment besoin de préciser le classeur dans l'équation ?
    Oui le premier argument de la formule est effectivement le nom de la série qui est en l'occurrence renvoyé par la valeur d'une cellule
    Enfin, ici, le paramètre 'true' concerne les références externes (dans une autre feuille de calcul), l'espion renvoie donc normalement toute la référence, ce n'est pas de mon fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NSerName1.Address(, , , True)

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 185
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 185
    Points : 1 740
    Points
    1 740
    Par défaut
    En d'autres termes:

    Ne peux-tu pas construire ta formule autrement ?

  5. #5
    Candidat au Club
    Homme Profil pro
    Responsable Middle Office
    Inscrit en
    Février 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Middle Office
    Secteur : Finance

    Informations forums :
    Inscription : Février 2024
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Up svp, toujours pas résolu

  6. #6
    Candidat au Club
    Homme Profil pro
    Responsable Middle Office
    Inscrit en
    Février 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Middle Office
    Secteur : Finance

    Informations forums :
    Inscription : Février 2024
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Help?.. Je me casse les dents sur ce point précis depuis un bon moment maintenant !

  7. #7
    Membre averti Avatar de Nain porte koi
    Homme Profil pro
    a
    Inscrit en
    Novembre 2023
    Messages
    259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : a

    Informations forums :
    Inscription : Novembre 2023
    Messages : 259
    Points : 347
    Points
    347
    Par défaut
    Hello,

    question : la FormulaLocal est obligatoire (puisqu'il semblerait que ce soit lui qui fasse des changement) ?
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  8. #8
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Points : 1 156
    Points
    1 156
    Par défaut
    Bonjour,

    chez moi, le classeur ci-dessous fonctionne bien. Et chez toi ?

    Si ça marche aussi c'est qu'il y a dans ton "classeur complet" quelque chose qui fait que...
    Si ça ne marche pas c'est que ça se passe plutôt au niveau de ton poste ou de ton install + paramétrage Excel

    DAM PTF V2.xlsm

    PS : j'ai bien testé en xlsb, mais j'ai du passer en xlsm pour que le forum accepte la PJ.

  9. #9
    Candidat au Club
    Homme Profil pro
    Responsable Middle Office
    Inscrit en
    Février 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Middle Office
    Secteur : Finance

    Informations forums :
    Inscription : Février 2024
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Nain porte koi Voir le message
    Hello,

    question : la FormulaLocal est obligatoire (puisqu'il semblerait que ce soit lui qui fasse des changement) ?
    Hello, merci ! La propriété est correctement passée pourtant (vérifié avec l'espion)

  10. #10
    Candidat au Club
    Homme Profil pro
    Responsable Middle Office
    Inscrit en
    Février 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Middle Office
    Secteur : Finance

    Informations forums :
    Inscription : Février 2024
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Tête de chat Voir le message
    Bonjour,

    chez moi, le classeur ci-dessous fonctionne bien. Et chez toi ?

    Si ça marche aussi c'est qu'il y a dans ton "classeur complet" quelque chose qui fait que...
    Si ça ne marche pas c'est que ça se passe plutôt au niveau de ton poste ou de ton install + paramétrage Excel

    DAM PTF V2.xlsm

    PS : j'ai bien testé en xlsb, mais j'ai du passer en xlsm pour que le forum accepte la PJ.
    Merci beaucoup pour ton temps, j'avoue que je ne vois pas de différence
    En gros le problème est que le paramètre 'formulalocal' change tout seul la référence de la feuille tout en gardant le bon range pour les colonnes de données, alors que la formule string contient la bonne référence avdc la bonne syntaxe

  11. #11
    Candidat au Club
    Homme Profil pro
    Responsable Middle Office
    Inscrit en
    Février 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Middle Office
    Secteur : Finance

    Informations forums :
    Inscription : Février 2024
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Résolu en plaçant une instruction activate pointant sur le workbook source avant d'update les graphs, je dois renvoyer une mauvaise référence de classeur à un moment !

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 185
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 185
    Points : 1 740
    Points
    1 740
    Par défaut
    Ou plutôt, tu as des références implicites.

    De qui parle t'on ici ?
    Range("A1").Value
    Réponse: On ne sais pas, ça dépend du contexte (références implicites).

    Par contre:
    ThisWorkbook.Worksheets("Feuil"1").Range("A1").Value
    On sais précisement de qui on parle, sans confusion possible (références explicites).

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

Discussions similaires

  1. Problemes avec une fonction a parametres variables
    Par karim&thomas dans le forum C++
    Réponses: 3
    Dernier message: 15/05/2008, 12h43
  2. Créer une chaine de taille variable avec des blancs
    Par jojodu31 dans le forum Général Java
    Réponses: 5
    Dernier message: 15/04/2008, 17h38
  3. conection avec une base de donne
    Par adel.87 dans le forum NetBeans
    Réponses: 1
    Dernier message: 07/01/2008, 08h57
  4. Créer un graph avec une plage de donnée variable
    Par nono le golfeur dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/06/2007, 17h15
  5. Probleme de connexion JDBC avec une base de donne mysql
    Par sultan_kafila dans le forum JDBC
    Réponses: 19
    Dernier message: 12/04/2006, 08h25

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