Problème de protection de VB

max94

XLDnaute Nouveau
Problème de protection de VB [Non Résolu]

Bonjour à tout le forum,

Je me suis beaucoup instruit de vos fil de discussion pour apprendre à utiliser VB et Excel.

Maintenant, j'ai un gros soucis :

Je sais déprotéger VB et le reprotéger, mais lorsque je souhaite reprotéger vb, il faut que le classeur soit réouvert.

Or lorsque je réouvre le classeur sur lui même, celui-ci créé un bug d'excel qui se fige et est obligé d'être refermé.

Ca ne posait pas de problème avant que mon fichier grossisse (7MO actuellement)

Si quelqu'un aurait une solution à m'apporter afin de résoudre ce problème, se serait génial!!!

Je vous remercie d'avance et attend de vos nouvelles
 
Dernière édition:

Spitnolan08

XLDnaute Barbatruc
Re : Problème de protection de VB

Re,
Petit rappel : On ne peut pas distinguer le graphe sur lequel on clic lorsqu'on lui a affecté une macro (Ce qui aurait résolu mes problèmes).
Peut être (jusqu'à ce que quelq'un passe et nous prouve le contraire...;)) mais tu aurais peut être pu contourner le problème en associant à chaque graphe un bouton ou plus simplement une cellule sur laquelle double-cliquer pour lancer ton zoom. Pas essayé mais cela me semble réalisable puisque chaque graphe a un nom spécifique.
Je dis une bêtise ?

(La méthode des boutons me parait plus lourde...)

Cordialement
 

max94

XLDnaute Nouveau
Re : Problème de protection de VB

Salut Spitnolan,

Tu as raison, c'était une des opportunités que j'avais envisagé à ce moment là, mais a priori, c'était plus lourd à prendre en considération. Et même si chaque bouton pourrait être une copie des autres, il reviendrait le problème de les faire agir sur une même macro, ou alors de faire idem que ma façon, c'est à dire de leur créer leur fonction propre.

Dans tous les cas, je pensais à ce moment là que ce n'était pas une très bonne idée. A moins que l'on me prouve le contraire.

Mais, c'est toujours un plaisir de te répondre Spitnolan.

Au plaisir,

Amicalement,

Max
 

ChTi160

XLDnaute Barbatruc
Re : Problème de protection de VB

Salut max94
Bonsoir le fil
Bonsoir le Forum

je n'y connais rien en Graphe, mais je pose ma question un graphe a t'il un nom est il un Objet ,si oui ne peut on utiliser la méthode Application.Caller ???

Ben Bonsoir et encore un coucou à @+Thierry
 

Spitnolan08

XLDnaute Barbatruc
Re : Problème de protection de VB

Re,

Je crois Max, que j'ai trouvé la solution à ta problématique. Jette un oeil au code ci dessous. Il te permet d'affecter une même macro à tous les graphes de ta feuille puis d'identifier lors du clic le graphe appelant...
Code:
Sub Test1()
For Each Sh In ActiveSheet.ChartObjects
    Sh.OnAction = "Test2"
Next
End Sub

Sub Test2()
NomGraph = Application.Caller

ActiveSheet.ChartObjects(NomGraph).Activate  '***Pas indispensable...
    
With ActiveSheet.Shapes(NomGraph)
    '***Multiplie la taille du graphique par 4
    .ScaleWidth 2, msoFalse, _
    msoScaleFromTopLeft
    .ScaleHeight 2, msoFalse, _
    msoScaleFromTopLeft
End With

End Sub
Bien cordialement

Edit : Salut Chti;):) Pas rafraichi, occupé que j'étais pour réussir à faire fonctionner mon exemple et jongler entre les ChartObjects les shapes et autres ChartArea et..... Donc, je te confirme Jean-Marie que ça fonctionne avec application.caller et que c'est bien plus simple que de réécrire des macros et protéger le code...

 
Dernière édition:

Spitnolan08

XLDnaute Barbatruc
Re : Problème de protection de VB

Re,

Effectivement, mais est ce bien utile ?
Puisqu'en 2 petites macros on récupères tout ce que l'on veut...
Je m'étais posé la question de proposer une solution module de classe mais le jeu n'en vaut pas la chandelle, sauf à se faire plaisir pour réaliser le montage...:D.

Cordialement
 

Spitnolan08

XLDnaute Barbatruc
Re : Problème de protection de VB

Re,
comment peut on faire pour diminuer ensuite la taille ?
Tu veux dire : comment redonner la taille initiale au graphe ?

Si c'est ça, il faut, je pense, placer en début de Test2 une code pour appliquer la même taille à tous les graphes en mode vignette avec une autre instruction qui ne définit pas un rapport de zoom mais juste les dimensions de l'objet en utilisant les propriétés Height et width du ChartObject.

Par exemple :
Code:
 Sub TestMax2()
NomGraph = Application.Caller

For Each Sh In ActiveSheet.ChartObjects
    With Sh
        .Height = 250
        .Width = 250
    End With
Next
...
End sub
Cordialement
 
Dernière édition:

Spitnolan08

XLDnaute Barbatruc
Re : Problème de protection de VB

Re,

Comme j'avais omis la déclaration des variables dans les codes postés, je reviens avec une version complète plus clean :
Code:
Sub Max1()
Dim Sh As ChartObject

[COLOR=Green] '***Affecte une même macro à tous les graphes de la feuille[/COLOR]
For Each Sh In ActiveSheet.ChartObjects
    Sh.OnAction = "Max2"
Next
End Sub

Sub Max2()
Dim Sh As ChartObject
Dim NomGraph As String

[COLOR=Green]'***Identifie le graphe cliqué[/COLOR]
NomGraph = Application.Caller

[COLOR=Green] '***Affecte une taille commune à tous les graphiques de la page[/COLOR]
For Each Sh In ActiveSheet.ChartObjects
    With Sh
        .Height = 250
        .Width = 250
    End With
Next

[COLOR=Green] '***Applique un zoom *4 (2*2=4) au graphe sur lequel l'utilisateur a cliqué[/COLOR]
With ActiveSheet.Shapes(NomGraph)
    '***Multiplie la taille du graphique par 4
    .ScaleWidth 2, msoFalse, _
    msoScaleFromTopLeft
    .ScaleHeight 2, msoFalse, _
    msoScaleFromTopLeft
End With

End Sub
Bonne nuit,
Bien cordialement
 
Dernière édition:

tirex28

XLDnaute Occasionnel
Re : Problème de protection de VB

Bonjour à tous,

Comment se servir des Modules de Classe, c'est une partie de vba que je n'ai pas encore exploré.

Ce lien traite (entre autre) de l'usage des modules de classes appliqués aux graphiques incorporés.

Ce lien n'existe plus

Voir la section Programmation>VBA>Procédures évènementielles, paragraphes III et IV.

Cordialement,

Tirex28/
 

max94

XLDnaute Nouveau
Re : Problème de protection de VB

Bonjour le Forum, Spitnolan, Tirex et ChTi,

Eh bien, je vais regarder tout ça!!!

Merci de vous être décarcassé pour moi, c'est sympas.

je jette un oeil et je vous en fait un topo tout à l'heure.

Amicalement,

Max
 

Cousinhub

XLDnaute Barbatruc
Re : Problème de protection de VB

Bonjour Max, Tirex, Spit, Chti et le forum

Une autre approche pour visualiser un graphique.
Le principe, on l'agrandit, le copie et l'enregistre en format .gif dans le répertoire courant.
On l'insère dans un USF, détruit l'image .gif, redonne les dimensions initiales au graphique, et on le visualise dans l'USF

Fichier joint
 

Pièces jointes

  • graphique2.zip
    13.5 KB · Affichages: 44
  • graphique2.zip
    13.5 KB · Affichages: 47
  • graphique2.zip
    13.5 KB · Affichages: 44

max94

XLDnaute Nouveau
Re : Problème de protection de VB

Re le fil, le Forum,

Eh bien, je viens de tester la solution de Spitnolan, j'y ai apporté quelques améliorations afin que le graphe se mette en premier plan, qu'il se place au milieu de ma page et je ne fais que remettre le graphe zoomé à sa taille et à son emplacement d'origine (je ne fais pas une boucle sur tous les graphes)
L'idée est super intéressante, je n'avais même pas pensé à faire une affectation de la macro à tous les graphes de cette manière. Merci, c'est super intéressant.

En ce qui concerne ta solution bhbh, je ne l'ai pas encore regardé, je fais ça tout de suite.

Amicalement,

Max

Edit :
Bon, eh bien je viens de tester ta méthode, et elle est également très intéressante. Du coup, je ne sais pas laquelle choisir.
Mais c'est vraiment intéressant.

Je vous remercie bien pour cette aide.

Amicalement,

Max
 
Dernière édition:

Spitnolan08

XLDnaute Barbatruc
Re : Problème de protection de VB

Re,
Salut aux nouveaux,

J'avais pensé à transformer les objets "Graphe" en image car une image est beaucoup plus facile à manipuler qu'un graphique mais je ne savais pas trop si c'était ce que recherchais Max, car alors on ne peut plus agir sur le graphique en "temps réel". Il faut le modifier puis l'agrandir....
Par contre mon approche n'était pas la même que celle de bhbh.
Pour ma part j'avais pensé à transformer le graphique en image directement dans sa page puis à lui attribuer un lien hypertexte qui permet de l'ouvrir agrandi dans une fenêtre web suivant le principe utilisé dans ce post.

Bien cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 205
Messages
2 086 199
Membres
103 156
dernier inscrit
Ludo94130