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

VBA Access Discussion :

Boucle sur les objets chart dans Userform [AC-2002]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 40
    Points : 34
    Points
    34
    Par défaut Boucle sur les objets chart dans Userform
    Bonjour,

    J'ai une routine qui applique le meme formattage sur chaque graphe MS Access d'un userform.
    aujourd'hui je suis oblige d'appliquer la routine par graphe en specifiant le nom de chaque graphe.

    J'aimerai faire une boucle sur tous les objets graphiques et je ne sais comment faire, j'ai essaye de le faire sur tous les controles de la user form mais VB me renvoie le type comme "Object Frame" pour les graphe et quand je donne une prporpriete a modifier il me renvoi l'erreur habituelle "Object or proprity not found".

    Quelqu'un a une idee ?

    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Bonjour,
    J'ai une routine qui applique le meme formattage sur chaque graphe MS Access d'un userform.
    aujourd'hui je suis oblige d'appliquer la routine par graphe en specifiant le nom de chaque graphe
    tu n'en dis pas assez pour qu'on t'aide : quelle version d'access, quel est le code de ta routine et dans cette routine , que veux-tu personnaliser ?

    "Always look at the bright side of life." Monty Python.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 40
    Points : 34
    Points
    34
    Par défaut
    Voila mon code aujourd'hui:
    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
    38
    39
    40
    41
    42
     
    Private Sub Form_Load()
     
     
    ' ....... valeur par default de tous les objets .....
     
    CurrentForm = Me.Name
     
    Me.Chart_oil_corp.RowSource = CurrentForm & "_oildata"
    Me.Chart_Gas_Sales.RowSource = CurrentForm & "_gassalesdata"
    Me.Chart_gas_production.RowSource = CurrentForm & "_gasproddata"
     
    'appelle de la mise en forme de base des graphs
     
    Call MefGraph.mefgraphCorp(Me.Chart_oil_corp)
    Call MefGraph.mefgraphCorp(Me.Chart_gas_production)
    Call MefGraph.mefgraphCorp(Me.Chart_Gas_Sales)
     
     
    End Sub
     
    'dans un autre module
     
    Public Sub mefgraphCorp(Mychart As Object)
     
    'setting de l'apparence par des fauts des bar charts
     
      'chart area settings
        Mychart.ChartArea.Border.LineStyle = xlNone
        Mychart.ChartArea.Interior.ColorIndex = xlNone
     
        'Plotarea XY
        Mychart.PlotArea.Left = 72 / 10 'point
        Mychart.PlotArea.Top = 72 / 10 'point
     
        'Axis general
        Mychart.HasAxis(xlCategory, xlPrimary) = True
        Mychart.HasAxis(xlValue, xlPrimary) = True
     
    'etc..............
     
    End sub
    et voila vers quoi je veux tendre, un truc du genre
    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
    Private Sub Form_Load()
     
     
    ' ....... valeur par default de tous les objets .....
     
    CurrentForm = Me.Name
     
    Me.Chart_oil_corp.RowSource = CurrentForm & "_oildata"
    Me.Chart_Gas_Sales.RowSource = CurrentForm & "_gassalesdata"
    Me.Chart_gas_production.RowSource = CurrentForm & "_gasproddata"
     
    'appelle de la mise en forme de base des graphs
     
    Dim mygraph as Object
     
    For Each Mygraph in Me.Collection_des_graphs
     
    Call MefGraph.mefgraphCorp(Mychart)
     
    Next Mychart
    End Sub

    Une idee pour le type de collection a mettre ?


    Merci

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Pourquoi vouloir à tout prix utiliser une collection ? je n'en vois pas l'usage
    par contre je ferais une fonction de mise en forme complète du graphe quitte à passer davantage d'arguments

    dans le form_load :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Form_Load()
     
    'appelle de la mise en forme de base des graphs
     
    Call MefGraph.MefCompleteGraph( Me.Chart_oil_corp, me.name & "_oildata")
    Call MefGraph.MefCompleteGraph(Me.Chart_Gas_Sales, me.name & "_gassalesdata")
    Call MefGraph.MefCompleteGraph(Me.Chart_Gas_Gas,me.name &  "_gasproddata")
     
    End Sub
    et MefCompleteGraph serait de la forme de mefgraphCorp, mais complété :
    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
     
    Public Sub MefCompleteGraph (ByRef Mychart As Object, ByVal QryName as string)
     
    Mychart.RowSource = QryName 
        Mychart.Requery    ' => je ne l'ai pas encore vu dans ton code
     
    'ensuite ton code
    'setting de l'apparence par des fauts des bar charts
     
      'chart area settings
        Mychart.ChartArea.Border.LineStyle = xlNone
        Mychart.ChartArea.Interior.ColorIndex = xlNone
     
        'Plotarea XY
        Mychart.PlotArea.Left = 72 / 10 'point
        Mychart.PlotArea.Top = 72 / 10 'point
     
        'Axis general
        Mychart.HasAxis(xlCategory, xlPrimary) = True
        Mychart.HasAxis(xlValue, xlPrimary) = True
     
    'etc..............
     
    End sub
    est-ce que ça rejoint ton idée ?
    "Always look at the bright side of life." Monty Python.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 40
    Points : 34
    Points
    34
    Par défaut
    merci mais j'ai une réserve à ce que tu me proposes car cette mise en forme par defaut des graphes joue uniquement sur certains paramètres. elle sera réutilisée par la suite dans d'autres formulaires. c'est pour cela que je pensais à l'appliquer à la collection d'objets graphiques

    pour compléter:
    ensuite, par formulaire, il y a une autre fonction qui ajuste d'autres paramètres par graphe comme les titres das axes suivant les valeurs d'une liste d'options spécifiques au formulaire en question.

    il y a également une dernière fonction qui ajuste la source données, car il y a quelques calculs intermédiaires c'est pour cela que le requery n'apparait pas ici.

    j'essaye donc au mieux de dissocier fonctions calculatoires et fonctions de mise en forme spécifique et de base pour toute l'appli.

    je vais néanmoins réfléchir à ta solution.

    la question de la collection d'objets graphiques reste néanmoins en suspens pour une prochaine fois

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    la question de la collection d'objets graphiques reste néanmoins en suspens
    si tous les contrôles des graphiques commencent par "chart" tu peux déjà faire une boucle sur les controles du formulaire et ne traiter que ceux qui commencent par "chart"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    For Each ctl In frm.Controls
    if left(ctl.name,5)="chart" then
    ...
    end if 
    next ctl
    "Always look at the bright side of life." Monty Python.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 40
    Points : 34
    Points
    34
    Par défaut
    Bon pour ta solution Micniv, meme si ce n'est pas ce que je recherchais precisement.

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

Discussions similaires

  1. Boucle sur les objets de la classe
    Par mactwist69 dans le forum VB.NET
    Réponses: 6
    Dernier message: 05/06/2014, 15h27
  2. [XL-2003] [VBA] Objet Chart dans Userform : déclaration des données ?
    Par CriCri98 dans le forum Excel
    Réponses: 2
    Dernier message: 18/08/2009, 16h08
  3. Réponses: 8
    Dernier message: 12/07/2008, 12h29
  4. Réponses: 5
    Dernier message: 24/04/2005, 04h09
  5. question de débutant sur les objets
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 06/08/2004, 10h51

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