IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Série de cellules non contigues dans graphique [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 49
    Points
    49
    Par défaut Série de cellules non contigues dans graphique
    Bonjour,

    A partir d'un fichier comprenant beaucoup de données j'ai une macro qui génère 2 onglets selon l'exemple joint à ce message.
    Mon problème se situe dans la création du graphique.

    Si je définis ma 1ère série de données selon le code ci-dessous cela fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set Plage1 = Sheets("Historique annuel").Range("B3,E3,H3")
     
    ActiveChart.SeriesCollection(1).Values = Plage1
    Lorsque nous serons en 2014 ma plage1 deviendra Range("B3,E3,H3,K3) et ainsi de suite chaque fois qu'on changera d'année.

    Je sais identifier la dernière colonne à l'aide du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerColonne = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    DerColonne est une valeur numérique qui me permettrait de faire une boucle pour créer ma plage mais je n'arrive pas à utiliser la syntaxe avec "Cells" pour définir ma plage et à ma connaissance on ne peut pas boucler de B à K modulo 3 par exemple.

    La finalité que je recherche est que l'utilisateur choisit le client dans la cellule A1 et que le graphique s'actualise.

    Quelqu'un(e) a peut-être une solution, idée ou piste à me proposer.

    Remerciant par avance tous ceux qui pourraient m'apporter leur aide.

    Amicalement
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Une piste parmi d'autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    Sub Colonne()
     
        Dim DerCol As Integer
        Dim Ligne As Long
     
        Ligne = 1
     
        With Worksheets("Feuil1")
     
            DerCol = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
     
        End With
     
        'défini la lettre correspondante au n° de colonne
        Select Case DerCol
     
            Case 1 To 26
                MsgBox Chr(DerCol + 64) & Ligne
     
            Case 27 To 52
                MsgBox Chr(65) & Chr(38 + DerCol) & Ligne
     
            Case 53 To 78
                MsgBox Chr(66) & Chr(12 + DerCol) & Ligne
     
            Case 79 To 104
                MsgBox Chr(67) & Chr(-14 + DerCol) & Ligne
     
            'etc...
     
        End Select
     
        'ici l'adresse
        MsgBox Cells(1, DerCol).Address(0, 0)
     
    End Sub
    Hervé.

  3. #3
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 487
    Points : 16 389
    Points
    16 389
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DerColonne = Worksheets("Historique annuel").Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    For i = 2 To DerColonne Step 3
        maplage = maplage & IIf(i > 2, ",", "") & Chr(i + 64) & "3"
    Next i
    Set Plage1 = Sheets("Historique annuel").Range(maplage)
    Edit : oups : Theze a été plus rapide

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    J'ai opté pour le code de Chris qui, avec mes 3 colonnes par année, me permettra d'arriver en 2018.
    Je vais également tenter de ne pas oublier la proposition d'Hervé pour des cas où je dépasserai la colonne "Z".

    Bon week-end à vous.
    Daniel

  5. #5
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Re,

    Une façon plus simple (pourquoi toujours faire compliqué ???), avec la fonction Split pour récupérer la ou les lettres de colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Sub Colonne()
     
        Dim DerCol As Integer
        Dim Ligne As Long
     
        Ligne = 1
     
        With Worksheets("Feuil1")
     
            DerCol = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
     
        End With
     
        MsgBox Split(Cells(Ligne, DerCol).Address(1, 1), "$")(1)
     
    End Sub
    Hervé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] trouver la dernière cellule d'une plage de cellules non contigues.
    Par henripec dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/09/2009, 01h16
  2. Camembert avec série de cellules non contigues
    Par melouille56 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/10/2008, 18h36
  3. Recherche de cellules non vides dans une colonne
    Par John81 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 05/09/2008, 22h57
  4. Réponses: 5
    Dernier message: 22/02/2008, 19h34
  5. Réponses: 3
    Dernier message: 20/02/2006, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo