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 :

Gestion graphiques en VBA: Afficher pourcentages et nom de catégorie sous condition [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2011
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 258
    Par défaut Gestion graphiques en VBA: Afficher pourcentages et nom de catégorie sous condition
    Bonjour à tous,

    J'ai deux graphiques dans une feuille, j'ai tenté d'utiliser une macro pour afficher les % seulement lorsque les % sont sup à 5. Ca fonctionne bien si je nomme directement le graphique, mais si je tente un "for each" avec les graphiques, ça ne fonctionne pas.

    Voilou le 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Sub lol()
    	'prend chaque graphique de la feuille
        For Each obj In Sheets("Par pays").ChartObjects
     
    		'Prend chaque point de chaque graphique
    		For Each pt In obj.SeriesCollection.Points
     
    			'Initialise le pourcentage à true
    			pt.ApplyDataLabels AutoText:=True, _
    			LegendKey:=False, HasLeaderLines:=True, ShowSeriesName:=False, _
    			ShowCategoryName:=False, ShowValue:=False, ShowPercentage:=True, _
    			ShowBubbleSize:=False
     
    			'teste le pourcentage, si < 5 le pourcentage est enlevé
    			If (CDbl(Left(pt.DataLabel.Caption, 1)) < 5) Then
     
    				Debug.Print pt.DataLabel.Caption
     
    				pt.ApplyDataLabels AutoText:=True, _
    				LegendKey:=False, HasLeaderLines:=True, ShowSeriesName:=False, _
    				ShowCategoryName:=False, ShowValue:=False, ShowPercentage:=False, _
    				ShowBubbleSize:=False
     
    			Else
     
    				'sinon on ajoute le nom de catégorie
     
    				pt.ApplyDataLabels AutoText:=True, _
    				LegendKey:=False, HasLeaderLines:=True, ShowSeriesName:=False, _
    				ShowCategoryName:=True, ShowValue:=False, ShowPercentage:=True, _
    				ShowBubbleSize:=False
     
    			End If
     
    		Next pt
     
        Next obj
     
    End Sub
    Merci à vous par avance

    Edit: J'avais oublié de préciser le message d'erreur: "propriété ou méthode non gérée par l'objet" sur la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each pt In obj.SeriesCollection.Points
    Ah oui et j'avais une autre question:

    J'ai mis des infobulles sur des images (clic droit, hyperlien, placer le lien dans ce document et clic infobulle), ça fonctionne bien en mouseover, l'infobulle apparait correctement.

    Par contre, la macro associée à l'image en clic ne fonctionne plus. Y'a t-il un moyen de contourner ça? Ou utiliser autre chose que l'infobulle, quelque chose en mouseover pour pas encombrer la feuille d'explications sur ces "boutons".

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2011
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 258
    Par défaut
    Problème résolu:

    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
    43
    44
    45
    46
    47
    48
    49
    Sub lol()
     
        Dim obj As ChartObject
        Dim pt As Point
     
        'prend chaque graphique de la feuille
        With Sheets("Par pays")
     
    		For Each obj In .ChartObjects
     
    			'Prend chaque point de chaque graphique
    			obj.Activate
     
    			For Each pt In ActiveChart.SeriesCollection(1).Points
     
    				'Initialise le pourcentage à true
    				pt.ApplyDataLabels AutoText:=True, _
    				LegendKey:=False, HasLeaderLines:=True, ShowSeriesName:=False, _
    				ShowCategoryName:=False, ShowValue:=False, ShowPercentage:=True, _
    				ShowBubbleSize:=False
     
    				'teste le pourcentage, si < 5 le pourcentage est enlevé
    				If (CDbl(Left(pt.DataLabel.Caption, 1)) < 5) Then
     
    					Debug.Print pt.DataLabel.Caption
     
    					pt.ApplyDataLabels AutoText:=True, _
    					LegendKey:=False, HasLeaderLines:=True, ShowSeriesName:=False, _
    					ShowCategoryName:=False, ShowValue:=False, ShowPercentage:=False, _
    					ShowBubbleSize:=False
     
    				Else
     
    					'sinon on ajoute le nom de catégorie
     
    					pt.ApplyDataLabels AutoText:=True, _
    					LegendKey:=False, HasLeaderLines:=True, ShowSeriesName:=False, _
    					ShowCategoryName:=True, ShowValue:=False, ShowPercentage:=True, _
    					ShowBubbleSize:=False
     
    				End If
     
    			Next pt
     
    		Next obj
     
        End With
     
    End Sub
    Par contre pour la deuxième question:

    J'ai mis des infobulles sur des images (clic droit, hyperlien, placer le lien dans ce document et clic infobulle), ça fonctionne bien en mouseover, l'infobulle apparait correctement.

    Par contre, la macro associée à l'image en clic ne fonctionne plus. Y'a t-il un moyen de contourner ça? Ou utiliser autre chose que l'infobulle, quelque chose en mouseover pour pas encombrer la feuille d'explications sur ces "boutons".
    Quelqu'un a t-il une idée? Merci

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2011
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 258
    Par défaut
    J'ai regardé du coté de mousemove en vba, mais à priori ça ne s'applique qu'aux images dans un USF. Mais bon afficher un USF en permanence sur la feuille de calcule bof.



    La feuille se présente (elle n'est pas entière là) comme ceci, les images clickables associées à une macro chacune. Et j'aimerais qu'en passant la souris dessus on voit un message "d'aide", où j'explique l'utilité des boutons.

    Si ça peut être plus clair pour vous.

    Je peux accéder aux propriétés des images en code, en utilisant Activesheet.Picture... mais je n'ai pas trouvé comment contrôler le mouseover

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

Discussions similaires

  1. [XL-2010] Problème de ressource dans la gestion d'un graphique en VBA
    Par meud007 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 13/02/2015, 21h39
  2. Afficher la date de "vendredi" prochain sous conditions
    Par Seta-san dans le forum Langage
    Réponses: 5
    Dernier message: 19/11/2012, 16h23
  3. Afficher une image dans un grid sous condition
    Par Devlin111 dans le forum C#
    Réponses: 0
    Dernier message: 31/05/2012, 13h02
  4. [AC-97] Gestion graphique en VBA
    Par Cire37 dans le forum VBA Access
    Réponses: 0
    Dernier message: 21/06/2010, 10h59
  5. Réponses: 10
    Dernier message: 13/06/2006, 17h59

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