Date mensuelle

Le
Patou
Bonjour à tous,
Je souhaiterais faire en Visual basic un petit module qui me donnerais les
dates mensuelles en partant d'un jour que j'aurai entré sur un TextBox.
Exemple: entrer le 12 et avoir sur ma feuille correspondante a1/01/2009
a2 10/02/2009 etc. en sachant que je sais créer une boucle avec un compteur,
mais le problème est la modif du mois, surtout dans le cas d'un 29, 30 ou
31.
Je pense, que j'arriverais à bidouiller un truc à la flan? Mais j'aimerais
avoir quelque chose de plus "pro".
D'avance merci à vous
Patrick
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Caetera
Le #19865141
"Patou" C699D2A0.27D%
Exemple: entrer le 12 et avoir sur ma feuille correspondante a1/01/2009
a2 10/02/2009 etc.



Quel rapport entre le 12 et 10/01...10/02... ?

Etc
Patou
Le #19865261
Le 1/08/09 11:11, dans , « Caetera »


"Patou" C699D2A0.27D%
Exemple: entrer le 12 et avoir sur ma feuille correspondante a1/01/2009
a2 10/02/2009 etc.



Quel rapport entre le 12 et 10/01...10/02... ?

Etc




Effectivement : il faut lire le 12/01/2009 et 12/02/2009 etc

Merci
Caetera
Le #19865391
"Patou" C699D44F.281%

Effectivement : il faut lire le 12/01/2009 et 12/02/2009 etc



Et si tu saisis 30, que faut-il afficher ?
30/01/2009 - 28/01/2009 - 30/03/2009..... ?

Et si tu saisis 31, que faut-il afficher ?
31/01/2009 - 28/01/2009 - 31/03/2009..... ?

Ou autre chose ?

Etc
MichDenis
Le #19866521
Bonjour Patou,

Je n'ai pas tout compris...
Quelque chose qui pourrait t'aider à réaliser ce que tu désires faire :

N.B - Attention aux coupures de ligne par le
service de messagerie.
'-----------------------------------------
Sub test()
Dim Année As Long, mois As Integer
Dim MaDate As Date, A As Integer

If IsDate(Me.Textbox1) = True Then
MaDate = CDate(MaDate)
Année = Year(MaDate)
mois = Month(MaDate)

With Worksheets("Feuil1") 'nom feuille à adapter
'Boucle pour les 12 prochains mois
For A = 1 To 12
'Dans la colonne A1:A12, la date
'des 12 mois suivants à la date saisie
'dans le textbox (le jour 1 du mois
With .Range("A" & A)
.NumberFormat = "DD/MM/YYYY"
.Value = Format(DateSerial(Année, mois + A, 1), _
"DD/MM/YYYY")
End With
With .Range("B" & A)
'Dans la colonne B1:B12, la date du
'dernier jour du mois pour les 12 mois
'suivants la date saisie dans ton textbox
.NumberFormat = "DD/MM/YYYY"
.Value = Format(DateSerial(Année, mois + A + 1, 0), _
"DD/MM/YYYY")
End With
Next
End With
Else
MsgBox "La date saisie dans le textbox est erronée"
End If
End Sub
'-----------------------------------------



"Patou" C699D2A0.27D%
Bonjour à tous,
Je souhaiterais faire en Visual basic un petit module qui me donnerais les
dates mensuelles en partant d'un jour que j'aurai entré sur un TextBox.
Exemple: entrer le 12 et avoir sur ma feuille correspondante a1/01/2009
a2 10/02/2009 etc. en sachant que je sais créer une boucle avec un compteur,
mais le problème est la modif du mois, surtout dans le cas d'un 29, 30 ou
31.
Je pense, que j'arriverais à bidouiller un truc à la flan? Mais j'aimerais
avoir quelque chose de plus "pro".
D'avance merci à vous
Patrick
Patou
Le #19867331
Le 1/08/09 11:39, dans , « Caetera »


"Patou" C699D44F.281%

Effectivement : il faut lire le 12/01/2009 et 12/02/2009 etc



Et si tu saisis 30, que faut-il afficher ?
30/01/2009 - 28/01/2009 - 30/03/2009..... ?

Et si tu saisis 31, que faut-il afficher ?
31/01/2009 - 28/01/2009 - 31/03/2009..... ?

Ou autre chose ?

Etc





Effectivement, le but est en début d'année d'entrer un paiement mensuel
(emprunt par exemple ) a une date précise chaque mois. Il est évident que si
on choisit la fin de mois, c'est le 31/01, 28/02 ou 29/02 etc
Merci
Patrick
Patou
Le #19867441
Merci infiniment,
En fait je souhaite un automatisme qui me permette en début d'année d'avoir
un paiement mensuel qui s'inscrit pour l'année mois par mois (dans un base
de données d'un budget) à une date? (exemple le 10 de chaque mois. Ce qui
m'est particulièrement compliqué est un paiement le 29, le 30 ou 31 car je
ne sait pas comment imposer une fin de mois ).
Merci
Patrick


Le 1/08/09 14:34, dans , « MichDenis »

Bonjour Patou,

Je n'ai pas tout compris...
Quelque chose qui pourrait t'aider à réaliser ce que tu désires faire :

N.B - Attention aux coupures de ligne par le
service de messagerie.
'-----------------------------------------
Sub test()
Dim Année As Long, mois As Integer
Dim MaDate As Date, A As Integer

If IsDate(Me.Textbox1) = True Then
MaDate = CDate(MaDate)
Année = Year(MaDate)
mois = Month(MaDate)

With Worksheets("Feuil1") 'nom feuille à adapter
'Boucle pour les 12 prochains mois
For A = 1 To 12
'Dans la colonne A1:A12, la date
'des 12 mois suivants à la date saisie
'dans le textbox (le jour 1 du mois
With .Range("A" & A)
.NumberFormat = "DD/MM/YYYY"
.Value = Format(DateSerial(Année, mois + A, 1), _
"DD/MM/YYYY")
End With
With .Range("B" & A)
'Dans la colonne B1:B12, la date du
'dernier jour du mois pour les 12 mois
'suivants la date saisie dans ton textbox
.NumberFormat = "DD/MM/YYYY"
.Value = Format(DateSerial(Année, mois + A + 1, 0), _
"DD/MM/YYYY")
End With
Next
End With
Else
MsgBox "La date saisie dans le textbox est erronée"
End If
End Sub
'-----------------------------------------



"Patou" C699D2A0.27D%
Bonjour à tous,
Je souhaiterais faire en Visual basic un petit module qui me donnerais les
dates mensuelles en partant d'un jour que j'aurai entré sur un TextBox.
Exemple: entrer le 12 et avoir sur ma feuille correspondante a1/01/2009
a2 10/02/2009 etc. en sachant que je sais créer une boucle avec un compteur,
mais le problème est la modif du mois, surtout dans le cas d'un 29, 30 ou
31.
Je pense, que j'arriverais à bidouiller un truc à la flan? Mais j'aimerais
avoir quelque chose de plus "pro".
D'avance merci à vous
Patrick



Patou
Le #19867661
Je viens d'essayer, ça semble marcher bien,
Mais ce que je souhaiterais c'est pouvoir entrer dans un textbox un nombre
de 1 à 31 qui serait la date du jour et d'avoir les dates qui s'inscrivent
Exemple je rentre le 14 en textbox et j'ai mes 12 lignes qui s'affichent sur
ma feuille
14/01/2009
14/02/2009 etc
J'espère avoir été suffisament clair
Merci
Patrick

Le 1/08/09 17:55, dans C69A3209.298%, « Patou »

Merci infiniment,
En fait je souhaite un automatisme qui me permette en début d'année d'avoir
un paiement mensuel qui s'inscrit pour l'année mois par mois (dans un base
de données d'un budget) à une date? (exemple le 10 de chaque mois. Ce qui
m'est particulièrement compliqué est un paiement le 29, le 30 ou 31 car je
ne sait pas comment imposer une fin de mois ).
Merci
Patrick


Le 1/08/09 14:34, dans , « MichDenis »

Bonjour Patou,

Je n'ai pas tout compris...
Quelque chose qui pourrait t'aider à réaliser ce que tu désires faire :

N.B - Attention aux coupures de ligne par le
service de messagerie.
'-----------------------------------------
Sub test()
Dim Année As Long, mois As Integer
Dim MaDate As Date, A As Integer

If IsDate(Me.Textbox1) = True Then
MaDate = CDate(MaDate)
Année = Year(MaDate)
mois = Month(MaDate)

With Worksheets("Feuil1") 'nom feuille à adapter
'Boucle pour les 12 prochains mois
For A = 1 To 12
'Dans la colonne A1:A12, la date
'des 12 mois suivants à la date saisie
'dans le textbox (le jour 1 du mois
With .Range("A" & A)
.NumberFormat = "DD/MM/YYYY"
.Value = Format(DateSerial(Année, mois + A, 1), _
"DD/MM/YYYY")
End With
With .Range("B" & A)
'Dans la colonne B1:B12, la date du
'dernier jour du mois pour les 12 mois
'suivants la date saisie dans ton textbox
.NumberFormat = "DD/MM/YYYY"
.Value = Format(DateSerial(Année, mois + A + 1, 0), _
"DD/MM/YYYY")
End With
Next
End With
Else
MsgBox "La date saisie dans le textbox est erronée"
End If
End Sub
'-----------------------------------------



"Patou" C699D2A0.27D%
Bonjour à tous,
Je souhaiterais faire en Visual basic un petit module qui me donnerais les
dates mensuelles en partant d'un jour que j'aurai entré sur un TextBox.
Exemple: entrer le 12 et avoir sur ma feuille correspondante a1/01/2009
a2 10/02/2009 etc. en sachant que je sais créer une boucle avec un compteur,
mais le problème est la modif du mois, surtout dans le cas d'un 29, 30 ou
31.
Je pense, que j'arriverais à bidouiller un truc à la flan? Mais j'aimerais
avoir quelque chose de plus "pro".
D'avance merci à vous
Patrick






MichDenis
Le #19867911
Essaie ceci :

'--------------------------------------------
Sub test()
Dim Année As Long, mois As Integer, J As Integer
Dim MaDate As Date, A As Integer, jour As Integer

If IsDate(Me.textbox1) = True Then
MaDate = CDate(Me.textbox1)
Année = Year(MaDate)
mois = Month(MaDate)
jour = Day(MaDate)

With Worksheets("Feuil1") 'nom feuille à adapter
'Boucle pour les 12 prochains mois
For A = 1 To 12
'Dans la colonne A1:A12, la date
'des 12 mois suivants à la date saisie
'dans le textbox (le jour 1 du mois
If Month(DateSerial(Année, mois, 1)) = 2 Then
If jour > 28 Then
If IsBissextile(An) Then
J = 29
End If
Else
J = jour
End If
End If
With .Range("A" & A)
.NumberFormat = "DD/MM/YYYY"
.Value = Format(DateSerial(Année, mois + A, J), _
"DD/MM/YYYY")
End With
Next
End With
Else
MsgBox "La date saisie dans le textbox est erronée"
End If
End Sub
'--------------------------------------------
Function IsBissextile(An)
IsBissextile = IsDate("29/2/" & An)
End Function
'--------------------------------------------
LE TROLL
Le #19868111
Bonjour,

C'est davantage de la conception tout ça, à mon sens faut rester
classique, tu fais dans trois combo les trois choix et tu testes directement
en dur dans le code sur douze ans par exemple, ça fait quatre bissextiles
maxi, plutôt que de faire des trucs qui affichent à moitié, et tu interdis
la saisie dans le texteBox, c'est ce qui se fait le plus classiquement, ou
tu utilises un calendrier et tu récupères "value"

Pour la séquence, en dur elle est simple :


if Jr > 31 then mois = 31
if Jr < 1 then mois = 1
select case mois
case 2
if Jr > 29 then Jr = 29
if AN = 2012 or AN = 2016 or AN = 2020 or AN 24 and Jr = 29 then goto
fin
Jr = 28
case 4, 6, 9, 11 : if Jr > 30 then Jr = 30
end select
fin:


Sinon, dans l'absolu pour les dates on ne fait pas comme ça, mais
toujours avec le JJ, le jour julien, qui permet de naviguer de l'infini à
presque moins 5000 (en dessous il faut rajouter un autre calcul pour les JJ
négatifs), jettes un oeil à Jour Julien sur le Web, il te donne aussi par
calcul la semaine et le nom du jour, et la date évidemment, et même l'heure,
c'est la seule façon de calculer en astronomie et en méthématique de façon
certaine pour n'importe quelle date...

--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Patou" news:C69A36C7.29C%
Je viens d'essayer, ça semble marcher bien,
Mais ce que je souhaiterais c'est pouvoir entrer dans un textbox un nombre
de 1 à 31 qui serait la date du jour et d'avoir les dates qui s'inscrivent
Exemple je rentre le 14 en textbox et j'ai mes 12 lignes qui s'affichent
sur
ma feuille
14/01/2009
14/02/2009 etc
J'espère avoir été suffisament clair
Merci
Patrick

Le 1/08/09 17:55, dans C69A3209.298%, « Patou »

Merci infiniment,
En fait je souhaite un automatisme qui me permette en début d'année
d'avoir
un paiement mensuel qui s'inscrit pour l'année mois par mois (dans un
base
de données d'un budget) à une date? (exemple le 10 de chaque mois. Ce
qui
m'est particulièrement compliqué est un paiement le 29, le 30 ou 31 car
je
ne sait pas comment imposer une fin de mois ).
Merci
Patrick


Le 1/08/09 14:34, dans , «
MichDenis »

Bonjour Patou,

Je n'ai pas tout compris...
Quelque chose qui pourrait t'aider à réaliser ce que tu désires faire :

N.B - Attention aux coupures de ligne par le
service de messagerie.
'-----------------------------------------
Sub test()
Dim Année As Long, mois As Integer
Dim MaDate As Date, A As Integer

If IsDate(Me.Textbox1) = True Then
MaDate = CDate(MaDate)
Année = Year(MaDate)
mois = Month(MaDate)

With Worksheets("Feuil1") 'nom feuille à adapter
'Boucle pour les 12 prochains mois
For A = 1 To 12
'Dans la colonne A1:A12, la date
'des 12 mois suivants à la date saisie
'dans le textbox (le jour 1 du mois
With .Range("A" & A)
.NumberFormat = "DD/MM/YYYY"
.Value = Format(DateSerial(Année, mois + A, 1), _
"DD/MM/YYYY")
End With
With .Range("B" & A)
'Dans la colonne B1:B12, la date du
'dernier jour du mois pour les 12 mois
'suivants la date saisie dans ton textbox
.NumberFormat = "DD/MM/YYYY"
.Value = Format(DateSerial(Année, mois + A + 1, 0), _
"DD/MM/YYYY")
End With
Next
End With
Else
MsgBox "La date saisie dans le textbox est erronée"
End If
End Sub
'-----------------------------------------



"Patou" discussion :
C699D2A0.27D%
Bonjour à tous,
Je souhaiterais faire en Visual basic un petit module qui me donnerais
les
dates mensuelles en partant d'un jour que j'aurai entré sur un TextBox.
Exemple: entrer le 12 et avoir sur ma feuille correspondante
a1/01/2009
a2 10/02/2009 etc. en sachant que je sais créer une boucle avec un
compteur,
mais le problème est la modif du mois, surtout dans le cas d'un 29, 30
ou
31.
Je pense, que j'arriverais à bidouiller un truc à la flan? Mais
j'aimerais
avoir quelque chose de plus "pro".
D'avance merci à vous
Patrick









garnote
Le #19868191
Salut Patou,

Pour le plaisir, une formule qui semble convenir à ton besoin :
ÚTE(2009;LIGNE();MIN(JOUR(FIN.MOIS(DATE(2009;LIGNE();1);0));quantieme))
Est-ce le cas ?
En supposant que la cellule contenant un nombre entier de 1 à 31 se nomme
"quantieme",
tu copies la formule dans la première ligne d'une colonne et tu la tires
vers le bas.
Si elle donne de bons résultats, il serait sûrement possible de l'utiliser à
partir de ton TextBox.

Serge


"Patou" C699D2A0.27D%
Bonjour à tous,
Je souhaiterais faire en Visual basic un petit module qui me donnerais les
dates mensuelles en partant d'un jour que j'aurai entré sur un TextBox.
Exemple: entrer le 12 et avoir sur ma feuille correspondante a1/01/2009
a2 10/02/2009 etc. en sachant que je sais créer une boucle avec un
compteur,
mais le problème est la modif du mois, surtout dans le cas d'un 29, 30 ou
31.
Je pense, que j'arriverais à bidouiller un truc à la flan? Mais j'aimerais
avoir quelque chose de plus "pro".
D'avance merci à vous
Patrick



Publicité
Poster une réponse
Anonyme