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 :

soustraire deux dates en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2011
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2011
    Messages : 91
    Points : 42
    Points
    42
    Par défaut soustraire deux dates en VBA
    Bonjour à tous et à toutes


    J'ai dans un tableau une date de début et une date de fin ,je dois avec une macro VBA soustraire pour chaque ligne les deux dates et selon le cas doit m'afficher le bon nombre de jours écoulés :

    Voici les exemples concrets ci -dessous.

    28/10/2011 10:03 - 02/11/2011 09:30 doit afficher 5 jours


    07/11/2011 15:58 - 08/11/2011 16:57 doit afficher 1 jours


    28/02/2010 - 3 /03/210 si le mois de fevrier termine 29 doit m'afficher 4 sinon 3


    31/12/2011 - 5 /01/2012 m'affiche 5 jours


    Quelqu'un aurait une idée du code VBA pour faire cela

    Merci à tous et a toutes..

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Une simple soustraction entre les 2 dates te donnera le nombre de jours.

    Ne jamais oublier qu'une date, pour Excel, est un nombre entier.
    P. ex.: 28/02/2010 = 40237 et 03/03/2010 = 40240
    Leur soustraction donne bien 3.

  3. #3
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Tu peux aussi utiliser la fonction datedif (Fonction cachée)

    Ici les dates sont en A6 et B6

  4. #4
    Membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2011
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2011
    Messages : 91
    Points : 42
    Points
    42
    Par défaut suite reponse
    Bonjour Alain tech,Bonjour jfontaine

    En effet,en faisant la soustraction il me donne un resultat mais pas entier .

    exemple pour la difference de ces deux dates 28/10/2011 10:03 - 02/11/2011 09:30 doit afficher 5 jours

    cela va afficher 4,97

    Comment faire pour obtenir une valeur entière ?


    Ps pour jfontaine

    j'ai tenté d'écrire cela mais visiblement ce n'est pas la bonne synthaxe..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim maDate As Date
    set maDate = DATEDIF(Cells(ligne, colonne1).Value; Cells(ligne, colonne2).Value;"d")
    Merci par avance.

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Oups, pas lu tout l'énoncé...

    Quoi qu'il en soit, tu cherches un nombre de jours et pas une date:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Dim lngDiff As Long
      With ThisWorkbook.Sheets("Feuil1")
        lngDiff = Int(.Cells(1, 2)) - Int(.Cells(1, 1))
      End With
    Quand la date contient les heures, elle possède une partie décimale.
    Il faut donc ne garder que la partie entière, d'où le Int.

    J'ai fait le test avec les 2 dates en A1 et B1 d'une feuille nommée Feuil1 du classeur où est écrite la macro.

  6. #6
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    La syntaxe pour DateDiff :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Function NbJours(d1 As Date, d2 As Date) As Integer
        NbJours = DateDiff("d", d1, d2)
    End Function

  7. #7
    Membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2011
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2011
    Messages : 91
    Points : 42
    Points
    42
    Par défaut suite reponse
    Bonjour,

    MErci à tous ca fonctionne à Merveille


  8. #8
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    La fonction DateDif proposée fonctionne en tant que formule dans une cellule.

    C'est pour cela que j'ai écrit
    http://silkyroad.developpez.com/excel/dateheure/#LIV-D

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. soustraire deux dates sans prendre en compte weekends et jours feries
    Par debutVBA dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 03/01/2012, 15h40
  2. Comment soustraire deux dates ?
    Par Huubb dans le forum Access
    Réponses: 5
    Dernier message: 07/09/2006, 16h19
  3. [Dates] soustraire deux dates et heures
    Par Hayabusa dans le forum Langage
    Réponses: 2
    Dernier message: 15/06/2006, 22h18
  4. [SQL] Comment soustraire deux dates
    Par raj dans le forum Oracle
    Réponses: 2
    Dernier message: 12/10/2005, 12h40
  5. soustraire deux dates ?
    Par joejoe dans le forum SQL
    Réponses: 2
    Dernier message: 19/07/2002, 15h53

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