Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Vérouiller un graphique interactif

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 !

Gravier2009

XLDnaute Nouveau
Bonjour tout le monde,

Je souhaite verrouiller un graphique interactif (en pièces jointes). Il est interactif dans les sens où j'ai affecté une série de toupilles pour chacune de ses variables afin de permettre à l'utilisateur d'entrer les valeurs qu'ils jugent adéquates.

Ce fichier excel sera utilisé par des personnes pas très à l'aise avec excel, j'aimerais donc éviter par exemple que quand on clique sur un axe celui-ci ne s'active. Par contre, il faudrait que les boutons et le menus déroulants restent actifs.

Cordialement,

Gravier
 

Pièces jointes

Re : Vérouiller un graphique interactif

Bonsoir,
Dans le module de a feuille graphique
Code:
Private Sub Chart_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)
ActiveChart.Deselect
End Sub
A+
kjin
 
Re : Vérouiller un graphique interactif

Bonjour kjin,

Merci de la réponse. Il semble que cela ne marche pas dans excel 2007:
"Using VBA to deactivate a chart
You can use the Activate method to activate a chart, but how do you deactivate (that is, unselect) a chart? According to the Help System, you can use the Deselect method to deactivate a chart:

ActiveChart.Deselect

However, this statement simply doesn't work - at least in the initial release of Excel 2007.

As far as I can tell, the only way to deactivate a chart by using VBA is to select something other than the chart. For an embedded chart, you can use the RangeSelection property of the ActiveWindow object to deactivate the chart and select the range that was selected before the chart was activated:

ActiveWindow.RangeSelection.Select
"
Excel 2007, Power Programming with VBA, John Walkenbach

Ce n'est pas si grave vu que la feuille est protégée. L'autre solution est de faire ça:
Private Sub Chart_Select(ByVal ElementID As Long, _
ByVal Arg1 As Long, ByVal Arg2 As Long)
ActiveChart.ChartArea.Select
End Sub
Mais le risque est que l'usager déplace la zone de graphique, du coup la simple protection est probablement la meilleure solution.
merci,
gravier
 
Re : Vérouiller un graphique interactif

Bonsoir,
Etonnant effectivement, si l'on parle bien de feuille graphique et non de garphique incorporé
Peut-être essayer d'envoyer la touche échap
Code:
Private Sub Chart_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)
SendKeys "{ESCAPE}"
End Sub

A+
kjin
 
Re : Vérouiller un graphique interactif

Quand on enregistre avec une macro la touche escape, on tombe sur quelque chose comme ça:
sub escape()
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.ChartArea.Select
End Sub
Donc de nouveau, on active simplement la chart area..
Et le sendkeys "{ESCAPE}" ne donne rien. Bizarre.
A+
Gr.
 
Re : Vérouiller un graphique interactif

Bonsoir,
De quoi parles tu ?! 🙄😕
Si comme dans ton fichier joint, le graphique est dans une feuille graphique, tu peux gérer directement les événements dans le module de cette feuille (c'est le code que je t'ai transmis), si par contre s'il est dans une feuille de calcul (incorporé) il faudra créer une instance de classe particulière pour pouvoir gérer ces mêmes événements
QQ soit le cas, il n'y a pas besoin de créer d'autre macro, de toute façon, l'enregistreur n'enregistre pas les séquence de touches spéciales...
A+
kjin
 
Re : Vérouiller un graphique interactif

Bonjour,

Oui oui, on parle bien de la même chose ;-). Ils marchent chez toi les codes que tu me proposes? Pas chez moi..

Quand j'insère tes codes (- SendKeys "{ESCAPE}" - ou - ActiveChart.Deselect -) dans le module de la feuille graph, rien ne se passe. En effet, il semble que - ActiveChart.Deselect - ne soit pas pris en compte par excel 2007 (cf. l'extrait du bouquin de John Walkenbach) tandis que - SendKeys "{ESCAPE}" - ne donne rien. D'ailleurs, en utilisant l'enregistreur de macro, on s'aperçoit qu'appuyer sur la touche -escape- une fois l'un des éléments du graphique sélectionné est enregistré comme si l'on activait l'air graphique. En d'autres termes, appuyer la touche escape est équivalent en vba à activer l'air graphique.. Bizarre.

Donc il me semble qu'il n'y ait que deux solutions pour éviter que l'utilisateur ne bidouille la feuille de graphique interactif:

- soit vérouiller complétement la feuille. Inconvénient: il peut tjrs selectionnerles éléments du graph. Le bon point est qu'ile puisse pas les modifier. Mais ça peut désorienter des gens le fait de pouvoir sélectionner.

- soit écrire ça dans le module du graph (inconvénient: l'utilisateur peut toujours par inadvertance déplacer l'air graphique):

Private Sub Chart_Select(ByVal ElementID As Long, _
ByVal Arg1 As Long, ByVal Arg2 As Long)
ActiveChart.ChartArea.Select
End Sub

A+
Gr.
 
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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…