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 :

Graphique à source variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 126
    Par défaut Graphique à source variable
    Bonjour,
    Je voudrais réaliser un graphique dont les données varient régulierement.

    Parfois mon graphique aura les cellules B1 à B10 comme données à afficher en fonction de A1 et A10 (respectivements...)
    D'autres fois de A1 à A100 et B1 à B100.
    Comment programmer cela?

    D'avance merci pour votre aide!

    Voici mon code :

    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
    Sub Macro5()
    
        Range("A30:F43").Select
        Range("F30").Activate
        Selection.Sort Key1:=Range("F30"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        Charts.Add
        ActiveChart.ChartType = xlLineMarkers
        ActiveChart.SetSourceData Source:=Sheets("EtudeSpread").Range("E30:E43"), _
            PlotBy:=xlColumns
        ActiveChart.SeriesCollection(1).XValues = "=Etude!R30C6:R200C6"
        ActiveChart.SeriesCollection(1).Values = "=Etude!R30C5:R200C5"
        ActiveChart.Location Where:=xlLocationAsObject, Name:="EtudeSpread"
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = "Spread VS rating"
            .Axes(xlCategory, xlPrimary).HasTitle = False
            .Axes(xlValue, xlPrimary).HasTitle = False
        End With
        Application.Run "BLPLinkReset"
        ActiveSheet.Shapes("Chart 9").IncrementLeft 426#
        ActiveSheet.Shapes("Chart 9").IncrementTop -2022.75
    End Sub
    Il faudrait que le passage en gras devienne variable mais je ne sais pas comment faire

    Je pense qu'il faudrait implémente un truc du genre au début :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Range("A1").Select
    nb = Selection.End(xlDown).Row
    et ensuite dans les éléments en gras du graphique aller de la cellule A1 à la cellule Anb (ou nb = dernier nombre)
    et meme procédure pour la colonne B

    Mais comment coder cela?

  2. #2
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    Tu peux faire varier la longueur de la colonne sans problème en automatique pour le nombre de série je ne sais pas
    dans insertion nom définir

    dans le champs du haut ma_serie (c'est un exemple )
    dans le champ du bas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     =decaler(feuilX!$a1;1;0;nbval(feuilX!$a:$a)-1;1)
    le moins 1 si tu as en a1 une cellule titre
    la formule va nommer ma_serie la zone définie par la fonction decaler
    si tu rouvres insertion nom definir
    tu sélectionnes ma_serie et tu pointes la formule la zone est sélectionnée par un encadrement pointillé

    bon on a édité en même temps et ça change tout

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 126
    Par défaut
    En effet on a édité en meme temps!
    Du coup je vois pas trop comment fonctionne ce que tu suggères...

  4. #4
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ActiveWorkbook.Names.Add Name:="Plage", RefersToR1C1:="=Feuil1!R1C1:R" & lig & "C31"
    ceci ajoutera le nom 'Plage' dans la liste des noms du classeur s'étendant de A1 à AE lig. lig étant la variable ligne

    l'insertion des noms ou des plages nommées est une fonction de la feuille de calcul la fonction décaler permet de la rendre adaptative le code que je t'ai rajouté permet de rentrer une plage nommées par VBA

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 126
    Par défaut
    Ah super j'avais pas pensé à nommer ça en plage !!!!!!
    J'utilise jamais les plages (je sais, c'est mal )

    Du coup, comment on met le nom de la plage dans mon code?

  6. #6
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    Ah oui c'est vrai que pour nommer une plage dans un graphique c'est encore une M..icrosofterie pas piquée des vers
    valeur en x= nom_du_classeur.xls!ma_serie
    je te conseille d'ailleurs pour faire les essais des graphique avec seris nommées de renommer le classeur en A.xls et de construire le nom en VBA avec le contenue d'une cellule
    et merde mon clavier viens de basculer en qwerty
    tu changes le nom a l'enregistrement
    a=q '=u accent m=virgule Oh putain que c'est chiant
    j'essaie de me remettre d'aplomb

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 126
    Par défaut
    Oula le QWERY a été fatal! Je capte pas un choux là comme on dit dans le sud ;-)


    Pour régler mon problème j'ai besoin de deux choses :
    - nommer une plage
    - in sérer dans ce code le nom de la plage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ActiveChart.SeriesCollection(1).XValues = "=Etude!R30C6:R200C6"
        ActiveChart.SeriesCollection(1).Values = "=Etude!R30C5:R200C5"

Discussions similaires

  1. la source d'un graphique comme variable?
    Par bigmousse69 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/01/2009, 02h28
  2. Créer un graphique avec des données sources variables
    Par Tom1402 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/12/2008, 18h19
  3. VBA Création de graphique avec source variable
    Par Romain57000 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/10/2008, 18h34
  4. Représentation graphique de variable
    Par Ptinéwik dans le forum MATLAB
    Réponses: 9
    Dernier message: 04/01/2008, 17h32
  5. SSIS : foreach loop avec Répertoire source variable ?
    Par kaboume dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 04/08/2006, 15h42

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