XL 2010 Passage d'arguments avec un graphique

  • Initiateur de la discussion Initiateur de la discussion mécano41
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mécano41

XLDnaute Accro
Bonjour,

J'ai un petit souci dans mon code.
Je souhaite lancer une procédure par un Call Sub xxxx( ici : arguments nécessaires)
Les éléments se trouvent dans plusieurs feuilles et je souhaite que le Sub xxxx(...) n'ait pas à connaître les noms de feuille de façon à pouvoir le réutiliser ailleurs, sans modif. Pour des Range ou des objets.Object, cela fonctionne mais pas pour le graphique. Quelqu'un peut-il ma dire où je me trompe? Merci d'avance

Cordialement

Sub xxxxxx()
' ....
' RM1 et RM2 sont les CodeName de deux feuilles
' Graph1 est le nom d'un graphique qui est dans RM1
' PlgeDonnX et PlgeDonnY sont des plages de données qui sont dans la feuille RM2

'Appel de procédure :
Call MiseEchGraph("Graph1", RM2.Range("DonnéesX"), RM2.Range("DonnéesY"))
' ....
' ....
End Sub

'Procédure:
Sub MiseEchGraph(NomDessin As String, PlgeDonnX As Range, PlgeDonnY As Range)
Dim RMx As Worksheet, RMy As Worksheet
Set RMx = Worksheets(PlgeDonnX.Worksheet.Name)

' .... Ici, cela fonctionne
With RMx
.Range(xxxxxx) = zzzzz
End With

'....Ici, cela ne fonctionne pas
With RMy
.ChartObjects(NomDessin).Activate
.Shapes(NomDessin).Width = Larg + 10
.Shapes(NomDessin).Height = Haut + 10
End With

'....
End Sub
 
Voici un fichier très allégé. Les parties intéressantes du code sont limitées par des ' ##############
Le but : pouvoir récupérer des procédures complètes dans d'autres fichiers sans les modifier.
Les cellules jaunes de la feuille Calculs sont modifiable pour lancer les calculs et actions

Merci d'avance,

Cordialement
 

Pièces jointes

Bonjour.
Vous ne pouvez pas activer un objet contenu dans une autre feuille que la feuille active.
Au lieu de NomDessin as String vous devriez transmette ByVal Chart As Chart et à l'appel :
Call MiseEchDessin(.ChartObjects("Dessin1").Chart, …
Utilisez Chart au lieu de ActiveChart et enlevez tout les Select et Selection.
Pour montrer le Graphique terminez par Chart.Parent.Parent.Activate
 
Bonjour.
Vous ne pouvez pas activer un objet contenu dans une autre feuille que la feuille active.
Au lieu de NomDessin as String vous devriez transmette ByVal Chart As Chart et à l'appel :
Call MiseEchDessin(.ChartObjects("Dessin1").Chart, …
Utilisez Chart au lieu de ActiveChart et enlevez tout les Select et Selection.
Pour montrer le Graphique terminez par Chart.Parent.Parent.Activate
Merci, je regarde et je reviens....
Cordialement
 
Vous n'avez pas enlevé les Select, Selection et ActiveChart.
Et surtout vous avez transmis le ChartObject au lieu de sa propriété Chart.
C'est possible mais alors il faut aussi le récupérer par ByVal COt As ChartObject et récupérer par un Set sa propriété Chart dans une variable locale Chart As Chart.
Moi je préfère en général transférer le Chart. Le ChartObject est alors sa propriété Parent.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
503
Retour