Macro vba

Résolu/Fermé
vba - 30 août 2010 à 10:55
 vba - 30 août 2010 à 22:23
Bonjour,

voila 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










A voir également:

28 réponses

cousinhub29 Messages postés 985 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 9 janvier 2025 349
30 août 2010 à 12:00
Bonjour,

Il me semble qu'il manque la première partie de ton code, car dans ce que tu montres, on ne sait pas à quoi correspond nb....

@ te relire
0
désolée! et merci



'compte le nombre de colonne dans item_per
Dim marca3 As Integer
Dim nb As Integer
marca3 = 1
nb = 1
Do While (marca3 <> 0)
var12 = Cells(1, nb).Value

If var12 = "" Then
marca3 = 0
Else
nb = nb + 1
End If
Loop
0
cousinhub29 Messages postés 985 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 9 janvier 2025 349
Modifié par cousinhub29 le 30/08/2010 à 12:29
Re-,

Afin de déterminer le nombre de colonnes, tu peux essayer ainsi :

nb = Range("IV1").End(xlToLeft).Column


Et dans le restant de ton code, nbf est inutile, utilise nb (si tu retranches 1, il te manquera effectivement la dernière colonne...)

Bonne journée
0
merci pour ton aide,j'ai essayé de remplacer par nb mais il me manque toujours le graph de la derniere valeur de la colonne

merci!
0

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

Posez votre question
cousinhub29 Messages postés 985 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 9 janvier 2025 349
30 août 2010 à 13:02
Re-,

Tu as bien un en-tête, dans ta dernière colonne? (ligne 1)

Essaie avec ce code :

Dim Col As String, Col1 As String
Dim Nb As Integer

Nb = Sheets("Item_per").Rows("1:2").Find("*", , , , xlByColumns, xlPrevious).Column
Col = "R1C" & Nb
Col1 = "R2C" & Nb

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


Bon courage
0
merci! mais j'ai toujours le meme problème il me manque la derniere valeur de ma colonne

merci quand meme!
0
cousinhub29 Messages postés 985 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 9 janvier 2025 349
30 août 2010 à 13:49
Re-,

Euh, as-tu vérifié l'échelle de tes axes? (double-clic sur les axes, onglet "échelle")

Pour voir
0
je dois changer quelque chose?
dans cet onglet le min (08/04/2007)le max (29/03/2009)st cochés et l'unité principale est a 21 la secondaire a 1 l'axe des ordonnées y coupe a (08/04/2007)

j'ai oublié de dire que j'etais novice et que je "répare" cette macro

merci!
0
cousinhub29 Messages postés 985 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 9 janvier 2025 349
30 août 2010 à 14:09
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
0
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!
0
cousinhub29 Messages postés 985 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 9 janvier 2025 349
30 août 2010 à 14:21
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
0
merci!

J'ai l'erreur impossible de lire la propriété ChartObjects de la classe worksheet

??
0
cousinhub29 Messages postés 985 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 9 janvier 2025 349
30 août 2010 à 14:33
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
0
ce sont des données que je ne peux pas mettre sur internet désolée
merci pour ton aide en tous cas!
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 950
30 août 2010 à 15:17
Salut 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å
0
cousinhub29 Messages postés 985 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 9 janvier 2025 349
30 août 2010 à 15:05
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...
0
oui c'est bien item_per
0
cousinhub29 Messages postés 985 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 9 janvier 2025 349
30 août 2010 à 15:21
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
0
voila le lien je ne sais pas si cela va vous aider
merci
http://www.cijoint.fr/cjlink.php?file=cj201008/cijYBef3B0.xls
0
cousinhub29 Messages postés 985 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 9 janvier 2025 349
30 août 2010 à 15:38
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
0
http://www.cijoint.fr/cjlink.php?file=cj201008/cijlMRGVmr.xls

désoléé
0