XL 2010 Modification coordonnées x et y d’un graphique st valeur de cellules

  • Initiateur de la discussion Initiateur de la discussion jeanmi
  • 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 !

jeanmi

XLDnaute Occasionnel
Bonjour à tous

J’ai un graphique, qui dans l’exemple a les valeurs x et y (1280 * 960)

Est-il possible que ces valeurs soient récupérées dans les cellules du tableau en fonction du choix d’une autre cellule ?

Ci-joint un fichier d’exemple.

En vous remerciant pour vos réponses.

Cordialement
 

Pièces jointes

Bonjour.
En 'trace cercle planetes'!H7 :
Code:
=INDEX(Feuil2!$B$2:$B$16;CODE(H$5)-64)
Après pour changer les échelles des axes il va falloir un peu de VBA.
Bonjour @Dranreb à tous,

Merci pour la reponse sur la recupération des informations en fonction du choix retenue. c'est nickel.

Donc pour le graphique il faut , du code VBA, ou trouver une solution ou une piste de recherche ?

Merci pour l'aide.

Cordialement
 
L'enregistreur de macro donne généralement des clés utiles.
J'ai dans une macro pour créer vite fait un graphique avec des courbes et des points ce passage là :
VB:
   With Ch.Axes(xlCategory)
      UPr = 10 ^ Int(Log((XMaxi - XMini) / 15) / Log(10) + 0.5)
      .MinimumScale = UPr * Int(XMini / UPr + 0.0001)
      .MaximumScale = UPr * Int(XMaxi / UPr + 0.9999)
:
 
L'enregistreur de macro donne généralement des clés utiles.
J'ai dans une macro pour créer vite fait un graphique avec des courbes et des points ce passage là :
VB:
   With Ch.Axes(xlCategory)
      UPr = 10 ^ Int(Log((XMaxi - XMini) / 15) / Log(10) + 0.5)
      .MinimumScale = UPr * Int(XMini / UPr + 0.0001)
      .MaximumScale = UPr * Int(XMaxi / UPr + 0.9999)
:
Bonjour @Dranreb à tous,

Merci pour les idées.

J’ai donc fait avec enregistrement macro, puis adapté pour avoir quelque chose comme je souhaiterais.

Mon petit pb maintenant, ou je ne trouve pas la solution :

a) Comment remettre le graphique en forme pour que les cercles soient toujours ronds

b) Et après comment faire pour que le tracé soit effectué à chaque changement du choix ( ça je devrais trouver sur internet, normalement)

Si vous avez des idées pour m’aider, s’il y a une solution ?

Merci d'avance.

Cordialement
 

Pièces jointes

J'ai notamment ça dans mon énorme classeur de macros :
VB:
Sub GphIsoEchelles(Optional ByVal Graph As Chart = Nothing, _
   Optional ByVal XGMin As Double = 0, Optional ByVal XDMin As Double = 0, _
   Optional ByVal YHMin As Double = 0, Optional ByVal YBMin As Double = 0)
   Dim dX As Double, dY As Double, Largeur As Double, Hauteur As Double, Ech As Double, _
      ZTrac As PlotArea, ObjG As ChartObject, _
      XMil As Double, YMil As Double, _
      XMrg As Double, YMrg As Double, N As Long
   If Graph Is Nothing Then Set Graph = ActiveChart
   On Error Resume Next
   With Graph
      Set ZTrac = .PlotArea: Set ObjG = .Parent: If Err Then Set ObjG = Nothing
      End With
   On Error GoTo 0
   With Graph.Axes(xlCategory): dX = .MaximumScale - .MinimumScale: End With
   With Graph.Axes(xlValue): dY = .MaximumScale - .MinimumScale: End With
   If ObjG Is Nothing Then
      Graph.SizeWithWindow = True
      ZTrac.Left = XGMin: ZTrac.Width = Graph.ChartArea.Width - XDMin - XGMin
      ZTrac.Top = YHMin: ZTrac.Height = Graph.ChartArea.Height - YHMin - YBMin
      End If
   For N = 1 To 4
      Largeur = ZTrac.InsideWidth
      Hauteur = ZTrac.InsideHeight
      If ObjG Is Nothing Then
         Ech = ArrondiGamme(Min(Largeur / dX, Hauteur / dY))
         ZTrac.Width = ZTrac.Width - Largeur + dX * Ech
         ZTrac.Height = ZTrac.Height - Hauteur + dY * Ech
      Else
         Ech = ArrondiGamme(Sqr((Largeur * Hauteur) / (dX * dY)))
         ObjG.Width = ObjG.Width - Largeur + dX * Ech
         ObjG.Height = ObjG.Height - Hauteur + dY * Ech
         End If
      Next N
   End Sub
Function ArrondiGamme(ByVal X As Double) As Double
   ArrondiGamme = 2 ^ (Int(Log(X) * 212857425 / 12295127 + 0.5) / 12)
   End Function
 
J'ai notamment ça dans mon énorme classeur de macros :
VB:
Sub GphIsoEchelles(Optional ByVal Graph As Chart = Nothing, _
   Optional ByVal XGMin As Double = 0, Optional ByVal XDMin As Double = 0, _
   Optional ByVal YHMin As Double = 0, Optional ByVal YBMin As Double = 0)
   Dim dX As Double, dY As Double, Largeur As Double, Hauteur As Double, Ech As Double, _
      ZTrac As PlotArea, ObjG As ChartObject, _
      XMil As Double, YMil As Double, _
      XMrg As Double, YMrg As Double, N As Long
   If Graph Is Nothing Then Set Graph = ActiveChart
   On Error Resume Next
   With Graph
      Set ZTrac = .PlotArea: Set ObjG = .Parent: If Err Then Set ObjG = Nothing
      End With
   On Error GoTo 0
   With Graph.Axes(xlCategory): dX = .MaximumScale - .MinimumScale: End With
   With Graph.Axes(xlValue): dY = .MaximumScale - .MinimumScale: End With
   If ObjG Is Nothing Then
      Graph.SizeWithWindow = True
      ZTrac.Left = XGMin: ZTrac.Width = Graph.ChartArea.Width - XDMin - XGMin
      ZTrac.Top = YHMin: ZTrac.Height = Graph.ChartArea.Height - YHMin - YBMin
      End If
   For N = 1 To 4
      Largeur = ZTrac.InsideWidth
      Hauteur = ZTrac.InsideHeight
      If ObjG Is Nothing Then
         Ech = ArrondiGamme(Min(Largeur / dX, Hauteur / dY))
         ZTrac.Width = ZTrac.Width - Largeur + dX * Ech
         ZTrac.Height = ZTrac.Height - Hauteur + dY * Ech
      Else
         Ech = ArrondiGamme(Sqr((Largeur * Hauteur) / (dX * dY)))
         ObjG.Width = ObjG.Width - Largeur + dX * Ech
         ObjG.Height = ObjG.Height - Hauteur + dY * Ech
         End If
      Next N
   End Sub
Function ArrondiGamme(ByVal X As Double) As Double
   ArrondiGamme = 2 ^ (Int(Log(X) * 212857425 / 12295127 + 0.5) / 12)
   End Function
re @Dranreb à tous,

là ça me depasse, c'est pour quoi faire ? je ne comprends rien dans tous ce code qui me dépasse là !!!

je vais regarder, mais j'ai bien peur de ne pas pouvoir faire grand chose, sans comprendre.
 
C'est une macro qui fait de son mieux pour redimensionner le graphique actif ou spécifié de façon à égaliser les échelles de distances des deux axes. Très utile pour un graphique montrant une pièce à usiner ou un plan de lieu ou même simplement montrer une structure mathématique sur un plan complexe iso échelle des réel et imaginaire même s'ils ont des mini et maxi différents.
 
Dernière édition:
C'est une macro qui fait de son mieux pour redimensionner le graphique actif ou spécifié de façon à égaliser les échelles de distances des deux axes. Très utile pour un graphique montrant une pièce à usiner ou un plan de lieu ou même simplement montrer une structure mathématique sur un plan complexe iso échelle des réel et imaginaire même s'ils ont des mini et maxi différents.
re @Dranreb à tous,

OK, c'est plus que bien, mais comment la lancer ,
j'ai mis dans un module la macro et après que faire !!!

merci pour l'aide
 
Oui, ça devrait être bon, mais si le graphique n'est pas forcément sélectionné, précisez le Chart en argument. Attention, pas le ChartObject: sa propriété Chart dans ce cas.
j'ai donc ajouter à ma macro un call GphIsoEchelles, avaec juste avant une slection du graphique.

au lancement je ton sur une erreur , voir photo, mais je ne sais quoi faire ?

Merci pour l'aide
 

Pièces jointes

  • erreur.JPG
    erreur.JPG
    77.1 KB · Affichages: 6
- 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
4
Affichages
762
Retour