OVH Cloud OVH Cloud

vba-mois precedent

9 réponses
Avatar
Pierre.M
Bonjour a tous,

comment en vba renvoyer le mois precedent (m-1) dans la cellule A1si on
est entre le 1er et le 9 du mois (m), et la date du mois en cours le
reste du temps?

Merci pour votre aide toujours précieuse.

Pierre

9 réponses

Avatar
Youky
[A1] = Month(Date) - 1
Youky

"Pierre.M" a écrit dans le message de news:
45100329$0$25952$
Bonjour a tous,

comment en vba renvoyer le mois precedent (m-1) dans la cellule A1si on
est entre le 1er et le 9 du mois (m), et la date du mois en cours le reste
du temps?

Merci pour votre aide toujours précieuse.

Pierre



Avatar
Michel Rotteleur [MS]
Bonjour,

Vous pouvez vous inspirer du code suivant:

Public Function RetourneMois(ByVal maCell As Range) As Integer
Dim maDate As Date

If IsDate(maCell.Value) Then
maDate = DateAdd("d", -9, maCell.Value)
RetourneMois = Month(maDate)
Else
RetourneMois = CVErr(xlErrValue)
End If
End Function

Il suffit alors d'écrire dans la cellule A1:

=RetourneMois(B1)

Cordialement,


Michel

"Pierre.M" a écrit dans le message de news:
45100329$0$25952$
Bonjour a tous,

comment en vba renvoyer le mois precedent (m-1) dans la cellule A1si on
est entre le 1er et le 9 du mois (m), et la date du mois en cours le reste
du temps?

Merci pour votre aide toujours précieuse.

Pierre



Avatar
Jacky
Bonsoir,
Ceci:
'-----------
Sub jj()
[a1] = (Month(Now))
If Month(Now) < 10 Then [a1] = Month(Now) - 1
End Sub
'---------
--
Salutations
JJ

"Youky" a écrit dans le message de news:
ugbK$1$
[A1] = Month(Date) - 1
Youky

"Pierre.M" a écrit dans le message de news:
45100329$0$25952$
Bonjour a tous,

comment en vba renvoyer le mois precedent (m-1) dans la cellule A1si on
est entre le 1er et le 9 du mois (m), et la date du mois en cours le
reste du temps?

Merci pour votre aide toujours précieuse.

Pierre







Avatar
Youky
Je comprends la question comme cela
les 9 premiers jours ont renvoie le mois -1 les autres jours le mois normal
If Day(Now) < 10 Then
[A1] = Month(Now) - 1
Else
[A1] = Month(Now)
End If

"Michel Rotteleur [MS]" a écrit dans le message de
news: %2317XV8$
Bonjour,

Vous pouvez vous inspirer du code suivant:

Public Function RetourneMois(ByVal maCell As Range) As Integer
Dim maDate As Date

If IsDate(maCell.Value) Then
maDate = DateAdd("d", -9, maCell.Value)
RetourneMois = Month(maDate)
Else
RetourneMois = CVErr(xlErrValue)
End If
End Function

Il suffit alors d'écrire dans la cellule A1:

=RetourneMois(B1)

Cordialement,


Michel

"Pierre.M" a écrit dans le message de news:
45100329$0$25952$
Bonjour a tous,

comment en vba renvoyer le mois precedent (m-1) dans la cellule A1si on
est entre le 1er et le 9 du mois (m), et la date du mois en cours le
reste du temps?

Merci pour votre aide toujours précieuse.

Pierre







Avatar
Michel Rotteleur [MS]
Youky...

Le 2 janvier, Month(Now) - 1 vaut zéro, alors qu'on attend 12, non?

Il faut enlever 9 jours pour trouver le mois qui nous intéresse (9 jours et
non 10, comme ça le 9 du mois je suis encore au mois précédent, et le 10 je
change) :

[A1] = Month(Now() - 9)

Pour tester on peut changer la date de son PC... ou bien écrire par exemple

[A1] = Month(A2 - 9)

et mettre des dates de test dans A2

Michel Rotteleur
Microsoft France


"Youky" a écrit dans le message de news:

Je comprends la question comme cela
les 9 premiers jours ont renvoie le mois -1 les autres jours le mois
normal
If Day(Now) < 10 Then
[A1] = Month(Now) - 1
Else
[A1] = Month(Now)
End If

"Michel Rotteleur [MS]" a écrit dans le message de
news: %2317XV8$
Bonjour,

Vous pouvez vous inspirer du code suivant:

Public Function RetourneMois(ByVal maCell As Range) As Integer
Dim maDate As Date

If IsDate(maCell.Value) Then
maDate = DateAdd("d", -9, maCell.Value)
RetourneMois = Month(maDate)
Else
RetourneMois = CVErr(xlErrValue)
End If
End Function

Il suffit alors d'écrire dans la cellule A1:

=RetourneMois(B1)

Cordialement,


Michel

"Pierre.M" a écrit dans le message de news:
45100329$0$25952$
Bonjour a tous,

comment en vba renvoyer le mois precedent (m-1) dans la cellule A1si on
est entre le 1er et le 9 du mois (m), et la date du mois en cours le
reste du temps?

Merci pour votre aide toujours précieuse.

Pierre











Avatar
Jacky
Bonsoir,

Le 2 janvier, Month(Now) - 1 vaut zéro, alors qu'on attend 12, non?


Moi aussi j'ai répondu une bêtise, même que j'ai mal lu la question. (If
Month(Now) < 10 )

Merci d'avoir rectifié ce mauvais tir.
Mes excuses auprès de Pierre.

--
Salutations
JJ

"Michel Rotteleur [MS]" a écrit dans le message de
news:
Youky...

Le 2 janvier, Month(Now) - 1 vaut zéro, alors qu'on attend 12, non?

Il faut enlever 9 jours pour trouver le mois qui nous intéresse (9 jours
et non 10, comme ça le 9 du mois je suis encore au mois précédent, et le
10 je change) :

[A1] = Month(Now() - 9)

Pour tester on peut changer la date de son PC... ou bien écrire par
exemple

[A1] = Month(A2 - 9)

et mettre des dates de test dans A2

Michel Rotteleur
Microsoft France


"Youky" a écrit dans le message de news:

Je comprends la question comme cela
les 9 premiers jours ont renvoie le mois -1 les autres jours le mois
normal
If Day(Now) < 10 Then
[A1] = Month(Now) - 1
Else
[A1] = Month(Now)
End If

"Michel Rotteleur [MS]" a écrit dans le message de
news: %2317XV8$
Bonjour,

Vous pouvez vous inspirer du code suivant:

Public Function RetourneMois(ByVal maCell As Range) As Integer
Dim maDate As Date

If IsDate(maCell.Value) Then
maDate = DateAdd("d", -9, maCell.Value)
RetourneMois = Month(maDate)
Else
RetourneMois = CVErr(xlErrValue)
End If
End Function

Il suffit alors d'écrire dans la cellule A1:

=RetourneMois(B1)

Cordialement,


Michel

"Pierre.M" a écrit dans le message de news:
45100329$0$25952$
Bonjour a tous,

comment en vba renvoyer le mois precedent (m-1) dans la cellule A1si on
est entre le 1er et le 9 du mois (m), et la date du mois en cours le
reste du temps?

Merci pour votre aide toujours précieuse.

Pierre















Avatar
Youky
La boulette pour moi,
Félicitation ! ! !
Youky
"Michel Rotteleur [MS]" a écrit dans le message de
news:
Youky...

Le 2 janvier, Month(Now) - 1 vaut zéro, alors qu'on attend 12, non?

Il faut enlever 9 jours pour trouver le mois qui nous intéresse (9 jours
et non 10, comme ça le 9 du mois je suis encore au mois précédent, et le
10 je change) :

[A1] = Month(Now() - 9)

Pour tester on peut changer la date de son PC... ou bien écrire par
exemple

[A1] = Month(A2 - 9)

et mettre des dates de test dans A2

Michel Rotteleur
Microsoft France


"Youky" a écrit dans le message de news:

Je comprends la question comme cela
les 9 premiers jours ont renvoie le mois -1 les autres jours le mois
normal
If Day(Now) < 10 Then
[A1] = Month(Now) - 1
Else
[A1] = Month(Now)
End If

"Michel Rotteleur [MS]" a écrit dans le message de
news: %2317XV8$
Bonjour,

Vous pouvez vous inspirer du code suivant:

Public Function RetourneMois(ByVal maCell As Range) As Integer
Dim maDate As Date

If IsDate(maCell.Value) Then
maDate = DateAdd("d", -9, maCell.Value)
RetourneMois = Month(maDate)
Else
RetourneMois = CVErr(xlErrValue)
End If
End Function

Il suffit alors d'écrire dans la cellule A1:

=RetourneMois(B1)

Cordialement,


Michel

"Pierre.M" a écrit dans le message de news:
45100329$0$25952$
Bonjour a tous,

comment en vba renvoyer le mois precedent (m-1) dans la cellule A1si on
est entre le 1er et le 9 du mois (m), et la date du mois en cours le
reste du temps?

Merci pour votre aide toujours précieuse.

Pierre















Avatar
isabelle
bonjour Pierre,

une autre solution parmi les autres,

MyDate = CDate(Month(Date) & "/" & 1 & "/" & Year(Date)) - 1

ou bien avec un format particulié,

MyDate = Format(CDate(Month(Date) & "/" & 1 & "/" & Year(Date)) - 1, "mmmm")

isabelle


Bonjour a tous,

comment en vba renvoyer le mois precedent (m-1) dans la cellule A1si on
est entre le 1er et le 9 du mois (m), et la date du mois en cours le
reste du temps?

Merci pour votre aide toujours précieuse.

Pierre



Avatar
Pierre.M
Merci a tous pour votre participation.
C'est grace a vous que petit a petit je peux avancer.
Et de plus, aujourd'hui, d'autres que moi ont pu en profiter... ;-)
Merci encore.

Pierre

PS: ca marche, bien-sur!