XL 2016 Shape qui ne s'affiche pas

  • Initiateur de la discussion Initiateur de la discussion ya_v_ka
  • 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 !

ya_v_ka

XLDnaute Impliqué
Bonjour le monde,

Mon souci du jour :

J'ai créé une macro qui met un certain temps. Afin de faire savoir que tout va bien, au début de l'exécution j'affiche un shape (.visible = true), existant mais masqué sur la feuille au départ, et le re-masque juste à la fin du traitement.
En pas par pas tout fonctionne à merveille, mais lorsque la macro tourne normalement ça ne marche pas !
J'ai rajouté un .screenupdating = true pour être sûr, j'ai essayé avec un wait, un sleep, des beep, rien n'y fait !

Si quelqu'un a une idée ?

Merci d'avance

Ya'v
 
Bonjour à tous
J'ai lu et relu et re-relu tous les messages
ce que j'y lis mets pour moi en exergue la nécessité de laisser le système exécuter ses messages en temps opportun. Utiliser donc la fonction Doevents.
Attention toutefois l'utiliser impérativement dans l'ordre logique. exemple
VB:
shapes(....).visible = true
doevents 

shapes(....).visible = false
doevents

shapes(....).visible = true
doevents 

shapes(....).visible = false
doevents

ces doevents doivent venir immédiatement après le changement d'état souhaité. Et donc également avant vos msgboxes éventuels

Ce n'est par ailleurs pas par hasard que je repasse à false. Je n'écarte en effet pas l'éventualité de la présence de shapes empilés, Le 1er cachant le suivant , etc ...
 
Re tout le monde,
Jmfmarques, si vous prenez ma maquette du post #13, mais pour cela il faut ouvrir la PJ 😉
et que vous insérez un DoEvents comme cela :
VB:
Sub Montre()
    ActiveSheet.Shapes("Image 2").Visible = True
    DoEvents
    MsgBox "Normalement l'image devrait être présente"
End Sub
Eh bien ça ne marche pas.
Lorsque le Msgbox s'exécute, il est bien visible mais la Shape est toujours invisible, jusqu'à la fermeture du msgbox.
 
Bonsoir à tous et re à ya-v-ka !

Sylvanu j'ai repris ton classeur, avec Calculate seulement ca ne montre pas l'image si il y a exécution d'un gros loop...


Dacodac avec toi jmfmarques pour DoEvents comme je disais plus haut (c'est aussi souvent nécessaire sur les USF en association de "Repaint"... mais c'est une autre histoire)

Bon j'ai refait un fichier de simulation sur ta base Sylvanou, tu enlèveras la ligne en commentaire pour voir que même les deux DoEvents associé au Calculate ne suffisent pas !

J'ai mis aussi une Statusbar en place pendant le loop...

Donc selon ce file il faudrait "démanteler" le code en différentes routines (Sub) avec des Wait .... C'est plus que lourdingue....
.
@+Thierry
 

Pièces jointes

Bonjour sylvanu. Vraiment désolé, mais il est hors de question que je déroge à la discipline que j'observe. je n'ouvre donc pas ce classeur.
J'ai par contre créé un classeur dans lequel j'ai utilisé le code dont j'ai montré le principe -->> aucun problème.

Je me suis ensuite amusé à "empiler" les shapes (l' un au dessus de l'autre), comme le scénario dont j'ai fait plus haut allusion à l'existence. Et là, bien évidemment, impossible d'afficher le second shape après le 1er, sauf, par exemple, à rendre d'abord invisible le 1er.

J'ai des difficultés à imaginer une autre gêne que celle-là 😉

EDIT : mais (histoire d'en avoir le coeur net), invitons donc ya_v_ka à nous faire savoir clairement si les shapes dont il s'agit sont oui ou non empilés (l'un au-dessus de l'autre). J'en suis personnellement intimement persuadé.
 
Dernière édition:
Bonjour sylvanu. Vraiment désolé, mais il est hors de question que je déroge à la discipline que j'observe. je n'ouvre donc pas ce classeur.
J'ai par contre créé un classeur dans lequel j'ai utilisé le code dont j'ai montré le principe -->> aucun problème.

Je me suis ensuite amusé à "empiler" les shapes (l' un au dessus de l'autre), comme le scénario dont j'ai fait plus haut allusion à l'existence. Et là, bien évidemment, impossible d'afficher le second shape après le 1er, sauf, par exemple, à rendre d'abord invisible le 1er.

J'ai des difficultés à imaginer une autre gêne que celle-là 😉

EDIT : mais (histoire d'en avoir le coeur net), invitons donc ya_v_ka à nous faire savoir clairement si les shapes dont il s'agit sont oui ou non empilés (l'un au-dessus de l'autre). J'en suis personnellement intimement persuadé.

Oui, il y a 4 shapes empilés et masqués, et 1 seul est appelé en .visible = true et remis en false avant qu'un autre puisse être appelé...
Par contre je peux les rendre visible à loisir dans le workbookopen.
Et si j'en laisse 1 affiché, il se masque comme voulu.

J'essaye de ne laisser qu'1 shape et je reviens...
 
Bonjour à tous,

Quelle version d'excel ? >= 2013 ?
VB:
'        Dim win As Window
'        ...
        Worksheets("000").Shapes("Forme_2").Visible = True
       
        Set win = Application.ActiveWindow
        win.Visible = False
        win.Visible = True
        Application.Wait DateAdd("s", 1, Now())
testé ok sur ton fichier.
Le tempo n'est là que pour avoir le temps de voir la forme.
eric

Edit : plus précisément ces lignes devraient être mise après chaque Worksheet.Activate
 
Dernière édition:
Bonjour à tous,

Quelle version d'excel ? >= 2013 ?
VB:
'        Dim win As Window
'        ...
        Worksheets("000").Shapes("Forme_2").Visible = True
       
        Set win = Application.ActiveWindow
        win.Visible = False
        win.Visible = True
        Application.Wait DateAdd("s", 1, Now())
testé ok sur ton fichier.
Le tempo n'est là que pour avoir le temps de voir la forme.
eric

Excel 2016

Effectivement ça marche ! Merci
 
Je n'avais pas vu… et je note. Merci.

Je vais encore tester avec un label, toujours visible mais en en changeant les options et la caption...

Par contre, si qq1 sait expliquer pourquoi il ne s'affiche pas normalement et simplement avec un .visible = true ? ……………………..
 
- 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

Retour