XL 2016 Shape qui ne s'affiche pas

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
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re-bonsoir Sylvanu et les autres

Quelqu'un a regardé mon fichier en #33 ? J'ai pu avancer un peu dans le remède pour le covi'nvisible ;)

Il faut remettre ceci actif ceci pour que ca show l'image !
'Application.Wait (Now + TimeValue("00:00:01")) ''' A REMETTRE ACTIF POUR VOIR l'IMAGE AVANT EXECUTION

@+Thierry
 

ya_v_ka

XLDnaute Impliqué
Re-bonsoir Sylvanu et les autres

Quelqu'un a regardé mon fichier en #33 ? J'ai pu avancer un peu dans le remède pour le covi'nvisible ;)

Il faut remettre ceci actif ceci pour que ca show l'image !
'Application.Wait (Now + TimeValue("00:00:01")) ''' A REMETTRE ACTIF POUR VOIR l'IMAGE AVANT EXECUTION

@+Thierry

Désolé… Oui, j'avais regardé, mais comme d'hab je peine à comprendre...

message n'est là que pour l'info
execution devrait correspondre à ma procédure
donc il me reste à ajouter après mon .visible : calculate, doevents et wait

ou j'ai rien compris pour changer ?
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonsoir

En fait la problématique, c'est que ça sent le gaz de toute manière cette histoire de shape sur feuille...
Moi je laisserais plutôt le UserForm visible et si possible avec une barre de progression pendant le traitement (si il y a un moyen de calculer une incrémentation numérique de ton traitement)

Car là dans mon basar #33 (qui en plus ne passe pas si on fait la "game boy" avec...post #48) c'est que ça rallentit encore plus une macro lente puisque on y met des "Wait" en scindant les Subs avec des DoEvents en veux-tu en voilà.... Pas très orthodox, juste pour faire patienter le User !!!

@+Thierry
 

ya_v_ka

XLDnaute Impliqué
Re...

Je vais réfléchir à une autre solution...

En tous cas MERCI à tous, j'ai quand même appris comment passer un message dans la statusbar, compris à quoi devrait servir un doevents, vu une manière plus simple et plus précise de chronométrer une procédure et réfléchi 4 heures à mon souci !

Donc je ne suis pas venu pour rien :)

Bonne continuation et encore merci

Ya'v
 

eriiic

XLDnaute Barbatruc
Par contre, si qq1 sait expliquer pourquoi il ne s'affiche pas normalement et simplement avec un .visible = true ?
Le pb c'est l'arrivée de la gestion SDI de l'interface avec excel 2013
Avec Worksheet.Activate tu crois la feuille active, tu vois la feuille active mais ... elle ne l'est qu'à moitié.
D'où le palliatif proposé (qui n'a pas l'air de te plaire)
Exemple : sélectionne D8, lance ta macro avec l'erreur et annule à la 2nde boite de dialogue.
Maintenant essaie de faire une saisie. Impossible... Obligé de recliquer la feuille pour la rendre vraiment active.
Le pire que j'avais vu, c'était que la saisie manuelle partait en fait dans la précédente feuille active !!!
Mais bon, libre à toi de chercher autre chose :)
eric
 

ya_v_ka

XLDnaute Impliqué
Le pb c'est l'arrivée de la gestion SDI de l'interface avec excel 2013
Avec Worksheet.Activate tu crois la feuille active, tu vois la feuille active mais ... elle ne l'est qu'à moitié.
D'où le palliatif proposé (qui n'a pas l'air de te plaire)
Exemple : sélectionne D8, lance ta macro avec l'erreur et annule à la 2nde boite de dialogue.
Maintenant essaie de faire une saisie. Impossible... Obligé de recliquer la feuille pour la rendre vraiment active.
Le pire que j'avais vu, c'était que la saisie manuelle partait en fait dans la précédente feuille active !!!
Mais bon, libre à toi de chercher autre chose :)
eric

Bonjour,

D'abord merci pour l'info
Ensuite, ce n'est pas que ça n'a pas l'air de me plaire, au contraire, cela semble la seule manière d'y arriver… Par contre, vu le nombre de passage de feuille à feuille que contiennent mes codes, je n'ai pas encore réussi à tester toutes les situations, et je dois encore comprendre, au cas par cas, où il m'est nécessaire de rajouter ton code ! (bien que tu m'aies parfaitement aiguillé !)
Tout ceci ne m'empêchant pas, jusqu'ici, d'envisager de substituer un label, une étiquette ou autre chose à mon shape… Mais jusque-là, le souci est le même pour tous les objets.
N'étant pas un grand pro de programmation, tout ceci me prends du temps, mais jamais je ne me permettrais de dénigrer une solution proposée à l'une de mes questions, car comme disait le sage : Si tu ne veux pas connaître la réponse, ne pose pas la question !
Mais il est vrai que j'ai zappé ta solution dans mes remerciements et je te prie de m'en excuser !

MERCI encore à TOUS !

Ya'v
 

patricktoulon

XLDnaute Barbatruc
re
@eriiiic
Le pb c'est l'arrivée de la gestion SDI de l'interface avec excel 2013
et qui c'est encore accentué avec 2016 qui dispose de plus de mémoire allouée a l'instance de l'application excel que les versions précédentes et qui malheureusement n'inclut pas le refresh du window
en effet la mémoire doit être lu pour être dispo :confused:
conclusion
avec 2016 éviter tout ce qui doit être rafraîchi a l’écran du genre image et compagnie ;)

un bel exemple du mieux est l'ennemi du bien ;)
 

patricktoulon

XLDnaute Barbatruc
Bonjour eriiiic
ben oui inquiétant je sais pas, désolant oui!!
car l'information leur est remontée depuis un moment et a ce jour visiblement aucun kb pour corriger les clisd peut être n'y a t il pas de solution avec l'architecture de l'app en 2016
je ne serait pas étonné aussi que l'inclusion de powerquery n'y soit pas pour quelque chose (je suppute)
en tout cas il est clair et facilement vérifiable qu'un même fichier chargé sur 2007 , 2013 , 2016 est 1.7 fois plus lourd que la version précédente sur la quelle il est chargé en terme d'occupation mémoire alloué
c'est bien pour une raison ;)

2007 et (2013 ou 2016) a des soucis parfois avec le res.xml intégré aussi bug à l'ouverture de fichier

j'ai tellement disséqué la chose et trouvé tellement de raisons possibles que j'ai mis plus de 10 ans à passer sur 2013 et encore forcé et contraint pour les échanges de fichiers

la plus flagrante sur 2016 c'est l’accès au clipboard 7 fois plus longue
c'est énorme dans certaines conditions

une un peu moins flagrante aussi mais néanmoins handicapante c'est l’accès au propriété d'object créés dynamiquement (exemple les chart )3 fois plus long

alors a l'oeil humains c'est rien mais dans un contexte d’exécution de code ,ben ça fait des erreurs injustifiées

combien de post on voit du style "ca marche en pas à pas mais pas en direct"

2016
c'est un zero pointé en ce qui me concerne
et visiblement les versions suivantes ont suivi le mauvais élève ;)

pour 2013(le moins pire de tous), ben je m'en accommode avec des gestions d'attentes(codes a rallonges)
dont 2003 et 2007 n'ont jamais jamais jamais eu besoins

comme on dit le trop c'est comme le pas assez ou bien encore le mieux est l'ennemi du bien

c'est mon coup de gueule du jour :D:D
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bonjour jmfmarques
ben non justement les tests que j'ai effectué avec un ami montrent même le contraire
en effet avec 2007 l’objet n'est pas encore complément dessiné à l’écran que les propriétés sont accessibles (height,width,etc....) tandis qu'avec 2013 ,2016 ben c'est le crash le pire c'est 2016 64bits

test effectué avec l'api bltbilt pour capturer l’écran après création object et interrogation propriété
2013 et 2016 ne vont pas jusqu’à la capture crash avant à l'interrogation
2007 nickel mais avec l'object quasi transparent lors de la capture(voir même tronqué)
;)
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87