Un peu de méthode ...

guigol Messages postés 66 Statut Membre -  
skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    1. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
       
      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
  2. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
     
    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