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 obtenu dans dans TESTs10 ( en rouge ce qui aurait dû figurer dans les colonnes)
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
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.
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 ?
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.
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.
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 ! !
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.
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
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 !
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 ?
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.
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.
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.