vba : Chercher la date de fin de mois

albert

XLDnaute Occasionnel
Bonjour à tous et à toutes, forumiens, forumiennes,

Le code trouve le dernier jour du mois : le 30, 31 ou encore le 29 parfois même le 28.
Mais il oublie des mois : 29/09/2006, 29/12/2006, etc…
Comment rectifier ?

Merci d’avance


Sub ChercheDate()
Dim Annee As Date, Mois As Date
Dim NbJours As Byte, i As Byte
Dim Cell As Range
For Each Cell In Range("A2", Range("A2").End(xlDown))
Annee = Year(CDate(Cell))
Mois = Month(CDate(Cell))
NbJours = Day(DateSerial(Year(CDate(Cell)), Month(CDate(Cell)) + 1, 0))
If Format((DateSerial(Annee, Mois, NbJours)), "dd/mm/yyyy") = CDate(Cell) Then
i = i + 1
Cells(i, 3) = Cell
End If
Next Cell
End Sub
 

Pièces jointes

  • TestMois.zip
    15.8 KB · Affichages: 66
  • TestMois.zip
    15.8 KB · Affichages: 72
  • TestMois.zip
    15.8 KB · Affichages: 69

Staple1600

XLDnaute Barbatruc
Re : vba : Chercher la date de fin de mois

Bonjour


Je te laisse tester
Code:
Sub test()
Dim i As Long
For i = [A65536].End(xlUp).Row To 2 Step -1
Cells(i, 3) = _
DateSerial(Year(Cells(i, 1)), Month(Cells(i, 1)) + 1, 0)
Next i
End Sub
 

albert

XLDnaute Occasionnel
Re : vba : Chercher la date de fin de mois

Merci JM,

J’ai encore un peu de travail sur le sujet, ce code invente un 30/04/2006, alors que la série du mois d’avril s’arrête le 28/04/2006. => il faut certainement ajouter un dérecteur de (dernier) jour

bonne occasion pour travailler sur les dates ...
:)

cordialement

albert
 

Staple1600

XLDnaute Barbatruc
Re : vba : Chercher la date de fin de mois

Bonjour

Est-ce que cela te va cette fois?
Code:
Sub test_fim_mois()
Dim i As Long
Dim fin_mois As Date
Application.ScreenUpdating = False
For i = [A65536].End(xlUp).Row To 2 Step -1
fin_mois = DateAdd("d", -1, DateSerial(Year(Cells(i, 1)), Month(Cells(i, 1)) + 1, 1))
Select Case Weekday(fin_mois)
Case 1
Cells(i, 3) = DateSerial(Year(Cells(i, 1)), Month(Cells(i, 1)) + 1, 0) - 2
Case 7
Cells(i, 3) = DateSerial(Year(Cells(i, 1)), Month(Cells(i, 1)) + 1, 0) - 1
Case Else
Cells(i, 3) = DateSerial(Year(Cells(i, 1)), Month(Cells(i, 1)) + 1, 0)
End Select
Next i
Application.ScreenUpdating = True
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : vba : Chercher la date de fin de mois

Bonjour Albert, Jean-Marie

si j'ai bien compris... pas sur..

Code:
Option Explicit
Sub test()
Dim c As Range
For Each c In Range("A2:A" & Range("A65536").End(xlUp).Row)
    If Month(c.Offset(1, 0).Value) <> Month(c.Value) Then Range("B65536").End(xlUp).Offset(1, 0).Value = c.Value
Next c
End Sub

bonne soirée
@+
 

pierrejean

XLDnaute Barbatruc
Re : vba : Chercher la date de fin de mois

Re

Avais pas vu le fichier

Voila macro appliquée a ton fichier (résultat en colonne B)
 

Pièces jointes

  • TestMois.zip
    15.3 KB · Affichages: 116
  • TestMois.zip
    15.3 KB · Affichages: 125
  • TestMois.zip
    15.3 KB · Affichages: 131
Dernière édition:

albert

XLDnaute Occasionnel
Re : vba : Chercher la date de fin de mois

Merci JM, Pierrot, pierrejean,
Décidément, tout le monde s’y met et tout marche pile poil.
:))
Merci pour avoir passé du temps sur ce problème de dates.
On en apprend tous les jours

Je suis en admiration sur la simplicité du code de Pierrot

cordialement
albert
 

Discussions similaires

Réponses
0
Affichages
136
Réponses
2
Affichages
110