OVH Cloud OVH Cloud

Lancement d'une macro à l'ouverture de la feuille

32 réponses
Avatar
Pierre
Bonsoir
N'ayant pas trouvé de solution pour lancer en bloc plusieurs macros (post du
15/10), j'aimerais savoir s'il est possible de lancer automatiquement une
macro à l'ouverture d'une feuille, ce qui serait un autre moyen de régler
mon problème.
Merci encore de vos conseils et de votre aide
Pierre

10 réponses

1 2 3 4
Avatar
Francois L
Bonsoir
N'ayant pas trouvé de solution pour lancer en bloc plusieurs macros (post du
15/10), j'aimerais savoir s'il est possible de lancer automatiquement une
macro à l'ouverture d'une feuille, ce qui serait un autre moyen de régler
mon problème.
Merci encore de vos conseils et de votre aide
Pierre




Bonsoir,

Tu es toujours sur ta succession de mise en forme de graphiques ? Si
oui, il y avait des solutions, a priori, mais il aurait fallu que tu en
dises plus sur l'organisation de ton classeur.

Ceci étant dit, qu'appelles tu "ouverture d'une feuille" ? tu pourrais
regarder du coté de l'événement Activate de la feuille.

--
François L

Avatar
André free
Bonsoir,
dans MicrosotfExcelObject, ThisWorkbook,
tu peux mettre des commandes dans:
Private Sub Workbook_Open()

End Sub

"Francois L" a écrit dans le message de
news:ux%
Bonsoir
N'ayant pas trouvé de solution pour lancer en bloc plusieurs macros
(post du


15/10), j'aimerais savoir s'il est possible de lancer automatiquement
une


macro à l'ouverture d'une feuille, ce qui serait un autre moyen de
régler


mon problème.
Merci encore de vos conseils et de votre aide
Pierre




Bonsoir,

Tu es toujours sur ta succession de mise en forme de graphiques ? Si
oui, il y avait des solutions, a priori, mais il aurait fallu que tu en
dises plus sur l'organisation de ton classeur.

Ceci étant dit, qu'appelles tu "ouverture d'une feuille" ? tu pourrais
regarder du coté de l'événement Activate de la feuille.

--
François L



Avatar
Pierre
Bonsoir François
J'avais donné quelques précisions à la fin du fil du 15/10.
Quand on clique sur l'onglet pour voir le graphique, çà serait bien si la
macro se lançait automatiquement.
A mon grand regret, je ne maitrise pas assez excel pour bricoler moi même.
Tu as vu d'ailleurs que les macros sont des copié collés de ton modèle !-)
Pierre
Avatar
Francois L
Bonsoir François
J'avais donné quelques précisions à la fin du fil du 15/10.
Quand on clique sur l'onglet pour voir le graphique, çà serait bien si la
macro se lançait automatiquement.
A mon grand regret, je ne maitrise pas assez excel pour bricoler moi même.
Tu as vu d'ailleurs que les macros sont des copié collés de ton modèle !-)
Pierre




Re,

Je vais essayer de te faire un résumé des solutions ce soir... je dis
bien essayer parce que la priorité pour les heures à venir, c'est le
devoir de Maths de fiston N° 2

Donc suivant le temps que cela prendra et l'ambiance à l'issue de
l'opération...

--
François L

Avatar
Francois L
Bonsoir François
J'avais donné quelques précisions à la fin du fil du 15/10.
Quand on clique sur l'onglet pour voir le graphique, çà serait bien si la
macro se lançait automatiquement.
A mon grand regret, je ne maitrise pas assez excel pour bricoler moi même.
Tu as vu d'ailleurs que les macros sont des copié collés de ton modèle !-)
Pierre




Bonsoir,

Voila une première solution mais je ne sais pas si elle sera adaptée à
ton besoin.

Je met un exemple sur Cjoint, que je te commente ici :
Dans mon exemple, il y a trois graphiques pour trois séries de données.
Chaque graphique est mis en forme par une macro. Les trois macros sont
semblables, seule la condition qui détermine ce qui est en vert et en
rouge change.

On utilise l'évènement Activate, donc toutes les données des trois
graphiques sont dans la Feuil1 et chaque graphique est sur une feuille
graphique différente.

Pour bien voir ce qui se passe, ouvre d'abord une fois le classeur en
désactivant les macros, tu verras les graphiques non mis en forme.
Refermes le classeur et rouvre le en activant les macros, tu vas voir
que chaque graphique sera mis en forme quand tu l'actives (clic sur
l'onglet de la feuille graphique). L'intérêt de cette organisation est
que les graphiques sont mis à jour chaque fois qu'on les visualise, à la
fois avec les données saisies et la mise en forme.

Le code VBA de chaque feuille est le suivant ( chaque code est attaché à
une feuille par clic droit sur l'onglet, visualiser le code)

Private Sub Chart_Activate()
' éviter de voir la macro s'exécuter
Application.ScreenUpdating = False

With ActiveChart
' pour chaque série du graphique
For j = 1 To .SeriesCollection.Count

With ActiveChart.SeriesCollection(j)

'pour chaque point de la série
For k = 1 To .Points.Count

' valeur de chaque point
a = Application.WorksheetFunction.Index(.Values, k)

' définition de la mise en forme selon la valeur
' la ligne qui suit change pour chaque graphique
testc = IIf(a > 80, RGB(255, 0, 0), RGB(0, 255, 0))

' application du format au point
.Points(k).Interior.Color = testc

'point suivant
Next k
End With

' série suivante
Next j
End With

'rétablissement du rafraîchissement de l écran
Application.ScreenUpdating = True
End Sub

http://cjoint.com/?ksvefrVXMK


Si tu souhaites vraiment mettre tes graphiques dans les feuilles de
travail, ce sera possible mais plus compliqué à gérer.

--
François L

Avatar
Pierre
Bonsoir François
Et merci infiniment du mal que tu t'es donné! J'espère que le devoir de
maths n'en a pas souffert.
Pas moyen de faire coller ta solution avec mon classeur.
En fait çà se joue probablement à pas grand chose...
Si tu veux en connaitre exactement l'agencement de ce classeur tu peux le
télécharger à l'adresse suivante:
http://perso.orange.fr/pgrenet/Page_entraineurs.htm
C'est les classeurs "suivi sportif des arrières junior sur un test" et
"suivi sportif des avants junior sur un test" (les 2 derniers de la colonne
de droite, pas ceux du suivi sur une saison)
Ce classeur est un outil mis à la disposition des entraineurs. Il doit donc
être
très simple d'utilisation.
La seule solution que j'ai trouvée, mais qui ne me satisfait pas, est le
raccourci clavier.
Tu pourras t'en rendre compte si tu veux, elle n'est pas idéale.
J'aurais préféré que la mise en forme bicolore soit automatique, sans aucune
intervention exterieure.
Merci de toute façon de ton aide et du temps que tu as passé pour essayer de
me dépanner.
Cordialement
Pierre
Avatar
Francois L
Bonsoir François
Et merci infiniment du mal que tu t'es donné! J'espère que le devoir de
maths n'en a pas souffert.
Pas moyen de faire coller ta solution avec mon classeur.
En fait çà se joue probablement à pas grand chose...
Si tu veux en connaitre exactement l'agencement de ce classeur tu peux le
télécharger à l'adresse suivante:
http://perso.orange.fr/pgrenet/Page_entraineurs.htm
C'est les classeurs "suivi sportif des arrières junior sur un test" et
"suivi sportif des avants junior sur un test" (les 2 derniers de la colonne
de droite, pas ceux du suivi sur une saison)
Ce classeur est un outil mis à la disposition des entraineurs. Il doit donc
être
très simple d'utilisation.



Bonsoir,

8 mégas et quelque... j'espère qu'ils ont tous l'ADSL les entraineurs !

Bon, je pense que j'ai compris ce que tu veux faire et je vais essayer
de te dépatouiller cela. Mais ce ne sera probablement pas avant ce week-end.

Une question est-ce que les 25 lignes de saisies sont systématiquement
remplies ou faut-il prévoir qu'il n'y en ait qu'une partie (10, 15, etc.)

--
François L

Avatar
Pierre
Bonsoir François
Le plus souvent qu'une partie des lignes (- de 25 joueurs) et qu'une partie
des tests.
Pierre
Avatar
Francois L
Bonsoir François
Le plus souvent qu'une partie des lignes (- de 25 joueurs) et qu'une partie
des tests.
Pierre





Bonjour Pierre,

Pas facile de travailler sur un classeur de cette taille. Je pense que
tu devrais l'alléger... mais pour le moment ce n'est pas le problème.

Voilà les éléments de base d'une solution. Il va falloir que tu testes
et que tu me fasses part de tes souhaits et avis. Ca peut paraître
compliqué mais si tu suis les conseils pas à pas, tu vas voir que non.

Etape 0 : fais une copie de ton classeur et supprimes la macro que tu a
mise !

Etape 1 Crée un module et met dedans le code qui suit (merci au passage
à Michel Gaboly pour son aide sur la passage du paramètre Op)

Sub FCG(Seuil As Double, Op As String)
Application.ScreenUpdating = False
For j = 1 To ActiveChart.SeriesCollection.Count
With ActiveChart.SeriesCollection(j)
For i = 1 To .Points.Count
a = Application.WorksheetFunction.Index(.Values, i)
If a <> 0 Then
b = Evaluate(Val(a) & Op & Seuil)
rep = IIf(b, RGB(255, 255, 255), RGB(125, 125, 125))
.Points(i).Interior.Color = rep
End If
Next
End With
Next
Application.ScreenUpdating = True
End Sub

Etape 2 Dans chaque feuille graphique tu vas mettre un code sur
l'évènement Activate . Pour mettre un code sur l'événement Activate,
voila comment procéder : tu fais un clic droit sur l'onglet de la
feuille graphique, tu choisis visualiser le code, cela t'ouvre la
fenetre VBE. Dans la liste déroulante de gauche, tu choisis "Chart",
dans celle de droite du choisis "Activate".

Le code a mettre dans la macro a la structure suivante :
Private Sub Chart_Activate()
FCG Seuil, condition
End Sub

Par exemple le code de la feuille graphique nommé IMC est

Private Sub Chart_Activate()
FCG 25, "<"
End Sub

FCG est l'appel à la macro que je t'ai donnée en premier et que tu as
stockée dans le module
25 est le seuil que tu as défini et "<" est l'opérateur de comparaison.
Dans cette feuiile, les barres de valeur inférieure à 25 seront blanches
(couleur = RGB(255,255,255)) et les autres grises (couleur =
RGB(125,125,125)). On peut changer les couleurs si tu veux !

Attention a la syntaxe qui doit être respectée : le texte FCG ensuite le
seuil ensuite une virgule (,) ensuite l'opérateur entre double quotes (").

Tu fais cette opération pour chaque feuille graphique selon les critères
que tu as définis.

Fais ensuite des tests en renseignant des lignes de ton classeur et tu
me fais savoir si cela te convient. J'ai un petit problème avec tes
graphiques, il y a des échelles définies avec des mini qui me paraissent
bizarres mais peut-être est-ce volontaire.

Je me demande aussi, est ce que tu as des graphiques ou il y a plusieurs
séries de données (par exemple le poids et la taille). Si non, une
partir du code de la macro FCG est inutile, je te dirai quoi virer.

Enfin, lorsqu'il n'y a que quelques lignes renseignées, souhaites tu que
les barres du graphiques s'affichent en haut du graphique comme c'est le
cas dans ton exemple ou qu'elles occupent toute la zone graphique. Si la
deuxième solution te plaît, je t'expliquerai comment faire.


Bon courage !

--
François L

Avatar
Pierre
Bonjour François

Merci encore du mal que tu te donnes pour m'aider
J'ai suivi pas à pas tes consignes
- suppression de toutes les macros
- création d'une nouvelle macro dans laquelle j'ai copié collé ton code, ce
qui donne:

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 22/10/2006 par Pierre
'

'
Sheets("IMC").Select
ActiveWorkbook.Save
Sheets("IMC").Select
ActiveChart.SeriesCollection(1).Select
Sheets("R1").Select
Range("F4").Select
Selection.ClearContents
Range("F5").Select
Selection.ClearContents
Sheets("R1").Select
Range("F4").Select
ActiveCell.FormulaR1C1 = "85"
Range("F5").Select
ActiveCell.FormulaR1C1 = "80"
Range("F9").Select
Sheets("IMC").Select
ActiveChart.PlotArea.Select
Sheets("MG").Select
Application.Goto Reference:="Macro1"
End Sub
Sub FCG(Seuil As Double, Op As String)
Application.ScreenUpdating = False
For j = 1 To ActiveChart.SeriesCollection.Count
With ActiveChart.SeriesCollection(j)
For i = 1 To .Points.Count
a = Application.WorksheetFunction.Index(.Values, i)
If a <> 0 Then
b = Evaluate(Val(a) & Op & Seuil)
rep = IIf(b, RGB(255, 255, 255), RGB(125, 125, 125))
.Points(i).Interior.Color = rep
End If
Next
End With
Next
Application.ScreenUpdating = True
End Sub

- Ouverture de la feuille IMC, code, chart, activate, et copié collé, ce qui
donne:

Private Sub Chart_Activate()
Private Sub Chart_Activate()
FCG 19, "<"
End Sub

Remplissage de la valeur, et message d'erreur suivant: erreur de
compilation, nom ambigu detecté: chart_activate


En ce qui concerne tes autres questions, chaque graphique ne represente
qu'un seul paramètre à la fois, pour lesde joueurs qui ont passé le test.
Un joueur peut avoir passé un test ( demi squat par exemple) mais pas un
autre (developpé couché par exemple s'il est blessé à l'épaule ce jour là)
Pour chaque test, il faut que les barres de valeur apparaissent en regard du
nom correspondant sur l'axe des ordonnées.
Les bonnes couleurs sont 22 pour les valeurs < ou > à la norme, 19 pour les
valeurs dans les normes.

Bon dimanche...
Cordialement
Pierre
1 2 3 4