XL 2013 positionnement de plusieurs graphique dans une plage de données sur des lignes différente

Lionel7918e

XLDnaute Nouveau
Bonjour David,

je me suis inscrit sur ce site parce que je bloque sur une macro je cherche a positionner plusieurs graphique sur une même plage de donnée mais sur des ligne différente mais sa bloque pourrait tu m'aider ? voici monde :

Dim d As Double, a As Double, j As Double

d = ActiveWorkbook.Worksheets("Feuil1").Range("c1048576").End(xlUp).Row ' derniere cellule non vide de la colonne c

j = 3
While j <= d

Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Range ("B" & v & ":R" & z)
'Range("B2:r2,b5:r6")
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B" & j & ":R" & j + 1), PlotBy _
:=xlRows
ActiveChart.ChartType = xlLine
' ActiveChart.Location Where:=xlLocationAsNewSheet 'Si tu veux le graphique sur une feuille Graphique
ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1" '* "Feuil1" = 6 caractères. Sur la feuille

With ActiveChart 'Pour le nom
Graph1 = Right(.Name, Len(.Name) - 6) '* 6 caractères
End With

With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = Range("$a" & j)
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With

Dim xRg As Range
Dim xChart As ChartObject



Set xRg = Range("S" & j & ":X" & j + 1)
Set xChart = ActiveSheet.ChartObjects(Range("$a" & j))
With xChart
.Top = xRg(Range("$a" & j)).Top
.Left = xRg(Range("$a" & j)).Left
.Width = xRg.Width
.Height = xRg.Height


End With


j = j + 2
Wend



End Sub
 

Pièces jointes

  • solu.xlsm
    19.5 KB · Affichages: 3

xUpsilon

XLDnaute Accro
Re,

Non mais ce que je veux dire c'est que dans le code ici on appelle la feuille "Feuil1", sauf que dans le document que tu nous as transmis le code appelle une autre feuille que ça (qui n'existe pas dans le fichier en question). Du coup forcément ça ne fonctionne pas.

Qu'est ce qui ne te va pas ?

Bonne continuation
 

Lionel7918e

XLDnaute Nouveau
Re,

Non mais ce que je veux dire c'est que dans le code ici on appelle la feuille "Feuil1", sauf que dans le document que tu nous as transmis le code appelle une autre feuille que ça (qui n'existe pas dans le fichier en question). Du coup forcément ça ne fonctionne pas.

Qu'est ce qui ne te va pas ?

Bonne continuation
Oui je vois ce que tu veut dire je travaillais sur un fichier en entreprise avec des données confidentielles donc j'ai le copier copier collé en changent les donnée mais en gardant le même forme du tableau...

Bref mon problème c'est que je veut positionner plusieurs graphique dans la plage de S:X sur des ligne différente, c'est des graphique en dessous de l'autre j'ai essayer de créer une variable dans le positionnement mais excel le refuse
 

Lionel7918e

XLDnaute Nouveau
j'ai mit en pièce jointe l'endroit qui me bloque pour le positionnement pour le graphique 1 sa fonctionne mais pour le graphique 2 sa va l'empiler sur le premier graphique. j'ai également encadrer en rouge sur l'endroit ou je veut qu'appairraisse mon deuxième graphique. j'ai essaye de creer une boucle avec for disant :
Dim xRg As Range
Dim xChart As ChartObject
Dim w As Double
For w = 1 To 60

Set xRg = Range("S" & j & ":X" & j + 1)
Set xChart = ActiveSheet.ChartObjects(w)
With xChart
.Top = xRg(w).Top
.Left = xRg(w).Left
.Width = xRg.Width
.Height = xRg.Height


End With
Next
end sub
mais sa ne fonctione toujours pas
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    49.9 KB · Affichages: 15
  • solu.xlsm
    22.2 KB · Affichages: 3

xUpsilon

XLDnaute Accro
Dans ta boucle que tu me donnes ici tu insères une variable j pour te décaler dans tes ranges, sauf que tu ne boucles pas ce j, du coup forcément tout va s'empiler.

Je n'ai pas tellement le temps de regarder plus loin, je te redis demain si j'ai un peu plus de temps, mais regarde du coté de variables telles que ce j qui ne seraient pas bien utilisées.

Bonne continuation
 

Discussions similaires

Réponses
1
Affichages
122
Réponses
0
Affichages
83