Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA : Dessiner sur une image

  • Initiateur de la discussion Initiateur de la discussion valou
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

valou

XLDnaute Nouveau
Bonjour à tous,

Je souhaiterais "dessiner" sur une image présente dans un userform : ajouter une marque rouge (croix ou point) à l'endroit ou je clique sur l'image, un peu comme un jeu des sept différences 🙂

Enfin, lorsque je clique sur Ok, j'aimerais que ces points apparaissent sur l'image du classeur.

Je ne sais pas trop par ou commencer, et si il existe des fonctions qui peuvent me permettre ceci.

je vous joins un fichier avec un userform et une image, jusque la y'a pas trop de problèmes !

Merci pour les pistes / solutions, je reste dispo pour plus d'info

Val
 

Pièces jointes

Re : VBA : Dessiner sur une image

Bonjour.
Ils ne se sont toujours pas décidé à mettre en place un système simple pour modifier les pixels d'une image dans un UserForm, et j'ai bien peur qu'ils ne le feront hélas jamais.
Il faut donc passer par plein d'API de la Lib "gdi32"
 
Re : VBA : Dessiner sur une image

Bonjour, je pensais utiliser des fonctions du genre :

-Localiser le pointeur suivant X et Y sur l'image
-Lors du clic faire apparaitre une image (carré rouge tout petit) à l'endroit du pointeur grâce aux coordonnées par dessus mon image de base..

C'est faisable ?

Merci beaucoup
 
Re : VBA : Dessiner sur une image

Oui, ça ça l'est un peu plus.
Cliquez deux fois sur votre Image. Image1 étant alors sélectionné dans la liste de gauche qui surmonte la fenêtre de code, intéressez vous dans celle de droite aux MouseMove, MouseDown et MouseUp.
Il vous en faudra aussi pour le petit carré…
Conseil: mettez des Label de mise au point destinés à recevoir comme Caption les valeurs X et Y
 
Re : VBA : Dessiner sur une image

Dranreb, Pierre,

Merci beaucoup, c'est à chaque fois un plaisir de trouver de l'aide aussi rapidement sur ce forum.
Je vais étudier ces quelques lignes et essayer d'optimiser tout ça pour mon projet 🙂

A bientôt
 
Re : VBA : Dessiner sur une image

Bonjour à toutes et à tous,

@ tatiak 🙂,

Pour ce nouveau-superbe travail, j'applaudis de mes quatre sabots !

Mais... Où qu'il est le fil 🙂 ? Où qu'il est l’hameçon 😕 ? Où qu'il est le poisson 😱 ?

A bientôt 😉😀
 
Re : VBA : Dessiner sur une image

Chapeau, c'est vraiment sympa. J'ai compris la démarche.

Une dernière petite question,

Code:
lbl.Object.Picture = LoadPicture(ActiveWorkbook.Path & "\croix.gif")

L'image doit obligatoirement être chargée depuis un dossier ? Ou bien il est possible de la laisser trainer dans un coin du tableur tel que dans l'usf ?
 
Re : VBA : Dessiner sur une image

Joli !!

Mais arriveras-tu à combiner un MouseDown avec un MouseMove pour déssiner sans cliquer mille fois..? 😉
Beau travail

Histoire de revenir sur mon projet, lorque je mets mes images du usf dans un cadre (frame) les carrés rouges n'apparessent plus 🙁
Y'a t-il une ligne que je peux ajouter qui gère les plans des objets ? (avancer, reculer)
Je crois que les carrés rouges appararaissent derriere le cadre
 
Re : VBA : Dessiner sur une image

Je me répond moi même, si ça peut être utile à quelqu'un..
Pour ajouter l'image dans un frame et non directement dans le usf :

La ligne suivante :

Code:
 Set lbl = Controls.Add("Forms.Image.1")

Devient :

Code:
    Set lbl = Frame1.Controls.Add("Forms.Image.1")

Tout simplement
 
Re : VBA : Dessiner sur une image

Bonjour à tous

@ tatiak :Belle idée ! Chapeau ! !

@ valou :
Mais arriveras-tu à combiner un MouseDown avec un MouseMove pour déssiner sans cliquer mille fois..?

un essai en utilisant MouseMove on dessine en maintenant le clic gauche:

Code:
Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
 Dim lbl As Object
 If Button = 1 Then ' si clic gauche
    Set lbl = Controls.Add("Forms.Label.1")
    With lbl
        lbl.Left = X + Image1.Left - 1
        lbl.Top = Y + Image1.Top - 1
        lbl.Width = 2
        lbl.Height = 2
        lbl.BorderStyle = 0
        lbl.BackColor = coloris_encours
    End With
 End If
End Sub

A+
 
Re : VBA : Dessiner sur une image

Salut Pierre,

Merci pour ton retour,
Ok pour la fonction zorder, testée et approuvée.
J'ai utilisé une fonction similaire pour le changement d'image sur mon projet, tout fonctionne parfaitement 🙂

A un de ces jours,

Val
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
691
  • Question Question
XL pour MAC Formule image
Réponses
10
Affichages
973
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…