opérations sur date

samplaibien

XLDnaute Nouveau
Bonjour,

je débute en excel et je cherche à faire quelques opérations sur des cellules en champ date.

Exemple: j'ai une cellule A1 qui contient '01/01/2002' et je souhaiterais y ajouter ou soustraire 1 ou plusieurs années dans la cellule A2.

Comment faire puisqu'excel ne me soustrait/ajoute qu'en jour ?

Merci d'avance.
 

Spock

XLDnaute Occasionnel
Dans le temps, j'avais essayé mais pas trouvé.
Donc, j'ai fais autrement : J'ai mis les jours, mois, années dans des cellules différentes. Là, c'était devenu plus facile, quoique, ce fut quand même tordu de lié les dates.
 
C

Claude

Guest
Bonjour,

Voir sur le fichier joint, pour ajouter ou enlever jour, mois, ou annee

Bonne journée [file name=moidate.zip size=1590]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/moidate.zip[/file]
 

Pièces jointes

  • moidate.zip
    1.6 KB · Affichages: 27

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Sam Plait Bien, Mr Spock, le Forum

Je pense que l'on doit pouvoir le faire par Formule, mais ce n'est pas mon truc (voir si notre Fée Monique passe par là, ou encore Jean-Marie)

Pour l'instant le voici en Sub VBA :

Sub TheDateAnalyzor()
Dim TheDate As Date, TheNewDate As Date
Dim TheYear As Integer, TheMonth As Byte, TheDay As Byte

If Not IsDate(ActiveCell) Then Exit Sub
   
    TheDate = ActiveCell
   
    TheYear = Year(TheDate) - 1
    TheMonth = Month(TheDate)
    TheDay = Day(TheDate)
   
    TheNewDate = DateSerial(TheYear, TheMonth, TheDay)
    MsgBox TheNewDate

End Sub



Et aussi en Fonction Personalsée dans la Foulée !

Public Function DateLessOneYear(ByRef R As Range, ByVal Y As Integer)
Application.Volatile

Dim TheDate As Date, TheNewDate As Date
Dim TheYear As Integer, TheMonth As Byte, TheDay As Byte

If Not IsDate(R.Value) Then Exit Function

    TheDate = R.Value
   
    TheYear = Year(TheDate) - Y
    TheMonth = Month(TheDate)
    TheDay = Day(TheDate)
   
    TheNewDate = DateSerial(TheYear, TheMonth, TheDay)
    DateLessOneYear = TheNewDate


End Function


NB on peut donc utiliser cette fonction directement dans une Feuille comme une Formule existante comme ceci:

=DateLessOneYear(A1,1)

Syntax :
=DateLessOneYear(Cellule Contenant Date à Traiter, Nombre d'Années à retrancher)

Bon appétit
@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Claude

Désolé je ne t'avais point vu, mais donc oui en formule c'est donc tout à fait réalisable, merci à toi, comme ça nos amis auront l'embarras du Choix ;)

D'ailleurs c'est très cousin du VBA niveau syntax en Formule sur une version américaine d'Excel :

=DATE(YEAR(A1)-1,MONTH(A1),DAY(A1))

Bon Appétit
@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Ândré, cher ami et compatriote !

Ah je t'ai aussi lamenatblement oublié dans cette phrase 'voir si notre Fée Monique passe par là, ou encore Jean-Marie' que j'aurai bien entendu dû rédiger ainsi :

'Voir si notre Fée Monique passe par là, ou encore Jean-Marie, ou encore Ândré si il nous sort un barbatruc de derrière les fagots de houblon jaillissant directement de la mousse de sa Duvel' !!!!

Merci à Toi et Excellent Appétit !
@+Thierry
 

Samantha

XLDnaute Accro
Bonjour les Gens, le Forum, Sam ;)

Je me suis permis d'améliorer le fichier de Claude

Les $ c'est pour permettre à Excel de toujours prendre la ligne 1 lorsque tu recopies les formules vers le bas

Et si tu modifies les données dans h i et j 4 ça fait le calcul tout seul ;)

Bonne journée


Samantha [file name=moidate1.zip size=1845]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/moidate1.zip[/file]
 

Pièces jointes

  • moidate1.zip
    1.8 KB · Affichages: 26

JeanMarie

XLDnaute Barbatruc
Bonjour tout le monde

Une formule un peu plus longue, mais qui ne nécessite pas une macro complémentaire.

=Date(année(A1)-x;mois(A1);jour(A1))

Attention à l'utilisation de cette formule si la date est 29/2/2004 la valeur retournée sera le 1/03/03, et non le 28/2/03.

@+Jean-Marie
 

Discussions similaires

Statistiques des forums

Discussions
312 335
Messages
2 087 386
Membres
103 530
dernier inscrit
dieubrice