Modifier paramètre d'un graphique

Résolu
totaljim -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour,

Je souhaiterais modifier des paramètres de tout mes graphiques d'une feuille.
J'ai le nom de chaques graphiques dans des cellules.

For ind = 1 To 20
With Worksheets("Récapitulatif").Shapes(Range("I" & ind).Value)
.Top = .Rows(li).Top
.Left = .Columns(5).Left
.Height = 165.75
.Width = 300
End With
li = li + 13
Next


Le .shapes ne passe pas !! Quelqu'un connaitrait il la bonne synthaxe

7 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Ce code parcourt tous les graphiques de la feuille et les redimensionne, essaie de t'en inspirer pour le compléter suivant tes besoins:

    Dim i As Integer
    For i = 1 To Worksheets(1).ChartObjects.Count
    With ActiveSheet.Shapes(i)
       .Height = 165.75
       .Width = 300
     End With
    Next i

    0
  2. totaljim
     
    Le soucis, c'est que je créé tout mes graphiques et en fonction du coefficient de régression de leur régression polynomiale, je les place sur ma feuille (du plus grand au plus petit).
    J'ai donc besoin de savoir quelle courbe est laquelle :D
    D'ou l'interet de mettre le numéro ou le nombre du graphique dans une cellule !
    Le soucis c'est que je ne suis pas sur qu'excel commence sa numérotation a 1 si l'on a déja fais des graphiques sur une autre feuille par exemple
    0
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Voici le code pour récupérer le nom de tes graphiques:

    Dim i As Integer
    For i = 1 To Worksheets(1).ChartObjects.Count
    MsgBox ActiveSheet.Shapes(i).Name
    Next i


    Ensuite avec ces noms tu peux faire ce que tu veux comme ci-dessous, en adaptant ce code avec le nom de tes graphique et en y ajoutant le positionnement (tu peux avoir ce code avec l'enregistreur de macro)

    Dim i As Integer
    For i = 1 To Worksheets(1).ChartObjects.Count
    Select Case ActiveSheet.Shapes(i).Name
    Case Is = "Graphique 1" 'a adapter
    With ActiveSheet.Shapes("Graphique 1") 'a adapter
       .Height = 165.75
       .Width = 400
     End With
      Case Is = "Graphique 2" 'a adapter
    With ActiveSheet.Shapes("Graphique 2") 'a adapter
       .Height = 150
       .Width = 300
     End With
      Case Is = "Graphique 3" 'a adapter
    With ActiveSheet.Shapes("Graphique 3") 'a adapter
       .Height = 75
       .Width = 200
     End With
     'etc.....
      End Select
    Next i


    Bonne programmation

    0
  4. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    La position du graphique est donné par rapport au haut et gauche de la feuille

    Tu peux te servir des données saisies dans tes cellules comme ceci:

    'on saisit les données
    Range("A1").Value = 10 'position top
    Range("A2").Value = 20 ' position left
    With ActiveSheet.Shapes("Graphique 1") 'a adapter
       .Height = 165.75
       .Width = 300
       .Top = Range("A1").Value
       .Left = Range("A2").Value
     End With

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. totaljim
     
    Merci de ton aide ! probleme résolu :)
    J'ai un autre soucis qui est peut etre lié aux graphiques

    Quand j'exécute mon programme en pas-à-pas tout marche pour le mieux dans le meilleur des mondes !
    Et quand je passe en exécution automatique ... le programme ne me met rien dans la variable rdeux :
    rdeux = Right(ActiveChart.SeriesCollection(1).Trendlines(ordre).DataLabel.Text, 6)


    Une idée d'où peut venir le problème ?
    Dois je refaire un autre sujet ?
    0
  7. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Désole je ne vois pas. Ouvre un nouveau sujet, tu auras plus de chance.
    0
  8. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Et si tu mettais une pause dans ton code avant la ligne, comme ceci:

    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Sleep 2000 '2 secondes
    rdeux = Right(ActiveChart.SeriesCollection(1).Trendlines(ordre).DataLabel.Text, 6)

    0