Macro vba

Résolu
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

28 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

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.

Bobot (l’IA à votre service)
  1. 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!
    1. Re-,

      recopie le code que j'ai fourni à 16H03, et essaie...

      Bon courage
      1. 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
        1. 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
          1. Contributeur
            Re le forum

            Si le nom de la feuille peut changer selon l'humeur du responsable :)

            Set Cht = Activesheet.ChartObjects(1).Chart

            et

            ValMax = Application.Max(Activesheet.Rows(1))

            Tu as oublié de modifier cette ligne
            "=SERIES(Item_per!R2C1,Item_per!R1C2:" & Col & ",Item_per!R2C2:"

            Mytå
        2. Contributeur
          Re le forum

          CousinHub, pour ne pas avoir de problème avec le nom du graphique.

          Set Cht = Sheets("ItemCheck").ChartObjects(1).Chart

          Mytå
          1. 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
            1. http://www.cijoint.fr/cjlink.php?file=cj201008/cijlMRGVmr.xls

              désoléé
              1. 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
                1. voila le lien je ne sais pas si cela va vous aider
                  merci
                  http://www.cijoint.fr/cjlink.php?file=cj201008/cijYBef3B0.xls
                  1. 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
                    1. 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...
                      1. ce sont des données que je ne peux pas mettre sur internet désolée
                        merci pour ton aide en tous cas!
                        1. Contributeur
                          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å
                      2. 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
                        1. merci!

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

                          ??
                          1. 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
                            1. 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!
                              1. 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