IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

insertion des dates avant 1/1/1900


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Par défaut insertion des dates avant 1/1/1900
    bonjour,

    je suis nouveau dans la programmation. maintenant, j'ai un problème avec l'insertion dans une feuille excel des dates avant 1/1/1900 de format (m/j/yyyy). ces dates ne sont pas acceptées. je tiens à vous informer que je veux faire des opérations de soustraction sur ces dates.j'ai également un autre problème, lorsque j'insère des dates entre 1/1/1900 et 3/1/1900, ces dates s'incrémentent, par exemple, avec 1/1/1900 ça devent 2/1/1900. voici maintenant le petit code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Sub InsertDate()
     
    Dim StartDateInsert As Date
     
    Cells(1, 1).Clear
     
    StartDateInsert = InputBox(Prompt:="Enter start Date, Format m/d/yyyy")
     
    Cells(1, 1).Value = StartDateInsert
     
    End Sub
    merci d'avance de votre précieuse aide.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour autant que je sache, Excel n'accepte les dates antérieures au 1/1/1900 qu'en format text. Donc, pour les opérations, faudrait faire un split sur la date saisie et en extraire les valeurs.
    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Cells(1,1) = "3/14/1985"
    Mois = Split(Cell(1,1), "/")(0)
    Jour = Split(Cell(1,1), "/")(1)
    Annee = Split(Cell(1,1), "/")(2)
    Si une autre solution existe (or les mid, left, right... etc) je ne demande qu'à apprendre

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim toto as string
    toto = "03/02/1857"
    msgbox Dateserial(Year(toto),Month(toto),Day(toto))

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour Sacha2007,

    Je suis d'accord avec la réponse de Ouskel'n'or.

    A mon avis la réponse de Ucfoutu n'est que partiellement valable. Elle solutionne le problème de l'affichage de la date dans la cellule mais pas le calcul de différence entre deux dates.

    Le problème des dates est bien sûr le calcul des années bissextiles qui le sont lorsque les 2 derniers chiffres de l'année sont divisibles par 4, ce qui est partiellement faux puisque lorsqu'il s'agit d'une année de fin de siècle ce sont les 2 premiers chiffres qui doivent être divisibles par 4.

    Regardez ici si cela répond à votre question :

    http://www.developpez.net/forums/sho...d.php?t=468344

    et particulièrement sur le lien donné par Bigalo :

    http://j-walk.com/ss/excel/usertips/tip028.htm

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, jacques_jean,

    Pardon ? T'as essayé ?

    Fais-le donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Command1_Click()
      Dim toto As String, titi As String, dtoto As Date, dtiti As Date
      toto = "03/22/1857"
      titi = "12/05/1897"
      dtoto = DateSerial(Year(toto), Month(toto), Day(toto))
      dtiti = DateSerial(Year(titi), Month(titi), Day(titi))
      MsgBox DateDiff("d", toto, titi) & " jours  entre " & toto & " et " & titi
      MsgBox DateDiff("yyyy", toto, titi) & " années  entre " & toto & " et " & titi
      MsgBox DateDiff("m", toto, titi) & " mois  entre " & toto & " et " & titi
      MsgBox dtiti + 1 & " est le lendemain de " & titi
      MsgBox dtiti - 7 & " est le " & Format(dtiti - 7, "dddd") & " de la semaine précédent le " & Format(dtiti, "dddd dd/mm/yyyy")
    End Sub
    Et bien évidemment, que je pars de strings (ce que sont toto et titi ...)...

    Citation :

    To specify a date, such as December 31, 1991, the range of numbers for each DateSerial argument should be in the accepted range for the unit; that is, 1–31 for days and 1–12 for months. However, you can also specify relative dates for each argument using any numeric expression that represents some number of days, months, or years before or after a certain date.
    The following example uses numeric expressions instead of absolute date numbers. Here the DateSerial function returns a date that is the day before the first day (1 - 1), two months before August (8 - 2), 10 years before 1990 (1990 - 10); in other words, May 31, 1980.
    DateSerial(1990 - 10, 8 - 2, 1 - 1)

    For the year argument, values between 0 and 99, inclusive, are interpreted as the years 1900–1999. For all other year arguments, use a four-digit year (for example, 1800).
    C'est toute la puissance de DateSerial ...

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonsoir Ucfoutu,

    J'espère que vous n'allez pas m'en vouloir pour ma réponse.

    J'ai simplement précisé que vous n'aviez pas donné la solution pour calculer la différence entre les 2 dates.

    Puis ayant trouvé une solution proposée sur ce forum, j'en ai fait état dans ma réponse.

    D'ailleurs, si Excel ne savait pas le faire même à travers VBA, il est facile de faire le calcul en partant du 1er janvier de l'année 1.

    Mais vous avez raison, il sait le faire et votre code fonctionne parfaitement.

    J'en ai fait la vérification en partant d'une date de 1897 jusque 2001.

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Merci ucfoutu, je n'ai effectivement pas pensé à tester cette solution. Mais reste zen, le samedi, c'est un jour de détente Pièce jointe 27088

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Pour autant que je sache, Excel n'accepte les dates antérieures au 1/1/1900 qu'en format text.

    Citation Envoyé par ucfoutu
    Et bien évidemment, que je pars de strings (ce que sont toto et titi ...)...
    Je crois que la chose était claire.

Discussions similaires

  1. [9.0] Trigger pour formater des dates avant insertion
    Par Logarithmix dans le forum Requêtes
    Réponses: 1
    Dernier message: 13/05/2013, 14h22
  2. probléme d'insertion des dates en sql server 2005
    Par maradona_9 dans le forum JDBC
    Réponses: 1
    Dernier message: 17/04/2012, 10h30
  3. problème d'insertion des dates dans une base
    Par guy_antoine_mav dans le forum C#
    Réponses: 13
    Dernier message: 02/12/2009, 17h34
  4. [Dates] Gestion des dates avant 1970
    Par viny dans le forum Langage
    Réponses: 4
    Dernier message: 30/08/2006, 17h01
  5. ajouter des dates délémitées dans INSERT INTO ?
    Par samlepiratepaddy dans le forum Access
    Réponses: 8
    Dernier message: 27/09/2005, 08h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo