Joe utilise la fonction EOMONTH assez fréquemment, mais depuis qu’il est passé à Excel 2007, il a eu des problèmes. Joe a le Analysis ToolPak actif et la fonction EOMONTH fonctionne, dans un premier temps. Cependant, lorsqu’il enregistre son classeur et l’ouvre plus tard, les cellules contenant la fonction EOMONTH semblent correctes jusqu’à ce que vous cliquiez dessus. Ensuite, la barre de formule affiche # N / A. La formule a disparu. Analysis ToolPak est toujours actif lorsque cela se produit. Cela n’arrive pas à chaque occasion, mais c’est trop fréquent pour être ignoré. De plus, Joe a un collègue qui rencontre le même problème avec ses classeurs.

Ce problème avec EOMONTH se produit apparemment en raison des modifications apportées à la fonction EOMONTH dans les versions ultérieures d’Excel (Excel 2007 et versions ultérieures).

Dans les versions antérieures d’Excel (Excel 2003 et avant), EOMONTH faisait partie de l’utilitaire d’analyse. Dans les versions ultérieures d’Excel, le ToolPak n’est plus nécessaire; la fonction fait partie d’Excel lui-même. En d’autres termes, vous n’avez pas besoin d’activer l’Outil d’analyse pour utiliser EOMONTH.

Cela conduit au problème. Si vous disposez d’un classeur créé dans une version antérieure d’Excel et que vous l’ouvrez à l’aide du mode de compatibilité dans une version ultérieure d’Excel, les formules du classeur sont évaluées et, dans certaines circonstances, les «jetons» internes utilisés pour les fonctions sont mis à jour.

Lorsque le classeur est enregistré et récupéré, le jeton mis à jour est stocké dans le classeur et, lorsque le classeur est rechargé, le jeton pointe maintenant vers ce qu’Excel interprète comme une fonction non valide.

Microsoft n’a encore rien publié dans sa base de connaissances concernant cette erreur. Le problème semble être intermittent (comme l’a noté Joe), affectant un classeur uniquement après qu’il a traversé entre quatre et huit cycles d’ouverture / modification / enregistrement.

La solution consiste à ouvrir le classeur et, si le problème ne se manifeste pas, à utiliser Enregistrer sous pour enregistrer le classeur au format Excel natif.

(Eh bien, dans le format Excel natif d’Excel 2007 via les versions ultérieures d’Excel.) Le mode de compatibilité n’étant plus impliqué à partir de ce moment, le problème ne devrait plus se reproduire. Si le problème se manifeste, vous devrez corriger et reconstruire le classeur.

S’il n’est pas possible pour vous d’enregistrer le classeur dans le format natif actuel d’Excel (vous devez peut-être utiliser l’ancien format Excel pour travailler avec d’autres qui n’ont pas mis à jour leur programme), alors vous devriez envisager de ne pas vous fier à la fonction EOMONTH . Utilisez plutôt une formule telle que l’une des suivantes:

=A1+31-DAY(A1+31)

=DATE(YEAR(A1),MONTH(A1)+1,1)-1

Si vous préférez, vous pouvez créer votre propre fonction définie par l’utilisateur pour calculer le dernier jour d’un mois. Voici une approche:

Function LastOfMonth(Any_Date As Date) As Date     ' Returns the date of the last day of     ' the month of the passed date argument

LastOfMonth = DateAdd("d", -1, _       DateAdd("m", 1, Month(Any_Date) _       & "/1/" & Year(Any_Date)))

End Function

Vous voudrez vous assurer que vous transmettez à la fonction une date valide, soit en référençant une date dans une cellule, soit en insérant une date littérale entre guillemets. En supposant que la cellule B7 contient la date 15/10/18, les deux éléments suivants renverront le même résultat:

=LastOfMonth(B7)

=LastOfMonth("10/15/2018")

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (6613) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.