Un peu de méthode ...

Fermé
guigol Messages postés 65 Date d'inscription mardi 12 décembre 2006 Statut Membre Dernière intervention 30 janvier 2019 - 23 juil. 2014 à 16:13
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 - 23 juil. 2014 à 17:06
Bonjour,

J'ai appris les macros excel sur le tas. Et j'avoue je manque de méthode, de vocabulaire, de compréhension de comment tout cela marche exactement.

Mon problème d'aujourd'hui. (je suis un bavard, il y a un peu de texte avant d'arriver au fond du problème)

Je suis entrain de créer une macro qui insérera des graphiques dans autant de feuilles que de lignes de mon tableau, ...
pour faire tout ceci, pas de problème.

Le plus souvent, j'utilise l'enregistreur de macro, et je travaille sur le code.
Mais, je sais que je peux optimiser encore un peu plus.

Lorsque j'ai enregistré ma macro, j'ai obtenu ceci lorsque j'ai déplace mon graphique à l'endroit souhaité.

ActiveSheet.Shapes("Graphique 1").IncrementLeft -510.75

je vais donc modifier

Activesheet pour lui donner un nom avec une variable
"Graphique 1" va lui aussi un nom avec une variable.

IncrementLeft, ce n'est pas terrible. Je le sais. (il faudrait pouvoir lui donner sa position exacte, pas un déplacement) Mais comment savoir ce qu'il y a d'autres.

Par rapport à Shapes, je ne sais si c'est une méthode, une propriété, une fonction (pb de vocabulaire).

Lorsque je fouille un peu dans l'éditeur VBA, je peux afficher les "definitions" (MAJ+F2)
Mais à Shapes, je ne trouve pas IncrementLeft, par contre, je le trouve a Shape (sans le "s")


Ma question n'est donc pas de savoir par quoi remplacer IncrementLeft, mais de savoir ou trouver ce qui existe pour remplacer IncrementLeft et de comprendre comment fonctionne ce satané langage de programmation.

« Donne un poisson à un homme, il mangera un jour. Apprends-lui à pêcher, il mangera toute sa vie »

2 réponses

via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 734
Modifié par via55 le 23/07/2014 à 16:52
Bonjour

Va voir ici : http://boisgontierjacques.free.fr/pages_site/lesimages.htm#Positionnement

Cdlmnt

"L'imagination est plus importante que le savoir." A. Einstein
2
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
Modifié par skk201 le 23/07/2014 à 17:06
Pas mal de coup de

Sub Positionnement()
  ActiveSheet.Shapes(1).Top = [B10].Top
  ActiveSheet.Shapes(1).Left = [B10].Left
End Sub 


Je connaissais pas ^^
0
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
Modifié par skk201 le 23/07/2014 à 17:07
Essaye ça :) Tu le colle au font de ton code et tu l'execute avec [F8] pour aller pas à pas.

Sub Graf_Depl
ActiveSheet.Shapes("Graphique 1").Top = 0
ActiveSheet.Shapes("Graphique 1").Left = 0
ActiveSheet.Shapes("Graphique 1").IncrementTop 100
ActiveSheet.Shapes("Graphique 1").IncrementLeft 100
End Sub


Si tu veux lui donner la position grace à une formule :

Sub Graf_Pos (Haut as integer, Gauche as integer)
ActiveSheet.Shapes("Graphique 1").Top = Haut
ActiveSheet.Shapes("Graphique 1").Left = Gauche
End Sub

'Comment tu l'utilises

Sub Utilisation
Graf_Pos (100, 100)
End Sub



Est-ce que tu es sûr de vouloir apprendre la différence entre Shapes et Shape ? :)
0