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 confirmé
    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
    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 : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    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.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

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

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    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 confirmé
    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
    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 : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    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.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Membre Expert
    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
    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 confirmé
    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
    Par défaut suite reponse
    Bonjour,

    MErci à tous ca fonctionne à Merveille


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

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    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