Opération sur les dates

  • Initiateur de la discussion Initiateur de la discussion Toug
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

Toug

Guest
Bonjour,
Je souhaiterais soustraire en vba 3 mois à chaque date stockée dans les cellules de la colonnes C.
Je ne vois pas trop comment faire.

Merci.
 
Re : Opération sur les dates

Bonjour Toug

Si tu veux stocker les valeurs dans la même ligne mais en colonne D, le code sera celui-ci (on démarre à la cellule C2) :
VB:
    For i = 2 To Range("C65536").End(xlUp).Row
        Range("D" & i) = DateSerial(Year(Range("C" & i)), Month(Range("C" & i)) - 3, Day(Range("C" & i)))
    Next

A+
 
Re : Opération sur les dates

Bonjour

Sub test()
Dim madate As Date
Dim varjour As Byte
Dim varmois As Integer
Dim varan As Integer
derlig = Range("c" & Cells.Rows.Count).End(xlUp).Row
For i = 1 To derlig
madate = Cells(i, 3).Value
varjour = Day(madate)
varmois = Month(madate) - 3
varan = Year(madate)
If varmois < 1 Then varmois = 12 + varmois
Cells(i, 4).Value = CDate(varjour & "/" & varmois & "/" & varan)
Next
End Sub

ou Cells(i, 4).Value =Cells(i, 3).Value -91 ....

A+ François
ps: salut fredoo...c'est encore + simple autant pour moi...j'avais oublié dateserial...
 
Dernière édition:
Re : Opération sur les dates

Bonjour,
Grillé sur la ligne! Essayez ce code:
Code:
Sub Plus3mois()
Dim xCell As Range
With ActiveSheet
    For Each xCell In Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp))
    If IsDate(xCell) Then xCell = DateSerial(Year(xCell), Month(xCell) - 3, Day(xCell))
    Next xCell
End With
End Sub
 
Re : Opération sur les dates

Merci beaucoup, j'ai pris la ligne qui m'interressait, à savoir:
Code:
xCell = DateSerial(Year(xCell), Month(xCell) - 3, Day(xCell))

ça marche nickel
Bonjour,
Grillé sur la ligne! Essayez ce code:
Code:
Sub Plus3mois()
Dim xCell As Range
With ActiveSheet
    For Each xCell In Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp))
    If IsDate(xCell) Then xCell = DateSerial(Year(xCell), Month(xCell) - 3, Day(xCell))
    Next xCell
End With
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
333
Réponses
3
Affichages
219
Réponses
3
Affichages
135
Réponses
2
Affichages
285
Réponses
3
Affichages
315
Retour