Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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.
 

Staple1600

XLDnaute Barbatruc
Re,

•>Halffy
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 .

=> 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 ?

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…