Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Date mensuelle

21 réponses
Avatar
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=10/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

1 réponse

1 2 3
Avatar
Patou
Le 2/08/09 15:35, dans C69B62D0.2BB%, « Patou »
a écrit :
Ouf ça marche
Encore mille merci et ci dessous
Mon module fini
Patrick


Private Sub CommandButton1_Click()
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)
moi = Month(MaDate)
jour = Day(MaDate)
With Worksheets("Feuil1")
For A = 1 To 12
mois = moi + A - 1
'Dans la colonne A1:A12, la date
'des 12 mois suivants à la date saisie
'dans le textbox (le jour 1 du mois
If Day(DateSerial(Année, moi, jour)) <= 28 Then
With .Range("A" & A)
.Value = DateSerial(Année, mois, jour)
.NumberFormat = "DD/MM/YYYY"

End With
Else
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)

.Value = DateSerial(Année, mois + 1, J)
.NumberFormat = "DD/MM/YYYY"
End With
End If
Next
End With


Else
MsgBox "La date saisie dans le TextBox est erronée"
End If
End Sub

C'est bien ce que j'avais cru comprendre. D'ailleurs je préfererai n'entrer
qu'un jour puisque les mois et l'année sont aisément créable par déduction
informatique c'est plus simple et plus rapide à la saisie . j'ai fait ainsi
pour mes saisies date des journaux comptables puisque j'ouvre un document
avril par exemple je tape que la date soit le 5 et je le transforme en 5
avril 2009 .
Merci de tout
Je reprend mon boulot comme cela
Patrick


Le 2/08/09 15:04, dans #, « MichDenis »
a écrit :

la difficulté que tu rencontres en est une connue lorsque l'on
utilise un textbox pour saisir une date.

Lorsque tu entres par exemple 6 juin 2009 en utilisant ce
format : 06/06/09, il n'y aucune façon de savoir pour excel si l'usager
voulait signifier une date présentée dans le format JJ/MM/AA
ou MM/JJ/AA ou AA/MM/JJ comme le mentionnait Sam.
En utilisant la fonction de conversion Cdate(), Excel utilise le
format Date défini dans le panneau de configuration de Windows
pour interpréter la date. Il n'y a pas nécessairement concordance
entre le format de la date de saisie et le format date du panneau
de configuration de Windows.

En conséquence, l'usager devrait utiliser ce dernier format pour la saisie
de la date. La chose se complique car ce format peut être différent d'un
ordinateur à un autre...ce qui rend très difficile l'homogénisation de la
saisie de la date.

2 solutions :
A ) utilisation du contrôle "Calendar" de la boîte d'outils de l'userform
dans les contrôles supplémentaires.
B ) employer 3 textbox dûment identifiés... un pour le jour, 1 pour le mois
et un pour l'année.




"Patou" a écrit dans le message de groupe de discussion :
C69B1FC7.2B5%
Rererebonjour,
J'ai adapté la réponse de michdenis, pour approcher ce que je souhaite, mais
je rencontre un problème que je ne sais pas passer.
Lorsque je rentre dans le textbox une date comprise entre 13/01/09 par
exemple et 31/01/09. PARFAIT.
Mais lorsque ma date est comprise entre 01/01/09 et 12/01/09:ERREUR
Au lieu de donner ex 01/01/09;01/02/09;01/03/09
J'ai les réponses 01/01/09;02/01/09;03/01/09. Tout se passe comme si au lieu
d'incrémenter le mois, le programme incrémente le jour.
Merci de m'apporter une solution
Patrick
Ci dessous ma procédure dans un user form


Private Sub CommandButton1_Click()
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")
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 Day(DateSerial(Année, mois, jour)) <= 28 Then
With .Range("A" & A)
.NumberFormat = "DD/MM/YYYY"
.Value = Format(DateSerial(Année, mois + A - 1, jour), _
"DD/MM/YYYY")
End With
Else
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
End If
Next
End With


Else
MsgBox "La date saisie dans le TextBox est erronée"
End If
End Sub






1 2 3