Excel - incrémentation dans macro

Résolu
Bonjour à tous,

voici mon souci :

Je suis en train d'alimenter un graph à points avec des données.

Je souhaite le faire par macro car j'ai beaucoup de série.

les données sources sont des cellules ou se trouve une source "construite" (pour être dynamique, à la façon Indirect quoi...)

Voici ma macro. Elle fonctionne bien.

-----------

Sub Import_Séries()

Worksheets("Graph").ChartObjects("Chart 2").Activate

ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(5).Name = Worksheets("Références graph").Range("D10").Value
ActiveChart.SeriesCollection(5).XValues = Worksheets("Références graph").Range("D11").Value
ActiveChart.SeriesCollection(5).Values = Worksheets("Références graph").Range("D12").Value

ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(6).Name = Worksheets("Références graph").Range("D13").Value
ActiveChart.SeriesCollection(6).XValues = Worksheets("Références graph").Range("D14").Value
ActiveChart.SeriesCollection(6).Values = Worksheets("Références graph").Range("D15").Value

ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(7).Name = Worksheets("Références graph").Range("D16").Value
ActiveChart.SeriesCollection(7).XValues = Worksheets("Références graph").Range("D17").Value
ActiveChart.SeriesCollection(7).Values = Worksheets("Références graph").Range("D18").Value

ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(8).Name = Worksheets("Références graph").Range("D19").Value
ActiveChart.SeriesCollection(8).XValues = Worksheets("Références graph").Range("D20").Value
ActiveChart.SeriesCollection(8).Values = Worksheets("Références graph").Range("D21").Value

End Sub

-------

Je souhaiterai incrémenter les colonnes dans cette macro (les lignes ne doivent pas s'incrémenter par contre)

les colonnes ou se trouve les données sont donc : "D" (déjà réalisé dans la macro ci-dessus) et :

F
H
J
L
N
P
R

Voila cela eviterai de recopier la marco ci-dessus 7 fois de plus en changeant juste le numéro de nouvelle série et la référence de la colonne.

Si vous pouvez m'aider c'est cool (ou me mettre sur la piste) !!!!

MErci!!!

5 réponses

  1. Merci michel, cela devient limpide !

    ... et j'aime bcp ta blagounette de fin !

    Merci
    Olive
    0
    1. Merci Michel, c'est clair.

      Question : a quoi correspond le nombre 5 de la "seriescollection". Doit il s'incrémenter aussi?

      Merci
      0
      1. Contributeur
        , je sais pas trop : essaies 1 incrémentation et regarde le résultat réel graphique... Si c'est sur le m^me graphique comme tu semble le dire il faut incrémenter la série aussi...ce que ne comprend pas c'est pourquoi tu commences à la série 5
        Si D correspond à la premiere série (1)

        ActiveChart.SeriesCollection.NewSeries
        
        ActiveChart.SeriesCollection(5).Name = Worksheets("Réfé/code>
        serie
        
        en relisant ton sujet 
        écrire plutôt
        <code>For cptr=4 to 18 step 2 
        (puisque tu passes de D à F et de F à H)

        donc

        serie=1
        For cptr=4 to 18 step 2

        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(serie).Name = Worksheets("Références graph").cells(10,cptr)
        ActiveChart.SeriesCollection(serie).XValues = Worksh....
        ActiveChart.SeriesCollection(serie).Values = Workshe....

        serie=serie+1
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(serie).Name = Worksheets("Références graph").cells(13,cptr)
        ActiveChart.SeriesCollection(serie).XValues = Worksheets("Ré....
        ActiveChart.SeriesCollection(serie).Values = Workshe....

        serie=serie+1

        etc
        next

        enfin pour éviter des clignotement de l'écran (on n'est pas à Las Vegas) en début de macro
        application.screenupdating=false
        
        0
    2. Merci pour vos réponses très claires.

      Ok pour l'incrémentation des colonnes (je comprends le système, maintenant je vais essayer de le faire !)...

      Mais pour le numéro de série ?

      et comment arrêter le compteur?
      0
      1. Contributeur
        For cptr=4 to 11 'par exemple 11=K

        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(5).Name = Worksheets("Références graph").cells(10,cptr)
        ActiveChart.SeriesCollection(5).XValues = Worksheets("Références graph").cells(11,cptr)
        ActiveChart.SeriesCollection(5).Values = Worksheets("Références graph").cells(12,cptr)

        .....

        next
        0
    3. bonjour
      une solution : reférencer les cellule avec le style R1C1 (R pour ligne et C pour colonne)
      ex Range("A3") devient Range("R3C1")
      on peut faire Range("R "& lig & "C" & col) ou lig et col sont des varailes
      et donc incrementer ...
      une autre solution utiliser les code ASCII de la colonne 65 pou A 66 pour B etc ... et la fonction chr(code)
      bonne suite
      0
      1. Contributeur
        Bonjour

        au lieu de
        range("D10")
        essaies
        cells(10,cptr)
        où cptr est ton compteur d'incrémentation (D=4.....Z=26..)
        Michel
        Vous programmez en VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...(P. Fauconnier/dvp)
        1