× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Bureautique
 userform : animer image au passage de la sourisSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Boogie Palace
  Posté le 21/02/2011 @ 16:25 
Aller en bas de la page 
Petit astucien

bonjour,

sur un userform, j'ai ajouté une image que je souhaite faire "vibrer" au passage de la souris sur celle-ci.
pour cela je crée une boucle qui déplace alternativement de gauche à droite l'image de deux pixels, tous les 3 centièmes de seconde.

j'ai donc essayé le code suivant (60 est la largeur/hauteur de mon image), mais l'image continue de bouger, même quand le curseur de la souris ne le survole plus.

--------------------------------------------------
Private Sub Image_Aide_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
TEMPO = Timer
Do
If Image_Aide.Left = 396 Then Image_Aide.Left = 394 Else Image_Aide.Left = 396
Do
DoEvents
Loop Until Timer >= TEMPO + 0.03
TEMPO = Timer
Loop Until X >= 0 = False Or X <= 60 = False Or Y >= 0 = False Or Y <= 60 = False

End Sub
--------------------------------------------------

les X et Y représentent les coordonnées du curseur survolant l'image.
mais curieusement, c'est comme si, malgré le curseur hors des coordonnées X = 0 à 60 et Y = 0 à 60, X et Y conservaient leur dernière valeur connue, car la boucle continue sans cesse.

j'ai alors cherché comment obtenir les coordonnées du curseur sur tout le userform, de façon à terminer ma boucle en prenant ces coordonnées au lieu de celles de l'image uniquement, mais en vain.

qqn saurait faire en sorte que la boucle se déclenche uniquement au passage de la souris sur l'image ? (et s'arrête quand on n'est plus dessus).


merci d'avance de faire chauffer vos neurones d'astuciens.
BP

Publicité
galopin01
 Posté le 21/02/2011 à 21:36 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

MouseMove réagit comme un déclencheur : Il n'y a pas d'évènement NotMouseMove.

En d'autre terme, il faut trouver une autre moyen d'arrêter le tremblement...

Une possibilité :

Dim iFin 'à placer en tête du Module avant toute macro

Private Sub Image_Aide_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
iFin = 1
Do While Not iFin = 2
If Image_Aide.Left = 396 Then Image_Aide.Left = 394 Else Image_Aide.Left = 396
DoEvents
Loop
End Sub

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If iFin = 1 Then iFin = 2
End Sub

A+

Anonyme
 Posté le 22/02/2011 à 07:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien

BoogiePalace

galopin01

Je ne sais pas se ceci peut intéresser,mais je pense que ça correspond un peu à se que tu veux faire(si j'ai bien compris)

dans le lien que je te donne tu passes ta souris sur la petite malette et elle s'ouvre,une fois que tu as déplacer la souris elle se ferme.Il y a un script avec.Peut-etre que tu peux t'inspirer.

http://yves.marsal.free.fr/myoast07.htm

Boogie Palace
 Posté le 22/02/2011 à 13:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

merci galopin, ton astuce est parfaite, ça vibre uniquement quand la souris est sur l'image.

merci choupettes, mais je ne connais pas le HTML, je n'aurais pas pu adapter ce code de l'alternance des images (malette qui s'ouvre).

Boogie Palace
 Posté le 22/02/2011 à 19:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

suis allé un peu vite pour marquer le sujet résolu.

m'étais pas aperçu que dans ton code, galopin, la temporisation avait disparu (ce qui me permettait d'ajuster la vitesse de la vibration).

alors j'ai tenté de la réintégrer tout seul dans ton code, mais en vain.

cette temporisation est-elle compatible avec ton astuce qui arrête la boucle de mouvement de Image_Aide ?

galopin01
 Posté le 23/02/2011 à 13:45 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Tu peux modifier comme ça :

Private Sub Image_Aide_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
iFin = 1
TEMPO = Timer
Do While Not iFin = 2
If Image_Aide.Left = 396 Then Image_Aide.Left = 394 Else Image_Aide.Left = 396
Do
DoEvents
Loop Until Timer >= TEMPO + 0.3
TEMPO = Timer
DoEvents
Loop
End Sub

Bon Euh... Excel est un tableur hein : Je t'explique pas ce que je pense de ce genre de truc !

Boogie Palace
 Posté le 23/02/2011 à 16:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

merci galopin.

cependant je me suis aperçu d'un truc bizarre.

les deux scripts que tu m'as fourni (sans, puis avec la temporisation réglable) fonctionnent : l'image vibre quand la souris survole l'image, et s'arrête de bouger quand la souris est ailleurs sur le userform.

mais, si je bouge la souris (sans interruption) pendant 5 secondes en restant au dessus de l'image, la vibration finit par être perpétuelle, même avec la souris en dehors de l'image.

le click sur l'image n'a alors plus d'effet (cacher le userform et basculer sur un autre onglet du classeur), et plus aucun autre bouton du userform ne fonctionne.
seul le ControlTipText de cette image est encore fonctionnel (s'affiche quand la souris est dessus, sinon disparaît)

alors je peux miser sur le fait que les utilisateurs ne joueront pas trop avec cette image qui vibre.
mais ça m'embête de fournir l'outil avec une faille qui peut le faire partir sucrer les fraises.

dans la procédure Userform_MouseMove, j'ai ajouté : Image_Aide.Left = 396
en pensant que ça forcerait l'image à ne plus bouger, mais ça ne change rien.

j'ai peu d'espoir quand à la résolution de cette faille, mais j'en parle quand même, j'ai souvent été surpris par les astuces qui peuvent émaner de ce forum.

galopin01
 Posté le 23/02/2011 à 17:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Mets le 1er DoEvents avant le 2ème Do...

If Image_Aide.Left = 396 Then Image_Aide.Left = 394 Else Image_Aide.Left = 396
DoEvents
Do
Loop Until Timer >= TEMPO + 0.05

A+

Boogie Palace
 Posté le 24/02/2011 à 16:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

ouf! ça fonctionne sans bug cette fois.
bravo et merci galopin.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
24,99 €Fire TV Stick Basic Edition à 24,99 €
Valable jusqu'au 05 Juin

Amazon fait une promotion sur la nouvelle version de sa clé HDMI Fire TV Stick Basic Edition qu'il propose à 24,99 € au lieu de 39,99 €. Cette clé HDMI à brancher sur votre TV possède un processeur quadricoeur, 1 Go de RAM et 8 Go d'espace de stockage, le WiFi et le bluetooth. Une télécommande est fournie. Avec elle, vous allez pouvoir voir facilement Prime Video, Netflix, Disney+, YouTube, Spotify sur votre TV Full HD. Cette nouvelle version est désormais compatible Alexa et possède une télécommande améliorée (avec plus de boutons de contrôle).


> Voir l'offre
89,99 €Enceinte sans fil bluetooth rechargeable JBL Flip 5 à 89,99 €
Valable jusqu'au 03 Juin

Amazon fait une promotion sur l'enceinte sans fil bluetooth rechargeable JBL Flip 5 qui passe à 89,99 € livrée gratuitement au lieu de 129 €. Connectez sans fil votre ordinateur, votre tablette ou votre smartphone et écoutez votre musique en stéréo avec le son JBL ample et riche avec des graves puissantes. Son micro intégré vous permettra également de répondre aux appels téléphoniques. L'autonomie est de 12h et l'enceinte est résistante et est étanche (IPX7).


> Voir l'offre
26,71 €Carte mémoire SDXC UHS-I U3 SanDisk Extreme Plus 128 Go (jusqu'à 170 Mo/s) à 26,71 € livrée
Valable jusqu'au 01 Juin

Amazon Allemagne fait une promotion sur la carte mémoire SDXC UHS-I U3 SanDisk Extreme Plus d'une capacité de 128 Go qui passe à 22,19 € (avec la TVA ajustée). Comptez 4,52 € pour la livraison en France soit un total de 26,71 € livrée alors qu'on trouve la carte ailleurs à partir de 60 €. Cette carte mémoire offre des vitesses jusqu'à 170 Mo/s en lecture et 90 Mo/s en écriture et intègre des mécanismes afin de gérer l'usure des cellules de la carte et augmenter ainsi sa durée de vie. Une valeur sûre pour les plus exigeants. Elle résiste aux températures extrêmes, à l'eau, aux chocs et aux rayons X. La carte est fournie avec le logiciel de récupération de données RescuePRO Deluxe qui facilite la récupération des fichiers qui ont été effacés accidentellement.

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de douanes. Si vous êtes perdu en allemand, vous pouvez traduire le site en anglais.


> Voir l'offre

Sujets relatifs
Déplacement automatique d'une image avec la souris
Légende passage souris Cmd Button
export cellule vers image
Inserer simplement une image dans un Post
image signature outlook 2013
planification automatique image de disque d'acronis
[Image dans formulaire ACCESS 2010]
Impossible d'ajouter texte à coté d'une image sous Works
Je n'arrive plus à insérer une image dans Word 2007
convertir un graphique Excel en image .JPG
Plus de sujets relatifs à userform : animer image au passage de la souris
 > Tous les forums > Forum Bureautique