VBA Access : Différence de dates

Résolu
arzawe Messages postés 71 Statut Membre -  
blux Messages postés 27813 Statut Modérateur -
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

blux Messages postés 27813 Statut Modérateur 3 363
 
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 ?
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
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
0
arzawe Messages postés 71 Statut Membre 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
0
blux Messages postés 27813 Statut Modérateur 3 363
 
C'est parce que tu as mis "Set DatDeb = ..."

Mets donc "DatDeb = "
0
Frappe Misere Messages postés 2702 Statut Membre 568
 
garde ton code original et remplace juste le "j" par "d".
parfois il est tres idiot dans les correspondances francais anglais.
0
blux Messages postés 27813 Statut Modérateur 3 363
 
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arzawe Messages postés 71 Statut Membre 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 !!!
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
lol, ben ça aurai été le diable que ça ne marche pas ... il a fallu s'y mettre à 3 ...

bon courage

;o)

Polux
0