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 :

dessiner avec Excel VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Par défaut dessiner avec Excel VBA
    Bonjour,
    Je souhaiterais pouvoir afficher une image bitmap à partir d'un fichier bmp, puis dessiner des formes sur cette image (point, ligne, polygone, ...) à partir d'un programme VBA. Je souhaiterais également pouvoir récupérer la position de la souris lorsque l'utilisateur clique sur l'image.
    Quels types d'objets sont les mieux adaptés pour cela ?
    Merci,
    Guillaume
    PS:j'utilise Excel 2002

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Pour ce qui est de la première partie : VBA n'a pas prévu le coup ...
    Un contrôle image, par ailleurs, n'est pas (même sous VB6) dote d'un contrôle de dispositif (hdc) permettant d'y dessiner quoi que ce soit !

    Pour ce qui est de la seconde partie (récupérer la position de la souris sur l'image) : Quelle position ? La position relative ou la position/écran ? ... il faut être précis...
    Les deux sont réalisables, mais nous n'y viendrons que si tu est toujoiurs intéréssé, compte tenu de la réponse obtenue en ce qui concerne la première partie, bien évidemment ....

  3. #3
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Les évènements MouseUp et MouseDown d'un composant Image placé sur une feuille de calcul ou sur un UserForm permettent de récupérer la position du pointeur de la souris au moment de l'enfoncement ou du relâchement du bouton.

    Petit exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Image1_MouseDown(ByVal Button As Integer, _
                                 ByVal Shift As Integer, _
                                 ByVal X As Single, _
                                 ByVal Y As Single)
        If Button = xlPrimaryButton And Shift = 0 Then
            MsgBox "X = " & X & " et Y = " & Y
        End If
    End Sub
    J'ai un peu séparé les différents argument de la procédure (évènementielle) pour une meilleure lisibilité.

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, zazaraignée,

    Faut faire attention avec ce sacré VBA ...
    Tiens : insère donc une image de 20 de large par 20 de haut ...
    Clique à peu près en son centre et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
      MsgBox X
    End Sub
    ===>> X affichera beaucoup plus que 20 !!!
    hier ou avant-hier, j'ai pris le temps d'exposer ces choses-là, de les expliquer de long en large et de donner la solution, en recommandant de ne pas la perdre ...(je ne pensais alors pas que l'on en aurait besoin si tôt ...)
    Pas préservée ? ===>> à chercher !

  5. #5
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Tout dépend de l'échelle utilisée. Déjà que les propriétés Height et Width sont en points... 12 points pour un pica... mesures typographiques... tu connais?

    Sur un écran, il y a 72 pixels au pouces pour certains, 96 pour d'autres... 1pt (un point) = 1/72 po.

    C'est tout ce que j'ai pu soutirer de l'aide de VBA Excel (et MSForms) pour l'instant.

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Re...
    Absolument rien à voir avec l'écran ...
    Ce sera toujours le même calcul, quel que soit l'écran et sa résolution , dès lors que l'on ne parle pas de pixels, mais de twips et de points (échelle de VBA) ...
    Allez ... je cherche ma propre intervention et reviens ...

    Voilà :
    http://www.developpez.net/forums/d62...s-deplacement/
    lire attentivement mon message n° 12 et comprendre pourquoi diviser par 20 quel que soient l'écran et sa résolution.

    On va voir si cela se perd à nouveau (et je n'y reviendrais alors plus jamais) ou si on sait le "mettre dans un petit coin"...

  7. #7
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Rien à f...aire avec la résolution de l'écran sauf pour le rendu à l'affichage. D'où la mention de l'échelle de l'écran dans ma dernière intervention.

    Ceci dit, comme le code que j'ai fourni a été vérifié et fonctionne sans provoquer l'embrouille que tu mentionnais tout à l'heure, je maintient et persiste.

    De toutes façons, pour détecter la position du clic par rapport à l'écran, il faut passer par les fonction de l'API Windows. Alors attendons de voir ce que désire rawalpundi avant de nous disputer pour si peu.

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Pour ce qui est de la seconde partie (récupérer la position de la souris sur l'image) : Quelle position ? La position relative ou la position/écran ? ... il faut être précis...Les deux sont réalisables, mais nous n'y viendrons que si tu est toujoiurs intéréssé, compte tenu de la réponse obtenue en ce qui concerne la première partie, bien évidemment ....
    Et on peut y parveir de deux manières, pour la position par rapport à l'écran : une avec une fonction de l'API, en effet (et je la recommande) , et l'autre avec seulement VBA (si l'on y tient)...

    Le "rendu", zazaraignée, n'a rien à voir avec la position relative, tant en abscisse qu'en ordonnée ... le "rendu" ne fera qu'un étirement "visuel" de l'image, sans rien changer de se qui se trouve à un point (x,y) réel, sur lequel l'utilisateur cliquera également "visuellement" (ce qui rétablit tout arithmétiquement).
    Je te souihaite une bonne journée (toi tu la commences, la mienne se termine).

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Par défaut
    Il n'y a vraiment pas moyen de dessiner dans un bitmap ? Par exemple en créant un bitmap dans lequel on peut dessiner, puis en important une image dedans ? Le résultat peut rester visuel, je n'ai pas vraiment besoin de sauvegarder le tout dans le fichier bmp.
    Pour le clic de souris, mon besoin est de pouvoir afficher une carte, que l'utilisateur clique à un endroit, que le programme VBA calcule un polygone centré sur ce point suivant certains critères, puis d'afficher ce polygone sur la carte.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Va jeter un coup d'oeil la-dessus : http://arkham46.developpez.com/artic...ice/clgdiplus/

    Arkham a fait un pas mal de chose sur les images, dont un fichier Excel à télécharger : http://arkham46.developpez.com/artic...lgdiplus/#LIII

    Je n'ai jamais vraiment eut le temps de me pencher sur tout cela (Arkham est vraiment très fort sur le sujet), mais cela mérite d'y jeter un coup d'oeil.

    Philippe

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Une question par une question sera plus raisonnable.

    En ce qui concerne le dessin avec VBA/Excel (qui n'est pas Access...) , il vaudra mieux que tu lises entièrement cette discussion
    http://www.developpez.net/forums/d62...-colorisation/
    laissée sans suite,
    dans laquelle j'"ai dit tout ce que j'"avais à dire sur le sujet ....

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Par défaut
    Effectivement la méthode d'Arkham a l'air bien. J'ai commencé à tester et ça fonctionne (affichage d'image, dessiner des formes, détection du clic souris). Il n'y même pas besoin de rajouter ou paramétrer de librairie ! Je continue à creuser mais ça devrait répondre à mes questions.
    Merci pour vos réponses !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tracer des graphiques à la chaîne avec Excel/VBA
    Par mouletabille dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/08/2008, 10h39
  2. exploiter fichier SAP avec Excel VBA
    Par toto92 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/03/2008, 13h27
  3. erreur de conexion a une base de donneés access avec excel(vba)
    Par leo13 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 27/11/2006, 09h09
  4. stat avec excel vba
    Par winieloursonaub dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/09/2006, 19h44
  5. dessin avec Excel
    Par blondelle dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/08/2006, 22h32

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