Graphiques et VBA

  • Initiateur de la discussion Zan
  • Date de début
Z

Zan

Guest
Bonjour,

J'ai un petit probleme concernant les graphiques créés avec une macro.
Je voudrais savoir s'il existe une instruction en VBA qui permet d'effacer tous les graphiques contenu dans une feuille, sans connaitre le nom des graphique.
En fait je veux pouvoir effacer completement le contenu d'une feuille (contenu des cellules, format des cellules, graphiques).

Une autre question au cas ou : Peut on choisir l'emplacement d'un graphique créé par une macro sur une feuille (du style : je veux le graphique sur les cellules A1:H8, ou avoir le coin superieur gauche du graphique sur A1).

Merci a ceux qui tenteront de m’aider.
Cordinalement,

Nico.
 

michel_m

XLDnaute Accro
Salut Zan

Pour tout effacer:
Cells.Delete Shift:=xlUp

Pour déplacer ton graphique:

ActiveSheet.Shapes('Graphique 1').IncrementLeft 127.5
ActiveSheet.Shapes('Graphique 1').IncrementTop -45.75


Pour le placer le haut à gauche à tel ou tel endroit, utilises l'enregistreur de macro; de même pour la taille et adaptes à ton pb

A+
Michel
 
Z

Zan

Guest
Bonjour,

Merci Michel, je vais essayer ça.
Juste une precision, pour ce qui est de déplacer les graphes. J'avais essayer l'enregistreur de maccro, et il m'avait donné un truc comme toi. Mais cette formule permet de le déplacer relativement par rapport a sa position de initiale non ?

Quoi qu'il en soit merci, ca m'a bien aidé.

Cordialement,
Zan
 

myDearFriend!

XLDnaute Barbatruc
Bonjour Zan, michel_m,

Heu... désolé d'intervenir dans ce fil mais, sauf erreur de ma part, 'Cells.Delete Shift:=xlUp' ne supprimera pas les graphiques de la feuille mais va simplement les 'écraser' en haut de cette dernière. Ils ne seront plus visibles effectivement mais ils existeront toujours bel et bien. On peut s'en apercevoir après coup en faisant menu Edition / Atteindre... / Cellules... / Objets.

Pour les supprimer réellement, je propose la ligne de code suivante :
      ActiveSheet.DrawingObjects.Delete

Par ailleurs, si l'objectif est de placer le graphique 1 en cellule A1, on peut faire simplement :
      ActiveSheet.Shapes('Graphique 1').Left = 0
      ActiveSheet.Shapes('Graphique 1').Top = 0

Et si le but est de placer le coin supérieur gauche du graphique dans une cellule déterminée (B10 dans l'exemple ci-dessous) :
      ActiveSheet.Shapes('Graphique 1').Left = Range('B10').Left
      ActiveSheet.Shapes('Graphique 1').Top = Range('B10').Top

Cordialement,
 
Z

Zan

Guest
Bonjour Didier mdF,

Merci beaucoup pour ces infos, je vais enfin pouvoir finir mon programme.

Juste une dernière petite question. Est ce que je peux definir l'emplacement du graphique lors de sa creation, en utilisant au lieu de graphique 1 un truc du style 'activechart'. En effet, mon programme trace plusieurs graphes, voir meme efface des graphes pour les retracer avec de nouvelles données, donc je ne connais pas le nom du graphique. J'ai essayé en nommant les graphiques lors de la creation, mais le programme utilise toujours 'graphique X' pour les désigner si je veux les deplacer apres. Ou alors quelle est la commande pour les nommer de sorte que le programme utilise ce nom pour les désigner.

Quoi qu'il en soit merci.

Cordialement,
Zan
 
Z

Zan

Guest
Re Bonjour,

Je viens d'essayer la ligne

ActiveSheet.DrawingObjects.Delete

Le probleme c'est que ca m'efface aussi les commandButton que j'ai sur la feuille.... et j'aimerai bien les garder :)
Donc est ce qu'il y aurait une commande qui supprime que les graphes, ou est ce qu'il y a une possibilité de vérouiller les commandbutton ?

Merci bien,

Zan
 

MichelXld

XLDnaute Barbatruc
Bonjour Zan, mes amis Michel_m et MyDearFriend

cette procédure permet de créer un graphique dans la Feuil1 , de le renommer et ensuite de positionner le graphique par rapport au bord supérieur gauche de la cellule C5



Sub creerEtRenommerGraphique()
Dim NbGraph As Byte

Charts.Add ' ajout graphique
With ActiveChart
.ChartType = xlLine
.SetSourceData Source:=Feuil1.Range('A1:B10'), PlotBy:=xlColumns
.Location Where:=xlLocationAsObject, Name:='Feuil1'
End With

NbGraph = Feuil1.ChartObjects.Count 'compte le nombre de graphiques dans la feuille
'le nouveau graphique correspond à l'index le plus élevé
Feuil1.ChartObjects(NbGraph).Name = 'Le nom du Graphique'

With Feuil1.ChartObjects('Le nom du Graphique')
.Left = Range('C5').Left
.Top = Range('C5').Top
End With

End Sub



bonne soiree
MichelXld
 

Discussions similaires

Réponses
26
Affichages
478

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 180
dernier inscrit
Vcr