Probleme dateadd

Bonjour à toutes et tous,

je rencontre un soucis avec dateadd (incompatibilité de type) et aimerais si possible votre aide

Voici le code consistant à ajouter une prolongation (nombre de mois) à une date de fin enregistrée

If (Initial_Prolongation <> Project_Prolongation) And (Project_Prolongation <> "") Then
P_page.Cells(Match, 11) = CLng(Project_Prolongation)

new_date = DateAdd("m", Project_Prolongation, P_page.Cells(Match, 12))

End If

Explications:

Project_Prolongation = valeur récupérée dans le userform d'ou le clng avant intégration dans bsd
 P_page.Cells(Match, 12) est la valeur récupérée dans la bsd et cela correspond à la date de fin à laquelle il faut ajouter la prolongation

j'ai dores et déjà tenté de formater de la date de fin initiale mais cela ne semble pas fonctionner

une idée svp?

Merci à vous par avance

Bonjour, juste u bout de code , difficile de se rendre compte du prolème.

Avec un fichier exemple on gagnerai du temps.

- Les variables sont déclarées comme date ?

-Project_Prolongation= Valeur dans userform ok mais sous quel format ? et Initial_Prolongation ? aussi dans userform ?

- Si toutes vos infos renvoient des dates alors à quelle moment vous récupérez le nombre de mois à prolonger pour votre dateAdd ?

Bonjour,

merci pour votre retour

désolé mais c'est au sein d'un gros fichier trop compliqué à anonymiser etc

je n'étais pas en option explicit à mes débuts donc ici non.

project prolongation = valeur (un chiffre) ici exemple 6 pour 6 mois

il ne faut pas se préoccuper de initial_prolongation provenant de la bsd qui servait juste à confirmer si changement à opérer ou non

dans mon cas actuel

P_page.Cells(Match, 12) = 31/05/2024

project prolongation = 6

et je demande donc d'ajouter 6 mois au 31/05/2024 ce qui devrait me retourner 31/11/2024

new_date = DateAdd("m", Project_Prolongation, P_page.Cells(Match, 12))

mon objectif étant de pouvoir mettre à jour P_page.Cells(Match, 12) avec la nouvelle date à savoir 31/11/2024

merci par avance

Bonjour,

Le problème ne viendrait-il pas du fait que le 31 novembre n'existe pas ?

Dateadd ne bosse qu'avec des dates valides.

Re, Ok alors j'essayerai une ligne dans le genre :

new_date = DateAdd("m", Project_Prolongation.value, Cdate(P_page.Cells(Match, 12).value))

Bonjour JoyeuxNoël.

J'ai testé avec une nouvelle macro 31/05/2021 + "m" 6 --> résultat 30/11/2021 le changement de jour est automatique avec "DateAdd"

Vous pouvez aussi vérifier avant votre calcul que " P_page.Cells(Match, 12)" renvoi bien la date que vous indiquez.

old_date=Cdate(P_page.Cells(Match, 12).value)
new_date = DateAdd("m", Project_Prolongation.value, old_date)

En mode pas à pas vous verrez si la bonne info est renvoyée.

Merci à vous de m'avoir aiguillé

le problème de base est que j'avais indiqué une date de fin exemple non valable 31/04/2024

désormais cela fonctionne

Bonjour à tous,

@JoyeuxNoel : Salut Fred ! On peut dire que c'est "une belle date bien choisie en bout de mois"

j'étais presque sur que celà venait de P_page.Cells(Match, 12).value qui n'était pas reconnu comme date.

D'ou le test en calculant Old_date avant pour vérifier.

Attention cependant car aprés la remarque de Joyeux noel cette macro pourrait changer les jours de 1 à deux jours car

31/01/2021 + "m" 1 ---> 28/02/2021 décalage de 2 jours dans ce cas excel prendra surement dernier jour du mois de février.

Bonjour 3GB

Hello 3GB.

Alors là, alors là, je dis respect .

C'est vrai qu'on peut tous avoir le choix dans la date à un moment donné, si la date existe vraiment (et est consentante). De là à pouvoir la choisir comme ceci en bout de mois, je ne savais pas.

@Xmenpl : Hello !
Je suis juste passé faire une remarque un peu au hasard sans avoir vraiment regardé le sujet. Je m'en remets entièrement à ton avis et à tes conclusions :)

C'est beau cette conclusion ! J'ai essayé de surenchérir mais sans succès. A vrai dire, à ces belles paroles, j'enterre mon lapin^^ !

Salut Xmenpl !

C'était une remarque bien constructive JoyeuxNoel ! je ne savais pas non plus (avant de faire le test) que la fonction DateAdd renvoi automatiquement le

dernier jour du mois si la date de départ est elle aussi le dernier jour du mois.

enfin si la date de départ est valide lol

Tout comme la fonction MOIS.DECALER par ailleurs.

@3GB : L'as-tu enterré sous des piles de boites ?

Exactement, comment tu sais ça ?!! Sous une forêt de piles de boites foutues près de la berge du ravin

Rechercher des sujets similaires à "probleme dateadd"