Macro vba
Résoluvoila je vous joins ce petit bout de programme pour que vous m'expliquer ce qui cloche
en fait le probleme c'est qu'il ne me fait pas le graphique pour la derniere valeur de la colonne
je ne sais pas si je suis claire...
merci!
Dim col, col1, nbf As String
nbf = nb - 1
col = "R1C" & nbf
col1 = "R2C" & nbf
ActiveSheet.ChartObjects("Chart 37").Activate
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).Formula = _
"=SERIES(Item_per!R2C1,Item_per!R1C2:" & col & ",Item_per!R2C2:" & col1 & ",1)"
ActiveChart.Axes(xlCategory).Select
With ActiveChart.Axes(xlCategory)
.MajorUnit = 21
End With
28 réponses
Un problème de graphique Excel en VBA empêche d'afficher la dernière valeur de la colonne dans une série, alors que le reste des valeurs et la configuration des axes semblent corrects. Des suggestions portent sur le calcul précis du nombre de colonnes et l'utilisation des plages (R1C2 et R2C2) dans la formule SERIE, tout en évitant les sélections répétées et en alignant la série sur Item_per. Pour finir, ne pas utiliser .Select et adopter une version qui calcule nb via une colonne déterminante puis ajuste la plage de données et l'axe des catégories, ce qui améliore la stabilité et le rendu.
-
merci pour vos réponse et votre patience ca a l'air de marcher meme si certains graph n'apparaissent pas je vais regarder de plus près
merci! -
merci pour votre aide et votre patience ca marche maintenant!
-
Re-,
recopie le code que j'ai fourni à 16H03, et essaie...
Bon courage -
je n'ai pas compris ce que je dois changer?
-
Re-,
Non, non, les valeurs sont bien dans l'autre onglet.....
Il faut donc faire référence à l'onglet "Item_per", pour les valeurs "source", et à l'onglet "ItemCheck" pour le graphique....
Bonne soirée -
Salut Mytå...
Effectivement, mais le souci, c'était le nom de l'onglet.....
Le nom du graphique était le bon....
Cependant, c'est également une alternative intéressante
Merci et Bonne soirée -
ContributeurRe le forum
CousinHub, pour ne pas avoir de problème avec le nom du graphique.
Set Cht = Sheets("ItemCheck").ChartObjects(1).Chart
Mytå -
Re-,
Alors, ta dernière valeur apparaissait, mais comme la valeur est petite au vu de l'échelle, on ne la voyait pas...
De plus, ton graphique n'était pas sur l'onglet "Item_per", mais dans l'onglet "ItemCheck"...
Essaie ce code :
Sub code_pour_vba() Dim Col As String, Col1 As String Dim Nb As Integer Dim Cht As Chart Dim ValMax As Long Set Cht = Sheets("ItemCheck").ChartObjects("Chart 37").Chart ValMax = Application.Max(Sheets("Item_per").Rows(1)) Nb = Range("IV1").End(xlToLeft).Column Col = "R1C" & Nb Col1 = "R2C" & Nb With Cht With .SeriesCollection(1) .Formula = _ "=SERIES(Item_per!R2C1,Item_per!R1C2:" & Col & ",Item_per!R2C2:" & Col1 & ",1)" End With With .Axes(xlCategory) .MaximumScale = ValMax + 21 .MajorUnit = 21 End With End With End Sub
Bon courage -
http://www.cijoint.fr/cjlink.php?file=cj201008/cijlMRGVmr.xls
désoléé -
Re-,
Si tu as effectivement copié l'onglet, je ne vois pas de graphique.....
Es-tu sûre que le graphique est bien sur cet onglet? (il aurait du apparaître....)
@ te relire -
voila le lien je ne sais pas si cela va vous aider
merci
http://www.cijoint.fr/cjlink.php?file=cj201008/cijYBef3B0.xls -
Re-,
Euh, Item, ou item (attention à l'orthographe, majuscule, minuscule, espaces avant ou après......)
Sinon, pour le fichier, juste l'onglet, avec des données bidons, cela suffit....
Tu fais un clic droit sur l'onglet, "Déplacer", "Dans le classeur : Nouveau Classeur"
Modifie les données, les noms, etc......
Enregistre, et si tu peux l'envoyer, ce sera bien plus facile....
Vérifie également que le graphique s'appelle bien "Chart 37"
Pour ce faire, démarre l'enregistreur de macro, sélectionne le graphique, et stoppe l'enregistreur...
Dans VBE, regarde le code généré, et note le nom du graphique
Bon courage -
oui c'est bien item_per
-
Re-,
en relisant, j'ai peut-être mal déterminé l'onglet qui contient le graphique....
Vérifie le nom de l'onglet (j'ai supposé, sans doute à tort, qu'il était dans l'onglet "Item_per")
Modifie le nom de l'onglet dans cette ligne :
Set Cht = Sheets("Item_per").ChartObjects("Chart 37").Chart
Pour voir... -
ce sont des données que je ne peux pas mettre sur internet désolée
merci pour ton aide en tous cas!-
ContributeurSalut le forum
Excusez mon intrusion
Épure le fichier des données confidentielles et envoi la structure avec ta macro.
Pour joindre un fichier, tu crèes un lien à l'aide de
https://www.cjoint.com/ ou de http://cijoint.fr/ et tu
recopies le lien dans ton prochain message.
Mytå
-
-
Re-,
Je te propose de joindre ton fichier, avec des données bidons, mais les vrais dates, en utilisant un de ces sites :
www.cjoint.fr
www.cijoint.fr
colles le lien qu'on te donne dans ta réponse, on va voir ce qu'on peut faire -
merci!
J'ai l'erreur impossible de lire la propriété ChartObjects de la classe worksheet
?? -
Re-,
Essaie ce code (je n'utilise pas les .Select, comme tu peux le remarquer...)
Sub code_pour_vba() Dim Col As String, Col1 As String Dim Nb As Integer Dim Cht As Chart Dim ValMax As Long Set Cht = Sheets("Item_per").ChartObjects("Chart 37").Chart ValMax = Application.Max(Rows(1)) Nb = Sheets("Item_per").Rows("1:2").Find("*", , , , xlByColumns, xlPrevious).Column Col = "R1C" & Nb Col1 = "R2C" & Nb With Cht With .SeriesCollection(1) .Formula = _ "=SERIES(Item_per!R2C1,Item_per!R1C2:" & Col & ",Item_per!R2C2:" & Col1 & ",1)" End With With .Axes(xlCategory) .MaximumScale = ValMax .MajorUnit = 21 End With End With End Sub
Uniquement valable, si les dates sont dans la 1ère ligne...
Bon courage -
les dates sont bien dans la premiere ligne et la date max est le 29/03/2009
que dois-je changer?
désolée et merci! -
Re-,
Et la date, dans la dernière colonne, est-elle supérieure au 29/03/2010?
Si oui, modifie la valeur max...
Nota, les dates sont-elles dans la 1ère ligne?
Si oui, on peut également modifier la valeur max de l'échelle par ce même code, démarre l'enregistreur de macro lorsque tu fais cette opération
- 1
- 2