VBA Access : Différence de dates [Résolu/Fermé]

Signaler
Messages postés
70
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
14 septembre 2014
-
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
-
Bonjour,

Je ne comprends pas pourquoi mon code ne fontionne pas :

Dim DatDeb
Dim DatFin

Dim Duree As Variant

Dim bdd As Database
Dim CritSel As TableDef
Dim RstDate As Recordset

Set bdd = CurrentDb
Set CritSel = bdd.TableDefs("Critère de sélection")
Set RstDate = bdd.OpenRecordset("Critère de sélection", dbOpenDynaset)
Set DatDeb = RstDate![Date de début]
Set DatFin = RstDate![Date de fin]

Duree = DateDiff("j", DatDeb, DatFin)+1

MsgBox Duree

Il me renvoie le message suivant :
Erreur d'exécution 5
Argument ou appel à procédure incorrect

Je ne comprends pas, c'est pourtant une fonction que j'utilise souvent. C'est peutêtre parce que c'est lundi et que je suis mal réveillée... :-)

6 réponses

Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 930
Salut,

pourquoi tu mets "set DatDeb" ? le set indique que l'on est en présence d'un objet et non d'une variable...
pourquoi n'as-tu pas déclaré datedeb en date ? dans ce cas, c'est un variant...
l'erreur est sur quelle ligne ?
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 135
bonjour,

Dans ton code tu n'as pas déclaré le type de variable de :

Dim DatDeb ???
Dim DatFin ???

Ca vient peut être de là.

;o)

Polux
Messages postés
70
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
14 septembre 2014
5
Si je remets as date après les DatDeb et DatFin, il me dis pour set DatFin : Objet requis

Le message d'erreur initial était sur
Duree = DateDiff("j", DatDeb, DatFin)+1
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 930
C'est parce que tu as mis "Set DatDeb = ..."

Mets donc "DatDeb = "
Messages postés
2684
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
10 août 2011
542
garde ton code original et remplace juste le "j" par "d".
parfois il est tres idiot dans les correspondances francais anglais.
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
2 930
Non, il est TOUJOURS stupide dans ces cas-là !

Rien qu'à voir les dates dans les requêtes, en format #british# avec le point décimal qui se transforme en virgule...
Messages postés
70
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
14 septembre 2014
5
Bon, je vous remercie tous.
J'ai enlevé les set devant DatDeb et DatFin, et j'ai remplacé "j" par "d", et ça marche.

Merci, merci, merci !!!
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 135
lol, ben ça aurai été le diable que ça ne marche pas ... il a fallu s'y mettre à 3 ...

bon courage

;o)

Polux