Petite question de "syntaxe" en VBA

jbdubreuil

XLDnaute Occasionnel
Bonjour,

J'ai crée 4 petites macro sous excel pour changer les données d'un graph.
(etiquette, Bulle, echelle et temp)
je les ai mises "à la suite" dans le module1.

Ma question est la suivante:
Comment lancer les macro à la suite:
1) Avec un bouton
(malheureusement, une seule macro se lance, puisque le bouton est lié à un sub et end sub)
2) Sans bouton, à chaque modification du graph.
(J'ai utilisé dans mon workbook le code suivant sans resultat)

Private Sub Worksheet_Change(ByVal Target As Range)
Echelle
Colorie_Bulles
ModifieEtiquette
Temp
End Sub



Et voilà le code que j'utilise pour les 4 petites macro:
Je sais que c'est un peu brouillon ce message, désolé.
Merci pour votre aide,
Amicalement
jb

Sub Temp()
'Macro rename Etiquette
Dim a, NbVal As Integer

'Sélectionne le "chart 1"
ActiveSheet.ChartObjects("chart 1").Activate
'Définis le nombre de points dans la collection
NbVal = ActiveChart.SeriesCollection(1).Points.Count
'Affiche les etiquettes
ActiveChart.SeriesCollection(1).ApplyDataLabels 'AutoText:=True
'formate les etiquettes
ActiveChart.SeriesCollection(1).DataLabels.Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.Position = xlLabelPositionCenter 'other options: xlLabelPositionInsideBase or xlLabelPositionInsideEnd
.Orientation = xlHorizontal
End With
Selection.AutoScaleFont = False
With Selection.Font
.Name = "Arial"
.Size = 6
End With

For a = 1 To NbVal
'Applique la nouvelle etiquette
ActiveChart.SeriesCollection(1).Points(a).DataLabel.Characters.Text = Range("AF1").Offset(a, 0)
Next a
End Sub


Sub ModifieEtiquette()
'Macro Etiquette
Dim Ws As Worksheet, ChartObj As ChartObject
Dim Pts As Points
Dim ValX, ValY, ValNoms, Boucle As Long
Set Ws = ActiveSheet
Set ChartObj = Ws.ChartObjects(1)
ValNoms = ChartObj.Chart.SeriesCollection("Etiquette").XValues
With ChartObj.Chart.SeriesCollection("Noms")
ValX = .XValues
ValY = .Values
Set Pts = .Points
For Boucle = 1 To Pts.Count
If ValNoms(Boucle) <> "" And ValX(Boucle) <> "" _
And ValY(Boucle) <> "" Then _
Pts(Boucle).DataLabel.Text = ValNoms(Boucle)
Next Boucle
End With
End Sub

Sub Echelle()
'Echelle automatique
With ActiveSheet.ChartObjects("chart 1").Chart.Axes(xlValue)
.MinimumScale = Application.Min(Range("AN8"))
.MaximumScale = Application.Max(Range("AN7"))
.MinorUnit = 0.05
.MajorUnit = 0.1
End With

With ActiveSheet.ChartObjects("chart 1").Chart.Axes(xlCategory)
.MinimumScale = Application.Min(Range("AN6"))
.MaximumScale = Application.Max(Range("AN5"))
.MinorUnit = 0.05
.MajorUnit = 0.1
End With
End Sub


Sub Colorie_Bulles()
'Colorie les bulles
Dim a, Color, NbVal As Integer

'Sélectionne le "chart 1"
ActiveSheet.ChartObjects("chart 1").Activate
'Définis le nombre de points dans la collection
NbVal = ActiveChart.SeriesCollection(1).Points.Count

' Sélectionne chacun des points et lui attribue
' la couleur de la cellule lui correspondant.
For a = 1 To NbVal
Color = CInt(Range("AE1").Offset(a, 0).Value)
ActiveChart.SeriesCollection(1).Points(a).Interior.ColorIndex = Color
Next a
End Sub
 

porcinet82

XLDnaute Barbatruc
Re : Petite question de "syntaxe" en VBA

Salut,

Plusieurs choix s'offre a toi pour lancer tes macro a la suite les unes des autres. Soit tu mets dans ton bouton, ma première macro que tu veux lancer, puis a la fin de celle ci tu mets le nom de celle que tu veux appeler ensuite et ainsi de suite.
Soit tu regroupes tout tes codes en un gros codes.
Soit tu mets dans le code de ton bouton un truc de ce genre :
Code:
Private Sub CommandButton1_Click()
Temp
ModifieEtiquette
Echelle
Colorie_Bulles
End Sub

Ensuite sans bouton, si tu veux que ta/tes macro se déclanche "toutes seules" il faut utiliser une macro conditionnelle, c'est à dire qui se déclenche avec un évènement. Celle que tu as choisis Worksheet_Change signifie que tes macros seront lancées des que tu modifies quelques chose dans ta feuille, ce qui semble correspondre a tes besoins. Tu dis ne pas avoir de résultats. Est-ce que le code est placé dans la feuille sur laquelle se trouve tes graphiques?

@+
 

ChTi160

XLDnaute Barbatruc
Re : Petite question de "syntaxe" en VBA

Salut jbdubreuil
Bonjour le Forum
Arff pas vu Salut Porcinet

as tu essayé de mettre tes Sub(Comme tu dis ) dans la procèdure de ton bouton ?

Code:
Private Sub CommandButton1_Click()
       Call Echelle
       Call Colorie_Bulles
       Call ModifieEtiquette
       Call Temp
End Sub
Non testé
Bonne Journée
 

jbdubreuil

XLDnaute Occasionnel
Re : Petite question de "syntaxe" en VBA

Bonjour Porcinet, chti, le forum,

Merci pour vos reponses et vos commentaires.
Concernant le lancement de la procedure par un bouton.
Ca marche tres bien.
C'est parfait !

Concernant le lancement automatique des macro lorsque les données changent,
J'ai bien placé le code suivant dans la feuille ou se trouve le graph.
Lorsque je modifie les valeurs, le graph se modifie, mais pas d'update des macros. (meme en appyant sur F9, rien ne se passe)
Ce n'est pas un probleme important en soit. Je souhaite juste comprendre et apprendre :)

Merci en tous els cas pour vos reponses rapides et efficaces,

Amicalement,

JB
 

porcinet82

XLDnaute Barbatruc
Re : Petite question de "syntaxe" en VBA

re, Salut ChTi,

C'est un peu bizarre cette affaire. Est-ce que tu pourrais mettre le fichier en question sans rien modifier de la structure (j'entends par la que tu le laisses le code tel que tu l'utilises, bien évidenement, pas de données confidentielles et fichier inférieur à 50ko)

@+
 

jbdubreuil

XLDnaute Occasionnel
Re : Petite question de "syntaxe" en VBA

Porcinet,

Merci pour ta reponse.
J'ai changé les valeurs, et essayé de reduire au max le fichier.
Il fait 60ko compressé, j'ai donc crée un lien sur cjoint.
J'espere que le forum accepte ce genre de lien.

j'ai trois onglets:
1) data, c'est la database
2) para: c'est mes parametre
3) magique: c'est le graph

Le fichier est en construction...
Remarque: les macro fonctionnent, sauf dans certains cas ou il y a une erreur time error, inexpliquée jusqu'à present. C'est un autre probleme.
Donc je verrai ca plus tard.

http://cjoint.com/?hdkARMPXLw

Je suis pret à donner plus d'explication, bien entendu,

jb
 

porcinet82

XLDnaute Barbatruc
Re : Petite question de "syntaxe" en VBA

re,

Je viens de tester et tes macros se lancent bien lorsque tu modifie une cellule de la feuille magique, cependant, tu ne le vois peut etre pas car les macro n'apportent pas de modifications sur la feuille. Par contre, les zones deroulantes dans les cellules ne constituent pas des changements sur la feuille.

@+
 

Membres actuellement en ligne

Statistiques des forums

Discussions
314 450
Messages
2 109 726
Membres
110 552
dernier inscrit
jasson