XL 2010 Problème de calcul report de date

murainesouspatate

XLDnaute Occasionnel
Bonjour à tous et à toutes,
j'aurais besoin d'un petit coup de pousse. Dans un ficher de suivi de facturation, je n'arrive pas à afficher une date de reprise dans la feuille PVR colonne"P".

Je m'explique , ma macro tiens compte de 3 dates, la 1ère est la date de fermeture de la société pendant les vacances d'été, la 2ème est la date de fin de fermeture et la 3ème est la date du 1er passage d'une navette après la fermeture d'été.

Dans la feuille Synthèse des interventions soldées, le bouton Nb PVR lance la macro ,un UserForm apparait et demande un N° de BL TRESCAL (colonne "K") , une fois remplie(exemple ici le 703613) puis trois ImputBox apparaissent et demande les dates concernées qui sont pour cette année Date début fermeture le 01/08/2016, date de fin de fermeture le 15/08/2016 et la date de la 1ère navette le 16/08/2016.
Dans la feuille PVR, il calcul combien de groupe de ligne différent je vais avoir correspondant au nombre de PVR je devrais faire. En sous total dans la colonne P si la date qui est inscrite est > à la date de début de fermeture et < à la date de fin de fermeture,cela devrait m'afficher la date du passage de la navette, en dessous de 02/08/2016, il devrait y avoir 16/08/2016 en rouge comme la somme des montants Devis HT, or rien ne s'affiche et je ne comprend pas pourquoi !.

N'hésitez pas à demander d'autres explications,
Pourriez-vous m'indiquer mon erreur et me donner une solution ?

Cordialement.
 

Theze

XLDnaute Occasionnel
Bonjour,

Remplace la ligne :
Code:
If Cell.Value >= DateDebut And Cell.Value <= DateFin Then
par la ligne :
Code:
If Cell.Value >= CDate(DateDebut) And Cell.Value <= CDate(DateFin) Then
Dans le premier cas, tu compares une valeur de type Long (la vrai valeur de la cellule qu'il est possible de récupérer avec Value2) formatée en date à une valeur String donc ça ne fonctionnera jamais !
Pour t'en convaincre, teste ce petit bout de code :
Code:
Sub Test()
   
    Dim Cel As Range
    Dim DateDebut '<-- ici déclarée Variant comme tu le fais !
   
    'pour l'exemple, test sur la cellule P2 de la feuille PVR
    Set Cel = Worksheets("PVR").Range("P2")
   
    'entre la date 27/07/2016 pour les deux tests plus bas !
    DateDebut = InputBox("Test") '<-- comme tu le demandes dans ton code
   
    MsgBox TypeName(DateDebut) '<--retourne String
   
    'Value retourne la valeur formatée tandis que Value2 retourne la vrai valeur de la cellule
    MsgBox Cel.Value & vbCrLf & Cel.Value2

    MsgBox DateDebut = Cel.Value '<--retourne faux
   
    MsgBox CDate(DateDebut) = Cel.Value '<--retourne vrai
   
End Sub
 

murainesouspatate

XLDnaute Occasionnel
Bonjour,

Merci Theze, ta solution fonctionne à merveille !:) en remplaçant la ligne de code :
If Cell.Value >= CDate(DateDebut) And Cell.Value <= CDate(DateFin) Then
Cela convient très bien à mon problème, à force de bosser dessus, je n’arrivais pas à voir mon erreur !

Encore merci à tous pour ce coup de main.
A très bientôt pour de nouvelles aventures......

Je remercie aussi toute l'équipe d'excel-downloads.com qui est à mon goût le meilleur site à ce jour.....

Cordialement.
 

Statistiques des forums

Discussions
312 331
Messages
2 087 360
Membres
103 529
dernier inscrit
moket07