Plage variable pour graphique Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
l
louisS
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 2 décembre 2019
Version d'Excel : 16.0.12130.20232

Message par louisS » 2 décembre 2019, 16:28

Bonjour,

Comme dit dans le titre, j'aimerais créer une macro pour mon graphique.

Une partie est déjà faite. Maintenant je crée juste une macro pour que tout se fasse tout seul, j'aurais juste a copié les données voulues et cliquer sur un bouton, la macro s’occupe de tout le reste.

Cependant, mes données ont des lignes variable. J'ai regardé d'autre forum pour faire des plages variables mais impossible de faire fonctionner sur ma macro...

Voici la mienne :

Sub Graph_2lignes()
'
' Graph_2lignes Macro
'

'
Range("A1:C15").Select
Selection.ClearContents
Range("A1").Select
ActiveSheet.Paste
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.PlotArea.Select
ActiveChart.SetSourceData Source:=Range( _
"'Graphiques Simples'!$A$1:$A$2,'Graphiques Simples'!$C$1:$C$2")
Application.Run "Graphiques_V2.xlsm!ETIQUETTES"
Application.Run "Graphiques_V2.xlsm!MEF_Taille_12"
Application.Run "Graphiques_V2.xlsm!Choix_de_la_question_suivante"
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.ChartArea.Copy
End Sub

J'ai surligné les cellules qui doivent être variables
Quelqu'un aurait-il la solution svp ?
Merci
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'313
Appréciations reçues : 144
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 2 décembre 2019, 17:26

Bonjour,
Dans l'hypothèse ou il n'y a que la ligne de fin qui change :
Si ta variables est var, ça devrait te donner quelque chose comme :
"'Graphiques Simples'!$A$1:$A$" & var & ",'Graphiques Simples'!$C$1:$C$" & var)
sinon si les 2 dimensions changent ça va te faire quelque chose comme :
"'Graphiques Simples'!$A$1:" & var1 & ",'Graphiques Simples'!$C$1:" & var2)
(avec var1 et var2) = Addresse des cellules de début et de fin de ligne...
A+
l
louisS
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 2 décembre 2019
Version d'Excel : 16.0.12130.20232

Message par louisS » 2 décembre 2019, 18:03

Merci de ta réponse rapide !

Justement c'est le "(avec var1 et var2) = Addresse des cellules de début et de fin de ligne..." que je ne sais pas coder

Je suis vraiment débutant dans ce domaine mais j'essaye d'apprendre :)

Ca ne te dérange pas de me montrer ce que ca donne au final en ligne de code ?
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'313
Appréciations reçues : 144
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 2 décembre 2019, 18:11

ça je peux pas faire à ta place... A coup sur ça te fera :
ActiveChart.SetSourceData Source:=Range( _
"'Graphiques Simples'!$A$1:" & var1 & ",'Graphiques Simples'!$C$1:" & var2)
mais la manière dont tu vas charger var1 et var2 ça je peux pas deviner !

Comment tu veux que je sache comment va évoluer ta plage source ?
Avatar du membre
oxydum
Membre dévoué
Membre dévoué
Messages : 557
Appréciations reçues : 59
Inscrit le : 29 mai 2019
Version d'Excel : 2016 FR

Message par oxydum » 3 décembre 2019, 07:13

Bonjour,
Bonjour galopin01,
galopin01 a écrit :
2 décembre 2019, 18:11
Comment tu veux que je sache comment va évoluer ta plage source ?
Il y a plusieurs façons de dynamiser une plage, peut-être avec des tableaux structurés ?
l
louisS
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 2 décembre 2019
Version d'Excel : 16.0.12130.20232

Message par louisS » 3 décembre 2019, 09:14

Merci galopin, je n'avais pas tout compris..

Var = H58
Range("A1:C15").Select
Selection.ClearContents
Range("A1").Select
ActiveSheet.Paste
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.PlotArea.Select
ActiveChart.SetSourceData Source:=Range( _
"'Graphiques Simples'!$A$1:" & Var & ",'Graphiques Simples'!$C$1:" & Var)

Application.Run "Graphiques_V2.xlsm!ETIQUETTES"
Application.Run "Graphiques_V2.xlsm!MEF_Taille_12"
Application.Run "Graphiques_V2.xlsm!Choix_de_la_question_suivante"
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.ChartArea.Copy
End Sub

Maintenant j'ai ca, mais ca me surligne ca en fluo, je ne sais pas pourquoi ...
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'313
Appréciations reçues : 144
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 3 décembre 2019, 10:54

Tu ferais tes déclarations de variables avec Option Explicit tu verrais tout de suite ce qui cloche :
Dim var as String
var = "H58" '(avec guillemets)
A+
l
louisS
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 2 décembre 2019
Version d'Excel : 16.0.12130.20232

Message par louisS » 3 décembre 2019, 13:02

Bizarre, la formule semble bonne, mais ca me selectionne nimporte quoi sur mon graph (ca selectionne tout jusque H58 environ)

En fait je pose genre 3 ligne de A1 à A3.
J'ai mis dans la case H58 la fonction NBVAL(A1;A3) pour que ca indique 3
et je voudrais que ma variable utilise ce "3" pour definir la longueur de plage a selectionner pour mon tableau...

mais ca fait n'importe quoi :/

Sub Graph_2lignes()
'
' Macro7 Macro
'

Dim var1 as String
Dim var2 as String
var1 = Range("H58").Value
var2 = Range("H59").Value
Range("A1:C15").Select
Selection.ClearContents
Range("A1").Select
ActiveSheet.Paste
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.PlotArea.Select
ActiveChart.SetSourceData Source:=Range( _
"'Graphiques Simples'!$A$1:" & var1 & ",'Graphiques Simples'!$C$1:" & var2)
Application.Run "Graphiques_V2.xlsm!ETIQUETTES"
Application.Run "Graphiques_V2.xlsm!MEF_Taille_12"
Application.Run "Graphiques_V2.xlsm!Choix_de_la_question_suivante"
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.ChartArea.Copy
End Sub

J'en suis toujours la... :/
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'313
Appréciations reçues : 144
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 3 décembre 2019, 14:06

Essaie :
Dim Var1 as integer
var = Range("H58").Value
Range("A1:C15").Select
Selection.ClearContents
Range("A1").Select
ActiveSheet.Paste
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.PlotArea.Select
ActiveChart.SetSourceData Source:=Range( _
"'Graphiques Simples'!$A$1:A" & var & ",'Graphiques Simples'!$C$1:C" & var)
'...
l
louisS
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 2 décembre 2019
Version d'Excel : 16.0.12130.20232

Message par louisS » 3 décembre 2019, 14:31

J'avais une autre petite erreur, mais j'ai reussi à corriger, merci !!
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message