Intervalle de dates Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
S
SNKG
Jeune membre
Jeune membre
Messages : 32
Inscrit le : 4 juillet 2019
Version d'Excel : 2013

Message par SNKG » 5 juillet 2019, 16:18

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,
Modifié en dernier par SNKG le 5 juillet 2019, 16:46, modifié 1 fois.
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'599
Appréciations reçues : 250
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 5 juillet 2019, 16:44

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
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 421
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 5 juillet 2019, 16:49

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
1 membre du forum aime ce message.
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
S
SNKG
Jeune membre
Jeune membre
Messages : 32
Inscrit le : 4 juillet 2019
Version d'Excel : 2013

Message par SNKG » 5 juillet 2019, 17:06

James007 a écrit :
5 juillet 2019, 16:49
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!
S
SNKG
Jeune membre
Jeune membre
Messages : 32
Inscrit le : 4 juillet 2019
Version d'Excel : 2013

Message par SNKG » 5 juillet 2019, 17:09

jmd a écrit :
5 juillet 2019, 16:44
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.
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 421
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 5 juillet 2019, 17:12

SNKG a écrit :
5 juillet 2019, 17:06
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 ...
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
A
AlgoPlus
Membre dévoué
Membre dévoué
Messages : 824
Appréciations reçues : 64
Inscrit le : 27 février 2019
Version d'Excel : 2007

Message par AlgoPlus » 5 juillet 2019, 17:19

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
1 membre du forum aime ce message.
S
SNKG
Jeune membre
Jeune membre
Messages : 32
Inscrit le : 4 juillet 2019
Version d'Excel : 2013

Message par SNKG » 5 juillet 2019, 17:25

James007 a écrit :
5 juillet 2019, 17:12
SNKG a écrit :
5 juillet 2019, 17:06
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 ...
Je ne sais pas si cela aidera beaucoup mais voilà à quoi ressemblerait les données :lole:
Ainsi, dans la dernière colonne, l'idéal serait générer une macro pour automatiser votre formule
exemple2.xlsx
(10.94 Kio) Téléchargé 4 fois
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 421
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 5 juillet 2019, 17:26

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

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 421
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 5 juillet 2019, 17:29

Re,

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

Ci-joint ton fichier test ...
Test SNKG.xlsm
(16.54 Kio) Téléchargé 1 fois
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message