IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Un peu de méthode


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Février 2013
    Messages : 66
    Par défaut Un peu de méthode
    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é.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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. #2
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Les propriétés Top, Left, Right de ton (tes) Shape(s) sont accessibles directement.
    Je suppose qu'au fond dans les coulisses, elles font appel à la méthode Increment. que point n'aime évoquer

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par guigol Voir le message
    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.
    L'enregistreur de Macro n'est que la moitié de la solution.
    L'autre moitié, c'est l'aide intégrée de VBA Excel (le point réinterrogation bleu en haut à droite de ton éditeur).
    Il peut te permettre, entre autre, de connaitre toutes les méthodes et propriétés de l'objet que tu manipules.

    Par exemple, si tu tapes Shape (sans "s" lorsque ça ne s'applique qu'à un objet), tu obtiendras une liste dans laquelle tu trouveras, entre autres, "Membres de Shape".
    Clique dessus et tu obtiendras tous les membres de Shape, entre autres Left, Top, Height et Width (Voir même TopLeftCell que perso, je trouve très pratique) qui répondront à ton problème.

    Par rapport à Shapes, je ne sais si c'est une méthode, une propriété, une fonction (pb de vocabulaire).
    La différence entre méthode et propriété est parfois peu claire.
    En gros, une méthode permet de faire quelque chose alors qu'une propriété donne accès à une valeur ou un objet.
    La plupart du temps, une méthode arrive en finale dans une chaîne d'objet (mais ce n'est pas systématique).

    Par exemple, la méthode Find de Range donne un objet auquel il est possible d'accoler des propriétés ou des méthodes.
    Difficile donne de donner une définition.
    Mais ce n'est pas vraiment important.

    Mais à Shapes, je ne trouve pas IncrementLeft, par contre, je le trouve a Shape (sans le "s")
    Shapes est la collection (l'ensemble) des objets Shape.
    Shapes("Graphique 1") est un objet Shape (sans s) de la collection Shapes.

    Tout comme Worksheets("Feuil1") est un objet Worksheet (sans s) et non pas un objet Worksheets (qui est une collection de tous les Worksheet)

    Il faut bien faire la différence entre les deux. C'est indispensable pour pouvoir se servir correctement de l'aide VBA.

    C'est pour ça que Shapes à très peu de membres. Ce sont uniquement des membres qui s'applique à la collection de l'ensemble de ces objets et non pas à UN objet.

Discussions similaires

  1. traitements séquentiels un peu de méthode requise
    Par cobaye13 dans le forum Général VBA
    Réponses: 7
    Dernier message: 22/04/2015, 08h32
  2. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26
  3. RTL60 ( la jsuis un peu confused)
    Par magdoz dans le forum Outils
    Réponses: 7
    Dernier message: 23/07/2002, 11h20
  4. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 08h22
  5. DirectX 6, un peu en retard ... :\
    Par multani dans le forum DirectX
    Réponses: 3
    Dernier message: 28/05/2002, 19h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo