Rapport de message :*
 

Re: Ajouter jours à cellule contenant date

Titre du sujet : Re: Ajouter jours à cellule contenant date
par Guy le 11/07/2014 22:48:32

Bonjour alexandreVBA et bienvenu dans le forum,

 

Effectivement tes cours de VBA auraient dû t'apprendre qu'une procédure (Sub) ne retourne jamais de valeur et non qu'elle ne sont pas idéales pour ce faire.

 

1- Ton code ne compile pas, tu as sans doute oublié d'insérer la directive Option Explicit en en-tête de module. Là-dessus il faut blâmer Microsoft et personne d'autre : voir dans l'éditeur VBA Menu Outils/Options..., onglet Éditeur et cocher Déclaration des variables obligatoire ce qui ajoutera automatiquement la directive Option Explicit à tout nouveau module; Microsoft laisse par défaut, et c'est un défaut, cette case non cochée (misère). Ensuite compiler le code souvent, très souvent, à l'aide du menu Débogage/Compiler VBAProject.

 

2- La fonction RETARD ne retourne aucune valeur, elle se contente de modifier le paramètre passé en référence (dateactualisee). Auquel cas une procédure (Sub) aurait tout aussi bien fait l'affaire. Bien que ne retournant jamais quoi que ce soit, on peut parfaitement modifier un paramètre passé en référence à l'intérieur d'un procédure.

 

3- La variable dateinterval n'est déclarée nulle part, la compilation te l'aurait révélée. Aussi cette variable n'est utilisée qu'à un seul endroit dans

DateAdd(dateinterval.Day, jours, dateactualisee.Value).

Où donc voudras-tu saisir une valeur pour cette variable?

 

4- La fonction DateAdd ne supporte aucun paramètre Jours qui n'étant déclaré nulle part prend pour valeur initiale zéro (0) en tant qu'entier (Integer) et dateinterval.Day est inconnu au régiment. Revoir impérativement la syntaxe de la fonction DateAdd dans l'aide (F1).

 

5- Il est contre-indiqué de ne pas utiliser les constantes symboliques dans le code.

 

If reponse = 6

devrait se lire 

If reponse = vbYes

et

 MsgBox("Souhaitez-vous retarder la date de règlement prévue ?", 36, "Prévoir retard")

devrait se lire

 MsgBox("Souhaitez-vous retarder la date de règlement prévue ?",vbYesNo + vbQuestion , "Prévoir retard")

C'est plus parlant.

 

Bref, un petit classeur exemple et quelques autres explications seraient de mise, en particulier la manière utilisée pour lancer cette fonction.

 

Ceci dit je laisse à d'autres le soin de poursuivre, j'ai d'autres bricoles au fourneau.

 

Cordialement,

 

Guy