Forcer le rafraichissement d'une picturebox

cs_Turok Messages postés 78 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 3 décembre 2011 - 11 mars 2007 à 18:26
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 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é

Turok

9 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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...
0
cs_Turok Messages postés 78 Date d'inscription mardi 30 décembre 2003 Statut Membre Derniè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é"

Turok
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
11 mars 2007 à 18:49
Essaye de voir si cet objet à une méthode Repaint (je n'ai pas VBA, mais je pense que peut-être bien que oui)
0
cs_Turok Messages postés 78 Date d'inscription mardi 30 décembre 2003 Statut Membre Derniè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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
11 mars 2007 à 18:58
Si c'est un pbjet OLE, il devrait pâr aolleurs être assorti d'une méthode Update. Si oui, il faut l'utiliser.


ton_objet.Update
0
cs_Turok Messages postés 78 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 3 décembre 2011
11 mars 2007 à 19:18
Quand j'ulise update sa me renvoi l'erreur "La méthode update de la classe OLEObject a échoué"

Turok
0
cs_Turok Messages postés 78 Date d'inscription mardi 30 décembre 2003 Statut Membre Derniè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

Turok
0
cs_Turok Messages postés 78 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 3 décembre 2011
11 mars 2007 à 20:29
Problème résolu grace a un ancien post.

J'ai remplacé le Sleep par :

For j = 1To40
Sleep (100)
DoEvents
Next
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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.
0
Rejoignez-nous