Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/12/2011, 11h30   #1
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : 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 : 13
Points : 13
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..
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 11h39   #2
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 675
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 675
Points : 7 665
Points : 7 665
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!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 11h42   #3
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 920
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 920
Points : 7 237
Points : 7 237
Bonjour,

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

Ici les dates sont en A6 et B6
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 12h11   #4
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : 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 : 13
Points : 13
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 :
1
2
Dim maDate As Date
set maDate = DATEDIF(Cells(ligne, colonne1).Value; Cells(ligne, colonne2).Value;"d")
Merci par avance.
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 12h26   #5
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 675
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 675
Points : 7 665
Points : 7 665
Oups, pas lu tout l'énoncé...

Quoi qu'il en soit, tu cherches un nombre de jours et pas une date:
Code :
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!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 12h39   #6
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 2 805
Détails du profil
Informations personnelles :
Âge : 56
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 2 805
Points : 3 003
Points : 3 003
Bonjour,

La syntaxe pour DateDiff :

Code :
1
2
3
4
 
Function NbJours(d1 As Date, d2 As Date) As Integer
    NbJours = DateDiff("d", d1, d2)
End Function
__________________
Par principe, je ne réponds pas aux messages URGENT.
Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu)
pc75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 13h54   #7
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : 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 : 13
Points : 13
Par défaut suite reponse

Bonjour,

MErci à tous ca fonctionne à Merveille

debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 10h12   #8
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 920
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 920
Points : 7 237
Points : 7 237
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
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h08.


 
 
 
 
Partenaires

Hébergement Web