vba : Chercher la date de fin de mois

  • Initiateur de la discussion Initiateur de la discussion albert
  • 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 !

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

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
 
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
 
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
@+
 
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
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
169
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
516
Réponses
5
Affichages
272
Réponses
2
Affichages
160
Retour