Rapport de message :*
 

Ajouter jours à cellule contenant date

Titre du sujet : Ajouter jours à cellule contenant date
par alexandreVBA le 10/07/2014 12:39:57

Bonjour à tous,
 
Actuellement en stage j'utilise chaque jour VBA notamment afin de monter un tableau de prévision de trésorerie pour l'entreprise dans laquelle je travaille. 
Je dois faire une fonction qui me permet de modifier une date d'échéance de règlement en permettant à l'utilisateur de saisir le délai supplémentaire qu'il souhaite ajouter à cette échéance initiale. 
J'aurais idéalement voulu stocké cette nouvelle date dans la cellule précédente. J'ai essayé une sub pour pouvoir le faire, mais d'après mes cours VBA, les sub ne sont pas idéales pour renvoyer des valeurs. Voilà pourquoi j'ai utilisé une fonction, que je ne maîtrise plus très bien.
 
Le seul résultat que j'obtient est soit #valeur! soit 01/01/1900. 
 
Je pense que mes deux principaux problèmes sont dans la saisie de la variable de la fonction et la définition de son type, et ensuite y ajouter le nombre de jours saisis. 
 
Ci-joint mes écritures complétées de commentaires :
 
Function RETARD(dateactualisee As Range)
 
Dim jours As Integer
Dim nbrj As Integer
Dim reponse As Integer
 
'Si qui permet de vérifier que la cellule à laquelle l'utilisateur veut ajouter un nbr de jours supplémentaire contient bien une date
If IsDate(dateactualisee.Value) = False Then
 MsgBox "L'utilisation de cette fonction requiert une date en paramètre"
 Exit Function
End If
 
'demande à l'utilisateur s'il...
reponse = MsgBox("Souhaitez-vous retarder la date de règlement prévue ?", 36, "Prévoir retard")
 
'Si la réponse est positive
If reponse = 6 Then
  nbrj = InputBox("De combien de jours souhaitez-vous retarder l'échéance ?", "Saisir nombre jours supplémentaires", "0")
     
     'Si qui permet de vérifier que l'utilisateur a bien saisi un nombre
     If IsNumeric(nbrj) = False Then
      MsgBox "Vous n'avez pas saisi un nombre, recommencer.", vbOKOnly & vbInformation
      Exit Function
    End If
    
  'Ajoutes la valeur saisie par l'utilisateur à la cellule initialement choisie
  
  dateactualisee.Value = DateAdd(dateinterval.Day, jours, dateactualisee.Value)
Else
  MsgBox " Vous n'avez pas modifier la date prévue de règlement", vbOKOnly & vbInformation
End If
 
End Function
 
 
 
De plus j'ai essayé avec Cells(i,j).Value / Cells(i,j).Date mais je ne peux pas fixer une cellule en particulier car elle ne se modifie pas par l'incrémentation comme le permettent les fonctions Excel. Du coup je n'arrive pas à utiliser une Cells lorsque son emplacement est inconnu à l'avance car le tableau est susceptible d'être mis à jour via de nouvelle ligne quotidiennement (j'ai utilisé des boucles, mais avec (i=1 to n) elle ne finissait jamais).
 
Merci d'avance,
 
Bien cordialement à tous,
 
AlexandreVBA