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 :

[VBA-E] Selectionner un graphique via une liste déroulante


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 45
    Points : 35
    Points
    35
    Par défaut [VBA-E] Selectionner un graphique via une liste déroulante
    Bonjour j'explique mon problème:

    j'insère un graphique présent dans une feuille dans une userform en utilisant la méthode PastePicture:
    http://www.bmsltd.ie/Excel/SBXLPage.asp

    avec extrait du code qui nous intéresse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set oCht = Sheet3.chartObjects(1).chart
    ça marche pas de souçi, mon graphique 1 est sélectionné sur ma feuille sheet3 et il apparaît dans mon image userform après le copié-collé dans le pressepapier (je vous fait grâce du reste du code).

    ce qui m'ammène est sûrement plus simple:

    j'aimerai pouvoir, via une liste déroulante, lancer la private sub updatechart (ce qui fait afficher mon graphique et dont j'ai mis un extrait de code), sur le graphique sélectionné via cette liste.

    en gros je sélectionne via la liste graphique5 et l'instruction se fera sur ce graphique.

    Comment coder ma combobox?

    et comment gérer un graphique n'existant pas? (ex: je sélectionne graphique6 mais il n'existe pas, comment éviter de rentrer dans le déboggage?)


    euh j'espère avoir été à peu près clair... merci pour votre aide

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour


    comment gérer un graphique n'existant pas?
    En faisant apparaitre uniquement des graphiques existants dans la ComboBox ...
    Cet exemple initialise la ComboBox en listant les graphiques de la Feuil3


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_Initialize()
    Dim i As Byte
     
        'boucle sur les graphiques incorporés
        For i = 1 To Sheet3.ChartObjects.Count
            ComboBox1.AddItem Sheet3.ChartObjects(i).Chart.Name
        Next i
    End Sub


    Et tu peux ensuite utiliser l'évènement Change du ComboBox, pour définir l'image du graphique à visualiser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ComboBox1_Change()
        If ComboBox1.ListIndex <> -1 Then
            Sheet3.ChartObjects(ComboBox1.ListIndex + 1).CopyPicture xlScreen, xlPicture
            Set Image1.Picture = PastePicture(xlPicture)
        End If
    End Sub


    michel

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 45
    Points : 35
    Points
    35
    Par défaut
    hmmm, j'ai un souci vraissemblablement dû à l'userform_initialize

    "Erreur d'exécution '70':
    Accès refusé "

    :/

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    Tu peux préciser ce que tu as écrit dans ta procédure pour obtenir ce type d'erreur?


    michel

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 45
    Points : 35
    Points
    35
    Par défaut
    j'ai mis terme pour terme les codes donnés.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Initialize() 
    Dim i As Byte   
    'boucle sur les graphiques incorporés  
    For i = 1 To Sheet3.ChartObjects.Count  
    ComboBox1.AddItem Sheet3.ChartObjects(i).Chart.Name  
    Next i 
    End Sub
    et dans une routine Combobox1_Change()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    dim lPicType as long
     
    lPictType = IIf(obMetafile, xlPicture, xlBitmap) 'format suivant si obMetafile est coché
     
    if Combobox1.listIndex <> -1 then
    Sheet3.chartObjects(ComboBox1.ListIndex + 1).copyPicture xlscreen, 1PicType, xlscreen
    Set imgChtPic.Picture = PastePicture(lPictType) ' (l'image s'appelle imgChtPic)
    end if
     
    end sub
    nota, si je neutralise la routine userForm_intialize et que je place les mêmes commandes dans une routine ComboBox1_Click je n'ai plus l'erreur mais ma ComboBox ne me liste que du vide et ça ne marche pas (j'ai regardé, y'a deux graphiques (1 et 2) sur la feuille3)


    edit: je vais être probablement loin du net pour une semaine. je bosserai néanmoins sur ce souci sur mon portable


    re edit: a priori l'accès refusé se ferait sur la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox1.AddItem Sheet3.ChartObjects(i).Chart.Name
    qu'il me surligne quand je place les proécdure dans la meme routine Combobox1_change()

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    Un exemple vaut mieux qu'un long discours ...


    bon après midi
    michel
    Fichiers attachés Fichiers attachés

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 45
    Points : 35
    Points
    35
    Par défaut
    bonjour,
    de retour de vacances j'ai trouvé entre temps ce qui n'allait pas:

    j'avais spéciifié un row range à ma combobox et j'avais oublié de l'enlever. ceci empêchait l'affectation par additems

    donc ça marche nickel, merci encore pour l'aide

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

Discussions similaires

  1. [AC-2007] VBA, actualisation d'une requête via une liste déroulante
    Par petitpom dans le forum IHM
    Réponses: 2
    Dernier message: 18/07/2012, 09h39
  2. [Toutes versions] Charger plusieurs xvm dans un fichier modèle via une liste déroulante en vba
    Par eristote dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/08/2011, 09h10
  3. Filtrer un formulaire via une liste déroulante
    Par pyxosledisciple dans le forum Access
    Réponses: 1
    Dernier message: 21/01/2006, 00h21
  4. [Requête] Tri via une liste déroulante
    Par Burnout dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 09/01/2006, 18h16
  5. récupération des données via une liste déroulante
    Par rahan_dave dans le forum Access
    Réponses: 1
    Dernier message: 13/10/2005, 12h27

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