Re : arrêt impromptu de macros et actualisation combobox à l'ouverture
Bonjour à tous,
N’ayant toujours pas réglé le problème, je relance le fil.
Pour simplifier, je n’ai repris qu’une partie du classeur initial, à savoir uniquement la zone de saisie et les colonnes correspondant à un calendrier (semaines ISO / quantièmes / dates + jours de la semaine). Certains jours de la semaine peuvent être mis en évidence au moyen d’un USF (« Días de la semana »). Quant aux jours fériés fixes et mobiles ils sont automatiquement repérés, ainsi qu’éventuellement des anniversaires (jusqu’à 4). Jours de la semaine, fériés et anniversaires sont facilement repérables par leur couleur gérée par les FC via la fonction « EstFerie » (dans le module « Fonctions ») :
1/ Fériés « No Laborables » : on ne peut pas travailler --> ROUGE
2/ Fériés « Laborables » : on peut travailler --> ORANGE
3/ Fériés « Laborables » décalés : le jour en lui-même reste ORANGE mais BIFFÉ, le jour décalé --> MARRON
4/ Anniversaire(s) --> VERT
5/ Jours de la semaine mis en exergue --> BLEU
Je signale au passage que le calendrier est perpétuel et que les fériés en Uruguay sont un peu déconcertants (d’où le véritable casse-tête pour gérer ces dates) car l’adage administratif ici est : « pourquoi faire simple quand on peut faire muy complicado… ».
Mais là aussi je bute sur le maudit Worbook_Open où j’ai pourtant stipulé, lors de l’ouverture du classeur, des événements forts simples au demeurant (plein écran / masquer les onglets… bref, virer tout le superflu). Worbook_Open reste muet, rien ne se passe lors de l’ouverture ! C’est comme si Worbook_Open était devenu invisible !
Curieusement si, après l’ouverture du classeur, je vais à Worbook_Open et y déclenche directement la macro, tout se déroule alors comme je le désirais…
Je cherche la cause et finis par soupçonner la fonction « EstFerie ». Je l’élimine pour voir ce qui se passe. Quand le classeur s’ouvre ça commence à marcher, mais Worbook_open bute sur la sentence « Worksheets(1).ScrollArea = "A1:M39" » qui n’a pourtant rien d’extraordinaire. Rebelote, je déclenche la macro depuis Worbook_Open et tout se remet en ordre.
C’est vraiment très bizarre !
J’ai essayé de ruser… Puisque la fonction « EstFerie » semble être en cause, j’ai donc tenté de la court-circuiter lors de l’ouverture du classeur.
1/ Dans une cellule nommée « StopMacro » est récupérée une valeur.
2/ Dans Workbook_BeforeClose j’écris : [StopMacro].Value = 2, de telle sorte qu’à la fermeture du classeur la cellule « StopMacro » prenne la valeur 2.
3/ Dans le corps de la fonction « EstFerie » j’écris au tout début : If [StopMacro].Value = 2 Then Exit Function, ce qui théoriquement shunte cette fonction lorsque la cellule « StopMacro » est égale à 2.
4/ En fin de procédure de Worbook_Open j’écris : [StopMacro].Value = 0 pour réhabiliter la fonction « EstFerie » après que la présentation souhaitée de la feuille ait été réalisée.
Quand j’ouvre le classeur (la cellule « StopMacro » est forcément égale à 2) je devrais donc être dans la même situation que si j’avais supprimé la fonction « EstFerie ». Et bien NON ! l’abominable Worbook_Open s’obstine à faire la sourde oreille, et la cellule « StopMacro » reste bloquée sur 2 alors qu’elle aurait dû prendre la valeur 0. J’en déduis que dès le départ Worbook_Open ne marche pas.
Je pense qu’en réglant ce problème on avancera pour le problème initial.
À l'adresse suivante 2 fichiers compressés : l’un avec la fonction « EstFerie » et l’autre sans.
Cijoint.fr - Service gratuit de dépôt de fichiers
Bonne journée à tous.