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 :

Macro générique VBA [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut Macro générique VBA
    Bonjour,
    J'ai un certain nombre de tableaux dans un certain nombre d'onglet. Je dois réaliser des graphiques pour chaque tableau.
    Le but est de réaliser une macro me permettant d'automatiser la création des graphiques pour chaque tableau.

    Exemple de tableau

    1 547132435
    2 46876541
    3 23498977
    5 9987541269
    4 216378777

    A 1 61,54%
    2 38,46%
    3 0,00%
    5 0,00%
    4 0,00%
    B 1 100,00%
    2 0,00%
    3 0,00%
    5 0,00%
    4 0,00%
    C 1 71,43%
    2 19,05%
    3 4,76%
    5 4,76%
    4 0,00%
    D 1 0,00%
    2 88,89%
    3 11,11%
    5 0,00%
    4 0,00%
    E 1 100,00%
    2 0,00%
    3 0,00%
    5 0,00%
    4 0,00%
    F 1 43,58%
    2 31,52%
    3 17,90%
    5 3,50%
    4 3,50%
    H 1 33,33%
    2 33,33%
    3 33,33%
    5 0,00%
    4 0,00%

    Le nombre de lignes dans composant mes tableaux ne sont pas fixes.

    Hélas je ne suis pas expert en vba.
    J'avais opté pour une solution qui me paraissait simple : utiliser l'enregistreur de macro et le remixer à ma sauce, mais cela n'a pas fonctionné.
    I need you !

  2. #2
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    Bonjour,
    s'inspirer de ces quelques lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      Set ch = Worksheets(nomFeuille).ChartObjects(sh.ChartObjects.Count).Chart
     
      ch.SetSourceData Source:=Worksheets(nomFeuille).Range(zoneData)
      ch.SeriesCollection(1).XValues = Worksheets(nomFeuille).Range(zoneLibelle)
      ch.HasTitle = True
      ch.ChartTitle.Text = TitreGraphe
    nomFeuille, zoneData, zoneLibelle et TitreGraphe étant des variables, il suffit de les modifier pour changer de feuille et de données

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut
    Bonjour,
    Tout d'abord, merci de m'avoir répondu.
    Je voudrais savoir ce que représente la variable "zoneLibelle" et avoir un peu d'info sur SeriesCollection(1).XValues.
    Merci

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut
    C'est bon j'ai fini par y arriver.
    Pour créer un secteur 3D :
    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
     
    Public Sub Secteur_3D(CDebut As Integer, CFin As Integer, LDebut As Integer, LFin As Integer, Onglet As String, Titre As String, Sheet As String, monfichier As String)
        Workbooks(monfichier).Sheets(Sheet).Activate
        Range(Workbooks(monfichier).Sheets(Sheet).Cells(LDebut, CDebut), Workbooks(monfichier).Sheets(Sheet).Cells(LFin, CFin)).Select
        Charts.Add
        ActiveChart.ChartType = xl3DPieExploded
        ActiveChart.SetSourceData Source:=Workbooks(monfichier).Sheets(Sheet).Range(Workbooks(monfichier).Sheets(Sheet).Cells(LDebut, CDebut), Workbooks(monfichier).Sheets(Sheet).Cells(LFin, CFin)), _
            PlotBy:=xlColumns
        ActiveChart.Location Where:=xlLocationAsNewSheet, Name:= _
            Onglet
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = Titre
        End With
    End Sub
    Cdebut est le numéro de colonne de début du tableau où extraire les données
    Cfin est le numéro de colonne de fin du tableau où extraire les données
    Ldebut est le numéro de ligne de début du tableau où extraire les données
    Lfin est le nuémro de ligne de début du tableau où extraire les données
    Sheet est le nom de la feuille où se trouvent mes données à extraire
    monfichier est le nom du fichier dans lequel se trouve les feuilles où se trouvent les données à extraire
    Onglet est la feuille sur laquelle le graphique va s'ajouter
    Titre est le titre du graphique

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

Discussions similaires

  1. besoin d'aide pour macros ou VBA
    Par jmsor dans le forum VBA Access
    Réponses: 1
    Dernier message: 07/02/2007, 18h41
  2. macro excel vba
    Par fildupa dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/12/2006, 21h29
  3. Demarrer une Macro/Appli VBA sans paser par les feruilles Excel
    Par size_one_1 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 08/12/2006, 21h23
  4. execute une macro via vba sous access
    Par nes dans le forum Access
    Réponses: 4
    Dernier message: 28/03/2006, 23h15
  5. Réaliser une macro en VBA pour excel afin de créer un graphe
    Par xavier le breuil dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/12/2005, 14h41

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