XL 2013 Comment écrire si Date comprise entre...?

Halffy

XLDnaute Occasionnel
Bonsoir à tous les insomniaques, ou bonjour à tous les lèves-tôt ;)

Alors je cherche comment écrire en language VBA: Si Date du jour comprise entre le 20 et le 25 de chaque mois, alors...
Pour le moment, j'en suis ici:
If ???? < Date > ???? Then 'oui je sais, pas bien loin, mais s'il y avait une âme charitable s'il vous plait / Je pourrais peut-être ainsi aller me coucher; non je plaisante :D

Cordialement /.
 

Staple1600

XLDnaute Barbatruc
Re

•mapomme
J'associe ma honte à la tienne ;)
(tout en restant dans le thème ;))
VB:
Const ShameOnUs As String = """Si Date du jour comprise entre le 20 et le 25 de chaque mois, alors..."""
Const ButWeDontCare As String = "Comment écrire en langage VBA ?"
Sub test_A()
J = #3/21/2020#: O0o = 1 * Val("mapomme") + (Chr(50) + Chr(48))
MsgBox ShameOnUs & vbLf & vbLf & vbLf & Space(45) & "C'est fait !" & Chr(13) & Space(45) _
& IIf((Day(J) - O0o) >= 0 And (Day(J) - O0o) <= 5, "Oui", "Non"), _
64, ButWeDontCare & Space(3) & J
End Sub

Sub test_B()
J = Date: O0o = 1 * Val("mapomme") + (Chr(50) + Chr(48))
MsgBox ShameOnUs & vbLf & vbLf & vbLf & Space(45) & "C'est fait !" & Chr(13) & Space(45) _
& IIf((Day(J) - O0o) >= 0 And (Day(J) - O0o) <= 5, "Oui", "Non"), _
64, ButWeDontCare & Space(3) & J
End Sub
 

Halffy

XLDnaute Occasionnel
Bonjour Marcel32, mapomme, Staple1600,

=> mapomme #3: "Visiblement @Halffy fait partie des troisièmes , "les couche-tard". Il est tombé entre 4h42 et 5h08 dans les bras de Morphée et pas qu'à moitié, fi!"
Effectivement, je serais plus "couche-tard", mais malgré le confinement, je dû interrompre le suivi: boulot oblige :) /
=> Staple1600 #4: Merci de ta contribution, que j'ai testée pour apprendre et voir / Toutefois, à défaut de plus de renseignements fournis, difficile d'être dans les clous quant à la solution recherchée (au regard de la configuration finale de mon fichier); mais merci tout de même de ta contribution.
=> Marcel32 #2: Bravo et Merci ;) / après avoir cherché à mettre en forme la ligne donnée, je t'annonce que c'est exactement ce dont j'avais besoin pour poursuivre mon projet : Félicitation!

à tous, un grand Merci / Prenez bien soin de vous & bon confinement ;)
Sujet Résolu / Cordialement.
 

Halffy

XLDnaute Occasionnel
Staple1600,

J'ai regardé les 2 sub_Test...
=> Alors la première oblige à rentrer un date dans la macro apparemment: pas pratique
=> Seconde Sub: répond presque à ma problématique, puisque l'interval est bien de 5 jours, toutefois j'ai besoin que cet interval soit de 5 jours (effectivemment), mais à dater d'une date précise.

Toutefois, afin de ne pas abuser de votte temps... ne cherchez plus, puisque que Marcel32 m'a apporté une solution satisfaisante.;):cool:
 

Staple1600

XLDnaute Barbatruc
Re,

•>Halffy
Staple1600 #4: Merci de ta contribution, que j'ai testée pour apprendre et voir
Toutefois, à défaut de plus de renseignements fournis (tout comme toi, camarade ! ;))
difficile d'être dans les clous quant à la solution recherchée
(au regard de la configuration finale de mon fichier) (pas vu la couleur d'un fichier Excel fourni par tes soins)
mais merci tout de même de ta contribution.
Les deux codes que je proposais (le dernier était une [pj] entre ma pomme et mapomme ;), ou plutôt ma poire et mapomme) sont évidemment à adapter.
Ils furent poster dans ta discussion pour simplement titiller la curiosité du demandeur ou des lecteurs du fil ;)
 

Staple1600

XLDnaute Barbatruc
Re

Donc ci-dessous (avec mes idioties en moins)
VB:
Sub ExemplePlusClair(Optional Pour_Halffy)
Dim Jour_Hasard_A As Date, Jour_Hasard_B As Date
MesJours = Array(20, 21, 22, 23, 24, 25) ' Numéro des jours choisis dans le mois
Randomize
Jour_Hasard_A = CDate(Application.RandBetween(20, 25) & "-" & Month(Date)) 'jour choisi forcément entre 20 et 25
If IsNumeric(Application.Match(Day(Jour_Hasard_A), MesJours, 0)) Then
MsgBox Jour_Hasard_A & " est bien entre le 20 et le 25 du mois"
End If
Jour_Hasard_B = CDate("1-" & Application.RandBetween(1, 12)) ' jour au hasard dans l'année en cours
If IsNumeric(Application.Match(Day(Jour_Hasard_B), MesJours, 0)) Then
MsgBox Jour_Hasard_B & " est bien entre le 20 et le 25 du mois"
Else
MsgBox Jour_Hasard_B & " n'est pas entre le 20 et le 25 du mois " & MonthName(Month(Jour_Hasard_B))
End If
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Et enfin le second exemple (également sans mes idioties)
VB:
Sub ExemplePlusClair_B(Optional Pour_Halffy)
Dim Jour_Hasard_A As Date, Jour_Hasard_B As Date
Randomize
Jour_Hasard_A = CDate(Application.RandBetween(20, 25) & "-" & Month(Date)) 'jour choisi forcément entre 20 et 25
If (Day(Jour_Hasard_A) - 20) >= 0 And (Day(Jour_Hasard_A) - 20) <= 5 Then
MsgBox Jour_Hasard_A & " est bien entre le 20 et le 25 du mois en cours."
End If
Jour_Hasard_B = CDate("1-" & Application.RandBetween(1, 12)) ' jour au hasard dans l'année en cours
If (Day(Jour_Hasard_B) - 20) >= 0 And (Day(Jour_Hasard_B) - 20) <= 5 Then
MsgBox Jour_Hasard_B & " est bien entre le 20 et le 25 du mois"
Else
MsgBox Jour_Hasard_B & " n'est pas entre le 20 et le 25 du mois de: " & MonthName(Month(Jour_Hasard_B))
End If
End Sub
NB: Etant confiné, je ne peux que perdre mon temps ;)
(Mais je préfère que ce soit ici plutôt qu'avachi devant ma télé ;))
 

Halffy

XLDnaute Occasionnel
Re, Staple1600,

# Toutefois, à défaut de plus de renseignements fournis (tout comme toi, camarade ! ;))
=> Je parlais de & pour moi ;)
# (au regard de la configuration finale de mon fichier) (pas vu la couleur d'un fichier Excel fourni par tes soins)
=> En effet, si je n'est pas jugé nécessaire de vous adjoindre un fichier, c'est tout simplement parce que je pensais ma demande assez explicite pour obtenir une aide; et je pense que c'était le cas puisque Marcel32 a su répondre parfaitement à ma requête :cool:.

=> Quant à tes 2 dernières contributions (que j'ai regardé avec intérêt afin de les essayer et d'apprendre, ce dont je te remercie), je les prends effectivement comme des solutions à cogiter pour d'éventuelles futures prise de tête ;)

Aussi loin de moi l'idée de mépriser l'aide obtenue sur ce forum, j'apprécie plus que tout, le temps que tous, vous passer à nous tirer de nos galères: Respect!!
Cordialement /.
 

Staple1600

XLDnaute Barbatruc
Re

•>Halffy
Qui a parler de mépris ? :eek:

Je précise que quand il y a de la couleurs et des emoticones dans mes posts, c'est que je suis en mode "humour"

Mes deux dernières propositions sont censées être simples
(d'où le nom de la macro ;))
Je vais donc en ajouter une troisième pour être limpide ;)
 

Staple1600

XLDnaute Barbatruc
Re

Voici donc le dernier exemple
(qui reprend la syntaxe de Marcel32, la mienne (A et B))
VB:
Sub Exemple_123__Limpide(Optional Pour_Halffy)
Date_du_jour = #3/22/2020#
Mois = Format(Date_du_jour, "mmmm yyyy")
Jours = Array(20, 21, 22, 23, 24, 25)
Marcel32:
    If Day(Date_du_jour) > 19 And Day(Date_du_jour) < 26 Then
    MsgBox "Le " & Date_du_jour & ", est compris entre le 20 et 25 du mois de " & Mois, , "Marcel32"
    End If
Staple1600_A:
        If (Day(Date_du_jour + 1) - 20) >= 0 And (Day(Date_du_jour + 1) - 20) <= 5 Then
        MsgBox "Le " & Date_du_jour + 1 & ", est compris entre le 20 et 25 du mois de " & Mois, , "Staple 1"
        End If
Staple1600_B:
            If IsNumeric(Application.Match(Day(Date_du_jour + 2), Jours, 0)) Then
            MsgBox "Le " & Date_du_jour + 2 & ", est compris entre le 20 et 25 du mois de " & Mois, , "Staple 2"
            End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 190
Membres
102 809
dernier inscrit
Sandrine83