cs_Turok
Messages postés78Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention 3 décembre 2011
-
11 mars 2007 à 18:26
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 2014
-
11 mars 2007 à 20:31
Bonjour,
Alors voila, dans un jeux que je créé avec VBA sous excel, il y a des picturebox, et quand je click dessus, je change l'image de cette picturebox. Seulement voila, je constate que la picturebox ne se redessine pas, sauf si je reduit la fenetre excel et que je la réaffiche. J'aimerai donc savoir s'il y a une commande permettant soit de rafraichir la page, soit la picture box, sachant que j'ai essayé sans succés :
- ThisWorkbook.RefreshAll 'sa ne fait rien
- Image1.Update 'La méthode update de la classe OLEObject a échoué
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 mars 2007 à 18:35
Bonjour,
Ce n'est apparemment pas une pictureBox (VBA n'en a pas) mais une image ...
Reste à savoir s'il s'agit d'une contrôle image sur une Userform, d'une image placée dans une cellule de ta feuille ou d'un objet OLE inséré sur ta feuille...
cs_Turok
Messages postés78Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention 3 décembre 2011 11 mars 2007 à 18:41
Oui, il s'agit bien d'une image.
Je l'ai placé à la volée dans la feuille, donc je pense que c'est un objet OLE, d'ailleur l'erreur d'execution suivante le prouve : "La méthode update de la classe OLEObject a échoué"
cs_Turok
Messages postés78Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention 3 décembre 2011 11 mars 2007 à 18:57
Non cette méthode n'existe pas, mais je les ai toutes essayées et j'ai fini par réussir, la méthode à utiliser est "BringToFront", c'est vraiment pas évident à deviner lol.
Turok
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Turok
Messages postés78Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention 3 décembre 2011 11 mars 2007 à 20:01
C'est bizarre, dans le code ci dessous, je veux afficher une image, puis au bout de 2 secondes en afficher une autre. Mais quand j'execute le prog, l'image qui doit s'afficher avant le "sleep(2000)" ne s'affiche pas, même si je force son affichage avec "BringToFront" :
chemin = (ThisWorkbook.Path + "" + CStr(TableauCartes(Carte)) + ".bmp")
TabImages(Carte).Picture = LoadPicture(chemin)
TabImages(Carte).BringToFront ' force le rafraichissement de l'image
Sleep (2000)
chemin = (ThisWorkbook.Path + "" + CStr(17) + ".bmp")
TabImages(DerniereCarte).Picture = LoadPicture(chemin)
TabImages(Carte).Picture = LoadPicture(chemin)
TabImages(Carte).BringToFront ' force le rafraichissement de l'image
DerniereCarte = 0
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 mars 2007 à 20:31
Ton sleep vient peut-être un peu tôt (et un sleep fige tout)
Existe-t-il doevents sous VBA ?
Si oui, il faudrait en placer un avant le sleep, voire utiliser (je dirais même que ce serait préférable) la fonction Timer pour attendre que la nouvelle image soit chargée avant de continuer.