Intervalle de dates

Bonjour,

J'aimerais pouvoir créer des intervalles de dates de telle sorte à avoir 4 intervalles de 3 mois par année. Mon but est de modifier les dates pour avoir un aperçu global des échéances. Je m'explique, si nous avons des données telles que :

données de 12/05/2019

données de 21/02/2019

données de 05/03/2019

données de 24/06/2019

J'aimerais changer les dates

données de 21/02/2019

données de 05/03/2019

en 31/03/2019

les dates

données de 12/05/2019

données de 24/06/2019

en 30/06/2019

Ma fonction serait quelque chose comme

Sub function1()

Dim x as integer

For x = 2 to 50

If cells(x,3) [est compris dans cette intervalle] then

cells(x,3)= [nouvelle échéance]

end if

next x

end sub

en vous remerciant,

re

ou une formule du genre

=si(mois(tadate) <=2 ; 28 février)

avec des SI imbriqués (ou même un modulo sur le n° du mois) tu peux récupérer le mois voulu, et en tirer le dernier jour du mois voulu

à peaufiner

tu sais faire ?

amitiés

Bonjour,

Si je comprends bien, tu as besoin de la date du dernier jour du Trimestre ...

Pas besoin de macro ...

Tu peux essayer la formule suivante ' toute peaufinée ' ... : ( avec ta date en A2 ...)

=DATE(ANNEE(A2);PLAFOND(MOIS(A2);3)+1;0)

En espèrant que cela t'aide

Bonjour,

Si je comprends bien, tu as besoin de la date du dernier jour du Trimestre ...

Pas besoin de macro ...

Tu peux essayer la formule suivante ' toute peaufinée ' ... : ( avec ta date en A2 ...)

=DATE(ANNEE(A2);PLAFOND(MOIS(A2);3)+1;0)

En espèrant que cela t'aide

Avant tout, merci pour votre retour! Le but de ma macro est de générer une automatisation de traitement de données, dans l'idéal un procédé VBA serait plus adaptée. Néanmoins, j'ai testé votre formule et elle marche exactement comme je voudrait que ma macro fonctionne. Je l'utiliserais si je n'arrive pas a trouver de code VBA. Un grand merci à vous pour votre aide!

re

ou une formule du genre

=si(mois(tadate) <=2 ; 28 février)

avec des SI imbriqués (ou même un modulo sur le n° du mois) tu peux récupérer le mois voulu, et en tirer le dernier jour du mois voulu

à peaufiner

tu sais faire ?

amitiés

Merci pour votre retour!

Est-il possible d'activer une formule via une macro d'après vos connaissances? Ou dois-je écrire la formule dans une cellule puis l'étirer vers le bas? Etant donné que je souhaite automatiser le traitement de données, l'idéal serais de générer une macro.

Avant tout, merci pour votre retour! Le but de ma macro est de générer une automatisation de traitement de données, dans l'idéal un procédé VBA serait plus adaptée. Néanmoins, j'ai testé votre formule et elle marche exactement comme je voudrait que ma macro fonctionne. Je l'utiliserais si je n'arrive pas a trouver de code VBA. Un grand merci à vous pour votre aide!

Re,

Si tu as besoin d'une macro .. il ne faut pas hésiter à joindre un fichier test ...

Bonjour à tous,

un essai macro:

For x = 2 To 50
    jour = Day(Cells(x, 3))
    mois = Round(Int((Month(Cells(x, 3)) - 1) / 3)) * 3 + 3
    année = Year(Cells(x, 3))
    Cells(x, 3) = DateAdd("d", -1, DateAdd("m", 1, "01/" & mois & "/" & année))
Next x

A+

edit :

ou bien

For x = 2 To 50
    mois = Round(Int((Month(Cells(x, 3)) - 1) / 3)) * 3 + 3
    année = Year(Cells(x, 3))
    Cells(x, 3) = DateSerial(année, mois + 1, 0)
Next x

Si tu as besoin d'une macro .. il ne faut pas hésiter à joindre un fichier test ...

Je ne sais pas si cela aidera beaucoup mais voilà à quoi ressemblerait les données

Ainsi, dans la dernière colonne, l'idéal serait générer une macro pour automatiser votre formule

7exemple2.xlsx (10.94 Ko)

Re,

A adapter à ta situation ...

Sub FinTrimestre()
Dim c As Range
Dim rng As Range
' Ajuster les plages ...
' Données en C et Résultats en D
  Set rng = Feuil1.Range("C2:C20")
  For Each c In rng
    c.Offset(0, 1) = Evaluate("=DATE(YEAR(" & CLng(c.Value) & "),CEILING(MONTH(" & CLng(c.Value) & "),3)+1,0)")
    c.Offset(0, 1).NumberFormat = "[$-409]d-mm-yy;@"
  Next c
End Sub

En espèrant que cela t'aide

Re,

Si ta source est la colonne H ... et ta destination la colonne I ...

Ci-joint ton fichier test ...

2test-snkg.xlsm (16.54 Ko)

un essai macro:

Merci pour votre retour, le code marche comme je le voudrais!

Je l'ai adapté à mon cas, voici la version finale si cela peut aider quelqu'un d'autre.

Merci encore!

Sub DATE_MODIFICATION()

Dim x As Integer

Dim LastRow2 As Long

Dim mois As Date

Dim année As Date

Columns(9).Insert

Cells(1, 9) = ("Date traitée")

LastRow2 = Sheets("DATA SELECTION").Range("A" & Rows.Count).End(xlUp).Row

For x = 2 To LastRow2

mois = Round(Int((Month(Cells(x, 8)) - 1) / 3)) * 3 + 3

année = Year(Cells(x, 8))

Cells(x, 9) = DateSerial(année, mois + 1, 0)

Next x

End Sub

=DATE(ANNEE(A2);PLAFOND(MOIS(A2);3)+1;0)

trop fort !

bien mieux que mon bidouillage que je n'ai pas terminé

mais il faut connaître le PLAFOND

pour SNKG :

mon avis perso de moi : ne JAMAIS faire avec VBA ce qui existe en formules

amitiés à vous

Rechercher des sujets similaires à "intervalle dates"