XL 2019 Dysfonctionnement d'un fichier Excel depuis les dernières mise à jour Windows

JoBar57

XLDnaute Junior
Bonjour le forum,

La dernière version du fichier joint (TESTs10), qui a beaucoup évolué grâce surtout à Yeahou (encore merci), ne fonctionne plus depuis la dernière mise à jour de Windows en janvier et ce, aussi bien sur mon ordi perso que sur celui du boulot. Alors que la version précédente (TESTs9) fonctionne.
Lorsque je planifie (vacances, Fériés, Récup fériés, ...) cela ne s'affiche plus sur le planning car dans la base de données je me retrouve avec une ligne dans laquelle ne figure plus que l'année 1900 et rien d'autre.
Je n'arrive pas à déterminer ce qui provoque le dysfonctionnement et donc corriger le problème.
Les différences entre ces deux fichiers concernaient il me semble surtout la fonction TJF pour la mise à jour automatique des jours fériés et l'utilisation de la TJF pour une MFC conditionnelle.

Résultat (correct) obtenu dans dans TESTs9

Résultat dans TESTs9 depuis mise à jour.PNG


Résultat obtenu dans dans TESTs10 ( en rouge ce qui aurait dû figurer dans les colonnes)
Résultat dans TESTs10 depuis mise à jour.PNG


Quelqu'un aurait-il une idée du pourquoi et du remède ?

Merci d'avance pour le temps et l'énergie consacrée à mon problème
 

Pièces jointes

  • TESTs9 - Calcul des V - F - RF par salarié.xlsm
    174.2 KB · Affichages: 17
  • TESTs10 - Calcul des V - F - RF par salarié.xlsm
    174 KB · Affichages: 16
Solution
Re,

Voila, j'ai trouvé !
le problème vient de la MFC de la feuille Planning, lorsqu'on ajoute une ligne vide, le recalcul impacte la feuille planning, TJF utilisée dans une MFC renvoie une erreur car la valeur traitée n'est pas une date, ce qui est un comportement normal, la MFC renvoyant une erreur arrête l'exécution du code, mais sans reporter l'erreur. Il suffirait de gérer l'erreur dans la MFC pour régler le problème mais j'en ai profité pour modifier TJF et gérer le cas. Voila votre fichier modifié avec en primeur la nouvelle version 4.2 de TJF qui renvoie l'information au lieu d'une erreur si la valeur testée n'est pas une date.

Bien cordialement, @+

TooFatBoy

XLDnaute Barbatruc
je dirais que, étant un affichage, les MFC ne sont recalculées que sur la feuille active ou au moment de l'activation ce qui serait logique, pourquoi recalculer un affichage non affiché..
Oui, bien sûr, ça me semble aussi évident (ou au moins logique), mais ce que je veux dire c'est pourquoi y a-t-il le pb quand la feuille est activée et que le code ne s'arrête pas mais semble se mettre en pause ?
Est-ce que les MFC de la feuille sont trop lentes par rapport aux multiples appels de la fonction ?
 
Est-ce que les MFC de la feuille sont trop lentes par rapport aux multiples appels de la fonction ?
la fonction est très rapide, pour une seule date à tester, inférieure au centième de seconde donc difficilement mesurable.
en matriciel sur mon ordi, moins d'une seconde pour un million de dates testées, affichage du résultat compris
je pense que ce problème dont tu parles était peut être aussi lié au renvoi de l'erreur dans la MFC qui déclenche un calcul itératif, essaies la même chose avec mon dernier fichier posté pour voir.
 

JoBar57

XLDnaute Junior
Re,

Voila, j'ai trouvé !
le problème vient de la MFC de la feuille Planning, lorsqu'on ajoute une ligne vide, le recalcul impacte la feuille planning, TJF utilisée dans une MFC renvoie une erreur car la valeur traitée n'est pas une date, ce qui est un comportement normal, la MFC renvoyant une erreur arrête l'exécution du code, mais sans reporter l'erreur. Il suffirait de gérer l'erreur dans la MFC pour régler le problème mais j'en ai profité pour modifier TJF et gérer le cas. Voila votre fichier modifié avec en primeur la nouvelle version 4.2 de TJF qui renvoie l'information au lieu d'une erreur si la valeur testée n'est pas une date.

Bien cordialement, @+
Bonsoir,

Merci beaucoup à tous pour votre réactivité et votre enthousiasme, je ne comprends pas pourquoi le fichier a commencé à poser problème après cette dernière mise à jour de Windows alors que ça fonctionnait très bien auparavant !?
Mais j'aurais au-moins la satisfaction de vous avoir soumis un truc un peu inhabituel ! :):cool: !

Le problème si j'ai bien compris vient de la mise à jour de la MFC entre la version TESTs9 et TESTs10.
Et la solution sera finalement de simplement de remplacer dans le fichier original l'ancienne version de TJF par la nouvelle (nouvelle et magique : merci "Bernard_XLD") version 4.2 qui va gérer l'erreur générée, sans avoir besoin de toucher à la MFC ? 😓 🤒

En tous cas le nouveau fichier fonctionne maintenant sur mon ordi.

Encore merci !!!! 👏👏
 
Dernière édition:

JoBar57

XLDnaute Junior
Bonjour le fil

Je me permets d'intervenir pour quelques remarques 😜

1) On ne code jamais les noms en "dur" comme c'est le cas dans le fichier
il faut créer une feuille "Params" dans laquelle on mettra les noms

2) Quand on code, on devrait prendre l'habitude de mette "Option Explicit" en début de chaque module ou usf
Cela évite des erreurs dans l'orthographe de variables

3) Dans un If, il n'est pas nécessaire de mettre un Else, si on sort de la procédure directement
VB:
  If ComboBox1 = "" Or ComboBox2 = "" _
    Or Not IsDate(Me.TextBox2) Or Not IsDate(Me.TextBox3) Then
    MsgBox ("toutes les informations ne sont pas remplies")
    Exit Sub
  End If

4) On évite d'alimenter un TS (Tableau Structuré) en ajoutant sur la ligne du dessous une nouvelle valeur

A+
Bonsoir,

Merci pour les remarques, mais comme je suis très loin (même très très loin) d'être un pro d'Excel, j'aurais besoin d'une traduction des remarques 1 - 2 et 4 ! (et éventuellement d'une illustration ! 🤒

Cordialement,
 
Dernière édition:
Et la solution sera finalement de simplement de remplacer l'ancienne version de TJF par la nouvelle 4.2 qui va gérer l'erreur générée, sans toucher à la MFC ?
Re,

C'est tout à fait cela ! en cas de paramètre date de début ou date de fin incorrect, TJF en 4.2 renverra à la MFC un message signalant le problème au lieu d'une erreur, le code VBA va donc continuer à s'exécuter et la MFC se recalculera dès la mise à jour des valeurs après l'insertion de la ligne. Comme cela, la fonction reste aussi compatible avec les autres utilisations possibles. En prime, vous avez aussi maintenant les jours fériés pour Monaco, l'Espagne et le Portugal qui ont été intégrés en 4.0, on ne sait jamais, ça peut servir ! ;).
Merci beaucoup pour votre réactivité et votre enthousiasme, je ne comprend pas pourquoi le fichier a commencé à poser problème après cette dernière mise à jour de Windows alors que ça fonctionnait très bien auparavant !?
C'est un problème que je n'avais jamais rencontré, c'est ce qui a piqué ma curiosité. Maintenant, quant à en comprendre l'origine exacte, c'est un autre problème.

Cordialement, @+
Bernard_XLD ( alias Yeahou ;) )
 

TooFatBoy

XLDnaute Barbatruc
je pense que ce problème dont tu parles était peut être aussi lié au renvoi de l'erreur dans la MFC qui déclenche un calcul itératif, essaies la même chose avec mon dernier fichier posté pour voir.
Pardon, mais je n'ai pas compris ce que tu veux dire par "la même chose". 😔

Par contre, j'ai un problème actuellement avec la version 10 (ancienne et nouvelle), mais pas avec la 9 : impossible de sauvegarder le fichier après un simple changement de personne en cellule V2 de la feuille "Planning", car Excel me dit que les calculs sont incomplets.
Mais si ça ne le fait que chez moi ce n'est pas bien grave. ;)
 

JoBar57

XLDnaute Junior
Par contre, j'ai un problème actuellement avec la version 10 (ancienne et nouvelle), mais pas avec la 9 : impossible de sauvegarder le fichier après un simple changement de personne en cellule V2 de la feuille "Planning", car Excel me dit que les calculs sont incomplets.
Mais si ça ne le fait que chez moi ce n'est pas bien grave. ;)
Re,

Je n'ai pas ce problème de mon côté, j'ai pu enregistrer sans problème après avoir modifié la cellule V2
 

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 978
Membres
101 854
dernier inscrit
micmag26