Je me permets de vous solliciter concernant une difficulté d'affichage.
En fait je ne suis pas un pro de VBA et j'ai commencé à créer un programme qui à grandit , grandit et grandit et je me retrouve avec une bonne solution (dont les utilisateurs sont satisfaits) mais le problème est le suivant :
- Vu qu'il y a des centaines de macro imbriquées (Utilisation de la fonction Call) et qui génèrent des ouvertures/fermetures de classeurs, Copier-Coller entre ceux-ci...
L'écran se met à "clignoter" lors des ouvertures successives des différents classeurs excel MALGRE l'utilisation de (Application.ScreenUpdating = False
Application.EnableEvents = False) dans les différentes Macros.
J'ai déjà essayé de mettre un USERFORM en premier plan mais rien n'y fait...
Des idées?
Je me demandais même s'il n'était pas possible d'ouvrir une petite animation QUI SE METTE ET RESTE EN PREMIER PLAN via VBA pendant que le process a lieu et de fermer après celle-ci à la fin.
L'idée serait de ne pas essayer de modifier la programmation actuelle qui donne les résultats voulus mais de masquer le clignotement.
J'ai bien peur que le ver soit déjà dans le fruit. Mais sans fichier test difficile d'être affirmatif.
On peut réduire ces clignotements voire les supprimer en :
1- Ouvrir les fichiers de façon invisible ( Lien )
2- Ne jamais faire de Select pour copier les données avec activation de feuille, mais des copies de range à range.
Mais peut être est ce déjà fait.
L'autre solution serait de masquer XL pendant les opérations, puis de le faire ré apparaitre en fin de mission, avec dans Thisworkbook :
VB:
Option Explicit
Private Sub Workbook_Open()
Application.WindowState = xlMinimized
Application.Visible = False
UserForm1.Show 0
End Sub
( Ou dans Thisworkbook, ou dans une macro lorsqu'on en a besoin )
Mais là, on touche au design, donc à vous de voir si c'est faisable et quel est l'impact client.
Vu qu'il y a des centaines de macro imbriquées (Utilisation de la fonction Call) et qui génèrent des ouvertures/fermetures de classeurs, Copier-Coller entre ceux-ci...
Pensez-vous qu'il serait possible de masquer la page comme proposé et pendant le temps du process.
Afficher une vidéo en premier plan (pour masquer les clignotements)?
Bonjour,
Mettre une vidéo pour patenter me semble trop complexe pour si peu.
( faites une recherche sous google avec gif animé ou vidéo dans userform, je n'ai trouvé que des solutions complexes, qui plus ait avec gif sur disque et non dans fichier )
Un exemple simple avec juste une image.
Encore merci !!
J'ai essayé la solution et 2 problèmes surviennent :
1) Dans certaines macros, j'utilise la fonction : ActiveWindow.FreezePanes = False
Et là avec la nouvelle macro pour l'horloge (Gif ou image peu importe) il bloque --> Run-Time error 1004 : "Unable to set the FreezePanes Property of the Window Class" -- >Je pense que c'est lié à la consigne : " Application.Visible = False"
2) Le Gif ne s'affiche pas en premier plan, l'image n'apparaît pas --> Cfr photo jointe.
Bonjour Nico,
Déjà, est que ma PJ du post #6 marche ? ( avec les deux fichiers enregistrés au même endroit )
Ensuite, après avoir essayé Window.FreezePanes, figer les volets n'impactent pas le userrform, je n'ai pas pu reproduire votre problème.
Si la macro Workbook_Open n'est pas touchée, elle devrait être fonctionnelle quelles que soient les autres macros puisqu'elle préempte XL dès l'ouverture.
Peut être est ce du à autre chose, mais cela dépend de votre fichier.