[Catégorie modifiée VB6 --> VBA] Copier valeur d'une étiquette données dans cell

CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 - 20 juin 2010 à 21:15
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 - 21 juin 2010 à 11:27
Bonjour à tous,

Depuis un graphique (Excel2003), je cherche à construire une macro pour récupérer les valeurs dans l'étiquette de données d'une courbe de tendance, et les coller dans une cellule de ma feuille (pour pouvoir les exploiter par macro ensuite).

J'ai essayé par l'éditeur de macro et cherché sur Forums, mais hélas sans résultat...
Sub Macro1()

    ActiveSheet.ChartObjects("Graphique 11").Activate
    ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Select
    ActiveWindow.Visible = False
    Windows("ISO 14520.xls").Activate
    Range("P31").Select
    
    'C'est ici que ça plante !
    '*************************
    ActiveSheet.Paste
    
End Sub

Quelqu'un aurait-il une idée ?

Merci d'avance !


Rataxes64

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 juin 2010 à 00:53
Salut
Si ça plante, dis nous quelle erreur.
Si tu utilises Paste, il faut d'abord avoir fait un Copy, par exemple avec un Selection.Copy (à tester)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
21 juin 2010 à 01:05
Salut Jack,
Tout à fait d'accord...
Mais un Selection.Copy sur ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Select, ça ne le fait pas...!
Je cherche avec ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.TEXT, mais je galère...
Surtout que pour tout changement de valeur, il faut "effacer" la courbe de tendance, la "rappeler" et retraiter graphiquement l'étiquette!

Si quelqu'un pouvait me donner une piste pour un script (en VBA) qui pourrait extraire directement les facteurs n et R², dès la modification d'un point, ce serait super!
Ce sont uniquement ces valeur qui m'intéressent, et je fais un graphique uniquement pour les récupérer : une grosse perte de temps, mais on fait avec ses moyens...

Merci de la réponse



Rataxes64
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
21 juin 2010 à 01:33
Oups!
Merci d'avoir basulé en VBA, j'avais pas fait gaffe...

pour mon problème, j'ai fait ça: C'est pas beau mais ça marche.
Je reste preneur pour toute idée qui pourrait éviter de passer par le graphique
Sub Macro1()
Application.DisplayAlerts = False
Dim Data1 As String, Data2 As String

ActiveSheet.ChartObjects("Graphique 11").Activate
ActiveChart.SeriesCollection(1).Trendlines(1).Select
Selection.Delete
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=xlPower, Forward:=0, _
    Backward:=0, _
    DisplayEquation:=True, _
    DisplayRSquared:=True).Select
Data1 = ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Text
Sheets("Data").Range("W31").Value = Data1
Range("W31").Select
With Selection
    .HorizontalAlignment = xlGeneral
    .VerticalAlignment = xlBottom
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
End With
Selection.TextToColumns _
    Destination:=Range("X31"), _
    DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, _
    Tab:=False, _
    Semicolon:=False, _
    Comma:=False, _
    Space:=False, _
    Other:=True, _
    OtherChar:="x", _
    FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), _
    TrailingMinusNumbers:=True
Range("Y31").Select
Selection.Copy
Range("P31").Select
Selection.PasteSpecial _
    Paste:=xlPasteValues, _
    Operation:=xlNone, _
    SkipBlanks:=False, _
    Transpose:=False
Application.CutCopyMode = False
ActiveSheet.ChartObjects("Graphique 11").Activate
    ActiveChart.ChartArea.Select
    ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Select
    Selection.Delete


Merci
Rataxes64
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 juin 2010 à 09:48
Tu veux récupérer l'équation de la courbe de tendance.
J'ai fait l'essai avec ce code ressemblant au tien (*) et ça fonctionne correctement.
(*) enregistrement macro
    ActiveSheet.ChartObjects("Graphique 1").Activate
    ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Select
    ActiveWindow.Visible = False
    Windows("Classeur1").Activate
    Range("D7").Select
    ActiveSheet.Paste

Bizare
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
21 juin 2010 à 11:27
Non Jack, je veux seulement récupérer les facteurs n et R² de l'équation...
Pourtant, c'est exact, le code qui remonte de "l'enregistrement macro" semble correct, mais fais l'expérience suivante :
Après avoir lancé ton code et que le "Paste" ait fonctionné, refait un copié-collé de n'importe quelle cellule pour ré-initialiser le Clipboard, puis relance la macro...

Et là surprise... "Paste" plante (en fait le Clipborard est vide et il n'y a donc plus rien à "Paster"!)

La seule solution (que j'ai trouvée), c'est de passer par un appel TEXT :
Dim Data as String
Data = ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Text
Sheets("Data").Range("W31").Value = Data


Autre problème:
Si une des valeurs de la courbe est modifiée, la nouvelle courbe de tendance ne se recalcule PAS (je ne sais pas pourquoi)...
Pour m'en sortir, je rajoute en tête du script les instructions pour d'abord l'effacer (ainsi que l'étiquette) puis ensuite la reconstruire et régénérer la "nouvelle" étiquette pour en reprendre les nouvelles valeurs n et R².

C'est lourd, mais je n'ai pas trouvé mieux!

Evidemment la "bonne" solution serait de calculer DIRECTEMENT la courbe de tendance et extraire les facteurs n et R², mais je ne connais pas la série d'équations nécessaires pour y parvenir, ni comment les "monter" dans le script d'une macro...
Ah, si un "matheux" pouvaint passer par là... J'essaie sur des forums de math, mais actuellement je reste sans réponse.
Bien sûr si j'ai, je posterai.

Merci en tout cas de m'avoir répondu.

Rataxes64
0
Rejoignez-nous