Date renvoyée dans une macro est de quatre ans trop tôt

Traductions disponibles Traductions disponibles
Numéro d'article: 157035 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Symptômes

Lorsque vous exécutez une macro qui utilise une date à partir d'une cellule de feuille de calcul, la date renvoyée par la macro peut être quatre ans et un jour avant la date réelle.

Cause

Une macro retourne une date qui est quatre ans et un jour plus tôt lorsque vous sélectionnez «Calendrier depuis 1904» de l'onglet Calcul de la boîte de dialogue Options et une des conditions suivantes est remplie :

  • La macro utilise la propriété Value2 lorsqu'elle stocke la date. - ou -

  • La macro utilise une fonction dans la bibliothèque d'application Microsoft Excel lorsqu'elle stocke la date.

Contournement

La macro suivante détermine si le calendrier depuis 1904 est sélectionné, convertit une date dans le système de date 1900 et renvoie la date prévue.

Microsoft fournit des exemples de programmation à des fins d'illustration uniquement, sans garantie expresse ou implicite. Cela inclut, mais n'est pas limité à, les garanties implicites de qualité marchande ou d'adéquation à un usage particulier. Cet article suppose que vous connaissez le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les techniciens du support technique Microsoft peuvent vous aider à comprendre la fonctionnalité d'une procédure particulière, mais ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou créer des procédures répondant à vos besoins spécifiques. Pour utiliser la macro, procédez comme suit :

  1. Pour insérer un nouveau classeur, cliquez sur Nouveau dans le menu fichier, cliquez sur classeur et cliquez sur OK.
  2. Dans le menu Outils, cliquez sur Options, cliquez sur l'onglet calcul et puis cliquez sur «système de date Calendrier depuis 1904». Ensuite, cliquez sur OK.
  3. Tapez les dates suivantes dans Feuil1 :
    A1 : 5/7/96
    A2 : 5/11/96
    A3 : 4/28/96
  4. Dans le menu Outils, pointez sur macro, puis cliquez sur Visual Basic Editor. Dans Visual Basic Editor, cliquez sur module dans le menu Insertion.
  5. Tapez le code suivant dans la feuille de module :
          Sub DateTest()
             'dimension date variable
             Dim dDate As Date
             'store minimum date in range into variable
             dDate = Application.Min(Worksheets(1).Range("A1:A3"))
             'display stored date
             MsgBox "Stored date" & Chr(13) & dDate
             'check for 1904 date system
             If Application.ThisWorkbook.Date1904 Then
              'convert 1904 base date to 1900 base date
              dDate = DateSerial(Year(dDate) + 4, Month(dDate), Day(dDate) + 1)
              'display converted date
                MsgBox "Converted date" & Chr(13) & dDate
             Else
                MsgBox "1904 date system is not enabled"
             End If
          End Sub
    						
  6. Pour exécuter la macro, pointez sur macro dans le menu Outils et cliquez sur macro. Sélectionnez DateTest et cliquez sur Exécuter.
La première boîte de message s'affiche avec une date 4/27/92, qui est quatre années et un jour antérieures à la date au plus tôt dans la plage de cellules A1 à A3. La deuxième zone de message affiche la date "convertie" correcte de 4/28/96.

Statut

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés au début de cet article.

Plus d'informations

Visual Basic pour applications ne pas automatiquement détecter le calendrier depuis 1904 et convertir la date en tant que de besoin. Si un utilisateur sélectionne le calendrier depuis 1904 dans Microsoft Excel et qu'il exécute une macro qui lit une date à partir d'une cellule de feuille de calcul, la différence peut être de quatre ans et un jour (comptes d'un jour supplémentaire pour l'année bissextile). Par exemple, une date du 1/9/96 dans le système de date Calendrier depuis 1904 peut renvoyer une date du 31/8/92.

L'écart de système de date peut se produire dans Visual Basic lorsque vous sélectionnez le calendrier depuis 1904 et la macro utilise la propriété Value2 lorsqu'elle stocke la date.

La propriété Value2 est une nouvelle propriété dans Visual Basic que vous pouvez utiliser dans Microsoft Office 97. La propriété Value2 stocke les variables dans la même manière que la propriété Value à l'exception du fait qu'il n'utilise pas les types de données monétaire ou date.

Propriétés

Numéro d'article: 157035 - Dernière mise à jour: jeudi 23 janvier 2014 - Version: 2.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Excel 2000 Standard
  • Microsoft Excel 97 Standard
  • Microsoft Excel 95 Standard
Mots-clés : 
kbnosurvey kbarchive kbmt kbdtacode kbprb kbprogramming KB157035 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 157035
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com