Macro excel

Fermé
delphine - 4 févr. 2008 à 14:16
herve_D62 Messages postés 11 Date d'inscription lundi 11 décembre 2006 Statut Membre Dernière intervention 5 février 2008 - 4 févr. 2008 à 18:41
Bonjour,
j'ai un petit souci!

j'ai un tableau excel à partir duquel je génère automatiquement un histogramme. (en abscisse: les mois et en ordonnées: des pourcentages).
je souhaite que mon abscisse soit réajuster à chaque fois que l'on change de mois!
je m'explik! si on est en février, je veux ke l'abscisse soit: de Fév 07 à Jan 08, et lorsque l'on est en mars, que l'abscisse soit de Mars 07 à Février 08
en gros que mon échelle soit tjs de 12 mois mais que le dernier mois afficher soit le mois précédent!

est-ce possible avec une macro?

merci beaucoup pour votre aide!!

j'espere avoir ete assez claire...
A voir également:

9 réponses

Fxbrg Messages postés 710 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 199
4 févr. 2008 à 14:24
Regarde ici l'utilisation de la fonction DECALER, ça devrait le faire :-)

http://www.excelabo.net/excel/graphmaj.php

:-)
0
je vais regarder merci!
0
désolé mais j'ai carrément du mal à comprendre ce qu'il fo faire!!! lol
je dois vraiment etre une quiche mais bon!
0
Fxbrg Messages postés 710 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 199
4 févr. 2008 à 14:43
tu peux mettre tout ou partie de ton fichier en ligne (sur https://www.cjoint.com/ par exemple...)?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
c pa possible de faire une macro ki regarde le mois en cours et ki modifie l'échelle en fonction?
je peu pa le mettre en ligne! désolé!
0
Fxbrg Messages postés 710 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 199
4 févr. 2008 à 15:22
Le problème n'est pas de mettre l'échelle "en fonction", c'est de faire un graphique "flottant"...

Est-ce que le "mois en cours" a une valeur dans ton tableau? On peut faire une recherche de la dernière valeur et faire un tableau avec les 12 valeurs précédentes...

Sinon, si tu veux le faire en fonction de la date du jour, on peut bien sûr analyser la dite date, trouver quel mois on est. Par contre il faut que dans ton tableau, les mois soient identifiables...

Tu peux pas en extraire un petit bout, même tout petit, pour voir à quoi ça ressemble? pas simple sans savoir :-)
0
en fait c compliqué à extraire car mon tableau est super compliqué!
il est enorme! en fait, je fais d stats! je crée un Tableau de bord!
dc ds mon tableau g pa mal de ligne et chacune me génère un graphique

pour répondre à ta kestion, le mois en cours je n'ai pa de valeur car com c d stats, et ba le pourcentage pour le mois en cours il n'est calculé qu'au début du mois précédent!
pour l'instant ce que j'avai fai pour voir a koi ressemblerait ma macro, j'ai modifier l'echelle de mon graphique en faisan com si je changeait de mois et voila le code ke j'ai eu:

Sub Echelle()

ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.Axes(xlCategory).Select
With ActiveChart.Axes(xlCategory)
.MinimumScale = "01/03/2007"
.MaximumScale = "01/02/2008"
.BaseUnitIsAuto = True
.MajorUnitIsAuto = True
.MinorUnitIsAuto = True
.Crosses = xlAutomatic
.AxisBetweenCategories = True
.ReversePlotOrder = False
End With
End Sub

maintenant ce ke cherchai à faire c mettre une condition sur MinimumScale et MaximumScale !!!
c un peu plus clair? j'espere
0
Fxbrg Messages postés 710 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 199
4 févr. 2008 à 16:39
:-)

Franchement pas certain qu'il suffise changer maximumscale et minimum scale sur ton graphique pour avoir ce que tu veux... :-)
Néammoins, pour faire ça, tu peux utiliser des variables : (tu peux mettre un bouton dans ta feuille et tu mets ce code derrière...)

Dim maxs, mins As String
maxs = "01/" & Right(Date, 7)
mins = "01/" & Right((Date - 11 * 30), 7)

ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.Axes(xlCategory).Select
With ActiveChart.Axes(xlCategory)
.MinimumScale = mins
.MaximumScale = maxs
.BaseUnitIsAuto = True
.MajorUnitIsAuto = True
.MinorUnitIsAuto = True
.Crosses = xlAutomatic
.AxisBetweenCategories = True
.ReversePlotOrder = False
End With

Dis voir si ça fonctionne :-)
0
herve_D62 Messages postés 11 Date d'inscription lundi 11 décembre 2006 Statut Membre Dernière intervention 5 février 2008
4 févr. 2008 à 18:41
Bonsoir
En fait en modifiant la zone de données ton échelle va se mettre à jour
J'ai eu un graphique modulable aussi à faire , sauf que le point de départ était fixe
Il faudra donc ajouter des variables pour le début ( genre offset...)

ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B5:B10," & N_col & "5:" & N_col & "10"), _
PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil2"
ActiveSheet.ChartObjects(ActiveChart.Parent.Name).Name = "Graph_1"

les données étaient en "Feuille1" , le graph en 2
Donc je partais be B5:B10 jusqu'au dernier mois connu , donc les abscisses s'allongent chaque mois ( c'était mensuel)
Si le dernier mois connu était en "F" , N_col a pour valeur "F" donc cela faisait : "F5:F10" , il y a du traitement avant, bien sûr !
donc "bidouiller" "B5:B10" avec des variables qui recherchent la position que tu veux , puis celle de Fin !
Nomme en "dur" ton graphe ( ici "Graph_1" ) sinon il va s'incrémenter à chaque lancement "graphe1" , 2, .....100
0