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 : 52
    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 : 70
    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 : 52
    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