Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/01/2012, 18h40   #1
Candidat au titre de Membre du Club
 
Homme
Inscription : juillet 2004
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juillet 2004
Messages : 31
Points : 11
Points : 11
Par défaut Selection série de donnée graphique active

Bonjour,
je travaille avec un graphique Excel comportant beaucoup de série de donnée dans un graph de type nuage de point. Toutes les données n'ont pas la même échelle donc je souhaite les répartir sur l'axe principal et l'axe secondaire. Ça je sais faire dans Excel en éditant la mise en forme de la série de donnée.
Cependant comme j'ai beaucoup de courbes j'aimerai me faire un bouton axe principal et un bouton axe secondaire qui par macro me changent d'un clic l'axe de la série sélectionnée.
J'ai utilisé l'enregistreur de macro qui m'a donné le code suivant pour changer l'axe de la série 1 :
Code :
ActiveChart.SeriesCollection(1).AxisGroup = 1
Sauf que cette ligne de code ne marche que pour la série 1. J'aimerai que la macro change l'axe de la série sélectionnée avec un truc du genre :
Code :
Selection.SeriesCollection(1).AxisGroup = 1
mais ça ne fonctionne pas...

Comment je peux rendre ma macro indépendante du numéro de la série pour quel fonctionne sur la série sélectionnée ?
Merci par avance de aide.
ferdi67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 19h23   #2
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Peut-être directement
Code :
Selection.AxisGRoup = 1
++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 19h48   #3
Candidat au titre de Membre du Club
 
Homme
Inscription : juillet 2004
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juillet 2004
Messages : 31
Points : 11
Points : 11
j'ai déjà testé. Ca a marché 1 fois pour je ne sais pas quelle raison mais impossible de reproduire...
ferdi67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 20h04   #4
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut
J'ai placé ce code
Code :
1
2
3
4
5
6
 
Sub Macro1()
 
    On Error Resume Next
    Selection.AxisGroup = (Selection.AxisGroup Mod 2) + 1
End Sub
dans un bouton de type formulaire et ça fonctionne très bien.

Si ça ne fonctionne pas, met le On error... en commentaire et dis nous le message d'erreur que tu obtiens.

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 20h34   #5
Candidat au titre de Membre du Club
 
Homme
Inscription : juillet 2004
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juillet 2004
Messages : 31
Points : 11
Points : 11
j’obtiens le message d'erreur suivant :
Citation:
Erreur d'exécution '438':

Propriété ou méthode non gérée par cet objet
ferdi67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 06h18   #6
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Tu ne dois pas sélectionner la série comme il faut je pense, il faut que tous les point soient sélectionnés.

Place un espion sur la ligne pour contrôler le contenu de Selection. (Clique droit sur Selection, Ajouter un Espion, OK)

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 09h05   #7
Candidat au titre de Membre du Club
 
Homme
Inscription : juillet 2004
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juillet 2004
Messages : 31
Points : 11
Points : 11
Je sélectionne la série avec le menu déroulant dans le ruban Option graphique>Disposition>Menu Elements de graphique. Je fais conne ça car il y a beaucoup de courbes (d'environ 10000 points) les unes sur les autres et c'est pas facile de sélectionner la bonne avec la sourie.

Je viens de mettre l'espion mais je ne sais pas ce qu'il faut regarder dedans là ? Quelle info tu veux ?

@+

[EDIT 1] 11/01/12 09:00
Je viens d'essayer avec un graphique avec juste 3 courbes d'une dizaine de points et ça fait toujours la même erreur, quelle que soit la méthode de sélection.
Est-ce qu'il me manque une référence ?

[EDIT 2] 11/01/12 10:43
J'ai trouvé pourquoi l'erreur apparait mais je ne sais pas comment corriger.
Lorsque je sélectionne la série et que j'exécute la macro depuis VB ça fonctionne, lorsque j'exécute la macro depuis la fenêtre Macros d'Excel ça fonctionne. Mais si j'exécute la macro depuis un bouton formulaire ou AxtiveX ça ne fonctionne plus.
VB doit prend en compte la sélection du bouton. Du coup c'est normal qu'il n'arrive pas à modifier l'axe du bouton
Maintenant que j'ai trouvé le pourquoi, comment je peux faire pour que la macro ne prenne pas en compte le clic sur le bouton comme sélection mais qu'elle garde la série comme sélection ?
Je souhaite garder une fonctionnalité équivalente au bouton pour éviter faire 15 clics pour changer un axe.
ferdi67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 11h13   #8
Candidat au titre de Membre du Club
 
Homme
Inscription : juillet 2004
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juillet 2004
Messages : 31
Points : 11
Points : 11
C'est bon j'ai trouvé la solution !!
J'utilise un bouton ActiveX dont je modifie la propriété :
Code :
TakeFocusOnClilck = False
Lorsque je clic sur le bouton dans VBA cela appel le code suivant:
Code :
1
2
3
4
5
6
7
8
9
Private Sub cb_changeAxe_Click()
Call ChangementAxeSerie
End Sub
 
Public Sub ChangementAxeSerie()
    'il faut sélectionner toute la série pour ça fonctionne
    On Error Resume Next
    Selection.AxisGroup = (Selection.AxisGroup Mod 2) + 1
End Sub
Merci de ton aide Qwazerty, ça m'a mis sur la bonne piste.
@+
ferdi67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h41.


 
 
 
 
Partenaires

Hébergement Web