Effet loupe dans graphique

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 !

Risleure

XLDnaute Occasionnel
Bonjour le Forum,

Je souhaite faire apparaître sur mon graphe une zone partielle avec un effet loupe.
Voir l'exemple en PJ mais qui n'est réalisé qu'avec une image fixe. Je souhaite si on ajoute un essai ou si les valeurs dans un essai se corrigent que le zoom suive.
Et en bonus : idéalement sur une feuille graphe séparée 😉 .... et à défaut sur un graphique inclus dans une feuille de calcul.

Merci
 

Pièces jointes

Re : Effet loupe dans graphique

Bonjour,

Votre message étant ancien, je voudrai que vous me confirmiez si
vous êtes toujours intéressé par une solution.
Je viens d'en programmer une qui, si elle n'est pas entièrement satisfaisante,
a le mérite de faire.

Dans l'affirmative, veuillez me faire signe.

PMO
Patrick Morange
 
Re : Effet loupe dans graphique

Bonsoir PMO2, Risleure,

Message ancien, pas vraiment, quelques jours qui, en ces périodes de fêtes, ne permettent pas forcément une connection internet...

De toutes façons ton fichier, même pas totalement satisfaisant, va intéresser beaucoup de monde.

A te lire et bonne soirée.

Jean-Pierre
 
Re : Effet loupe dans graphique

Bonjour le Forum, PMO2, JeanPierre

C'est vrai qu'en cette période mon assiduité chute un peu 😉 mais la question qui n'est pas si ancienne reste toujours d'actualité donc je reste dans l'attente d'une solution satisfaisante.

A te lire. Merci
 
Dernière édition:
Re : Effet loupe dans graphique

Bonjour Risleure, PM02 et JeanPierre

La solution consiste bien sur à redéfinir les axes en les paramétrant selon l'effet loupe voulu.
Donc, une petite macro avec les mots horizontal et vertical, car les x et y sont inversés dans ton exemple.

Deux petits essais avec des paramètres différents d'expliqueront mieux mon propos puisqu'un bon dessin... comme dit le proverbe.

Bonne année à tous.
Gruick
 

Pièces jointes

Re : Effet loupe dans graphique

Salut Gruick

Comment ça inversé.......mais un graphe ça n'a pas de sens c'est comme un béret. 😀
Bon + sèrieusement, la solution que tu proposes est un graphe zoomé (ou loupé comme tu nommes ta macro) dans un graphe normal mais si je déplace mon graphique normal, le zoomé y suit pas 🙁 ......ou alors j'ai pas vu toute l'astuce.

Et en plus mon souhait est d'avoir le zoom "idéalement sur une feuille graphe séparée"

Donc bonne année à toi aussi
 
Re : Effet loupe dans graphique

Re,

Pour "Loupé", c'est histoire de rigoler un peu.

déplacer ton graphique principal et que l'autre suive, il faut le faire "à la main", j'en ai bien peur.

Si j'ai mis les graphique sur la même feuille c'est pour qu'on aie toujours devant soi le graphique principal pour mieux choisir les paramètres.
sinon, remplaces cette ligne
Code:
ActiveChart.Location Where:=xlLocationAsObject, Name:="Data"
par celle-là
Code:
ActiveChart.Location Where:=xlLocationAsNewSheet
Je n'ai que ceci à te proposer. J'ai eu au moins le mérite d'y réfléchir.

Gruick
 
Re : Effet loupe dans graphique

Bonjour à tous,

Je n'ai programmé que l'effet de loupe sur une partie du graphique.
L'image créée n'est pas dynamique (pas d'évolution si les données du graphique changent)
et elle s'inscrit à l'intérieur du graphique. Ainsi si les données changent, il faut relancer le programme.
En revanche, cela fonctionne sur un graphique incorporé dans une feuille de calcul ou
sur un graphique d'une feuille Graph.

MISE EN PLACE (un peu compliquée)
Etape 1
Copiez le code ci-dessous et collez le dans un module STANDARD
Code:
Dim myClasseChart As New clsEventChart

Sub Graphique_Zoom()
If TypeName(Selection) <> "ChartArea" Then
  MsgBox "Veuillez sélectionner un graphique"
  Exit Sub
End If
Set myClasseChart.ChartClass = ActiveChart
End Sub
Etape 2
1) Créez un module de CLASSE
2) Appuyez sur F4
3) Dans la fenêtre de propriétés allez sur la propriété (Name).
La valeur par défaut doit être "Classe1". Changez cette valeur par "clsEventChart"
4) Copiez le code ci-dessous et collez le dans fenêtre de code du module de classe
Code:
Public WithEvents ChartClass As Chart
Const ZOOM As Double = 4
Dim myX As Long
Dim myY As Long

Private Sub ChartClass_MouseDown(ByVal Button As Long, _
      ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
If Shift <> 1 Or Button <> 1 Then Exit Sub
myX = x
myY = y
Call ZoomPartie
End Sub

Public Property Get Abcisse() As Long
Abcisse = myX
End Property

Public Property Get Ordonnee() As Long
Ordonnee = myY
End Property

Private Sub ZoomPartie()
Dim TypeSheet As Object
Dim OldSheet As Worksheet
Dim S As Worksheet
Dim C As Chart
Dim CO As ChartObject
Dim colPlage&
Dim rowPlage&
Dim R As Range
Dim SH As Shape
Dim NomGraph$
On Error GoTo Erreur
Application.ScreenUpdating = False
If ActiveSheet.Type = xlWorksheet Then _
    Set OldSheet = ActiveSheet
Set C = ActiveChart
NomGraph$ = C.Parent.Name
On Error Resume Next
Set SH = ActiveChart.Shapes(NomGraph$)
On Error GoTo 0
On Error GoTo Erreur
If Not SH Is Nothing Then SH.Delete
C.ChartArea.Copy
Set S = Sheets.Add
S.Cells.RowHeight = 26.92
S.Cells.ColumnWidth = 4.35
S.Paste
Set CO = S.ChartObjects(1)
CO.Height = CO.Height * ZOOM
CO.Width = CO.Width * ZOOM
colPlage& = CLng(myX / 35.2 * ZOOM)
rowPlage& = CLng(myY / 35.2 * ZOOM)
S.[a1].Select
If colPlage& < 2 Then colPlage& = 3
If rowPlage& < 2 Then rowPlage& = 3
If colPlage& > 255 Then colPlage& = 254
If rowPlage& > 65535 Then rowPlage& = 65534
Set R = S.Range(S.Cells(rowPlage& - 2, colPlage& - 2), _
    S.Cells(rowPlage& + 2, colPlage& + 2))
R.CopyPicture
S.Shapes(1).Delete
S.Paste
Set SH = S.Shapes(1)
SH.Name = NomGraph$
Selection.ShapeRange.Height = 90
Selection.ShapeRange.Width = 90
SH.Copy
Application.DisplayAlerts = False
S.Delete
If ActiveSheet.Type = xlWorksheet Then
  OldSheet.Select
  ActiveSheet.ChartObjects(NomGraph$).Activate
End If
ActiveChart.Paste
Set SH = ActiveChart.Shapes(NomGraph$)
SH.IncrementTop myY / 2.5
SH.IncrementLeft myX / 1.35
SH.Placement = xlMoveAndSize
With Selection.ShapeRange.Line
  .DashStyle = msoLineSolid
  .ForeColor.SchemeColor = 10
End With
Erreur:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
If Err <> 0 Then
  MsgBox "Erreur " & Err.Number & vbCrLf & Err.Description
End If
End Sub
La mise en place est terminée.

FONCTIONNEMENT
1) Sélectionnez un graphique quelconque (créez en si il n'y en pas).
Faites attention de bien sélectionner le graphique et non une zone du graphique (Chartarea, Série, …).
Le mieux est de cliquer dans un des coins du graphique.
2) Lancez la macro "Graphique_Zoom". Normalement rien ne se passe.
3) Si vous faites touche Majuscule MAINTENUE et cliquez gauche à l'intérieur du graphique sélectionné
une forme apparaîtra avec effet de zoom. J'ai eu des soucis occasionnés par les différentes
unités de mesure (twips, inches, points) aussi ai-je réglé cela au pifomètre !!!
Si bien que l'image grossie ne correspond pas exactement à l'endroit où on clique.
Si le résultat présente un trop grand décalage, il suffit de refaire l'opération (SHIFT maintenue, clic gauche)
afin de peaufiner ; la forme précédente est systématiquement détruite à chaque renouvellement.

En espérant avoir tout dit, je vous souhaite un bon test.

Cordialement.

PMO
Patrick Morange
 
Re : Effet loupe dans graphique

Bonjour,

Alors là, chapeau bas PMO2, du grand art !

Ca marche même sur le Mac, avec un petit décalage, il faut cliquer 2 cm ) droite et 1 cm plus bas que la zone désirée, je vais essayer de trouver où reparamètrer ça, mais je ne refuse pas un coup de main...😱, la majorité des instructions me sont encore inconnues, ou sibyllines.

En tout cas, ça va m'être bien utile, comme à Risleure qui le demandait.

Merci encore et bonne année.

Gruick
 
Re : Effet loupe dans graphique

Bonjour à tous,

J'aurai bien aimé tester cette loupe, mais j'ai le message d'erreur suivant :

Erreur de compilation:
Membre de métode ou de données introuvable

et le mot .ChartClass est surligné.

Sub Graphique_Zoom()
If TypeName(Selection) <> "ChartArea" Then
MsgBox "Veuillez sélectionner un graphique"
Exit Sub
End If
Set myClasseChart.ChartClass = ActiveChart
End Sub

Je pense avoir bien suivi les instructions. Aurais-je omis de faire ou déclarer quelque chose dans ces macros SVP ?

Cordialement.
Quincy
 
Re : Effet loupe dans graphique

Bonjour PMO2
dois-je dire PMO2 ou PMO ?

Effectivement là c'est génial. Je vais essayer sur d'autres graphiques.
J'ai vu que l'on pouvait aussi la redimensionner alors que jusqu'à maintenant je n'avais pas d'action à part la déplacer.

Félicitations.
Bonne soirée à tous.
Quincy
 
- 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

Réponses
7
Affichages
1 K
Guest
G
Retour