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

VBA vérifié si datePart est Dimanche

  • Initiateur de la discussion Initiateur de la discussion Arpette
  • Date de début Date de début

Arpette

XLDnaute Impliqué
Bonsoir à tous, je souhaite vérifier si DatePart est Dimanche. Si c'est le cas, je souhaite que DatePart soit DatePart du mois précédant.

Merci de votre aide.
 

tototiti2008

XLDnaute Barbatruc
Re : VBA vérifié si datePart est Dimanche

Bonsoir Arpette,

DatePart étant une fonction VBA (à moins que ce soit aussi le nom d'une fête religieuse que je ne connais pas ), je suppose que tu veux réaliser ça en VBA...

En admettant que tu ais une variable Date1 contenant la date concernée, à tester :

Code:
If WeekDay(Date1 ,2)=7 then Date1 = DateAdd("m", -1, Date1)
 

Arpette

XLDnaute Impliqué
Re : VBA vérifié si datePart est Dimanche

Bonjour Arpette,

Voudrais-tu expliciter le contenu sémantique de ta question?

A+

Bonsoir Hasco, à l'ouverture d'un classeur je rempli des cellules avec n° de semaine. Le problème, c'est que si le 1er du mois est un dimanche et que j'ouvre le classeur, le dimanche est sur le mois précédant. voici mon code

Code:
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Worksheets("Relevé_Hebdo").Unprotect

Sheets("Récap_Mensuelle").Select
    If Cells(4, 1) = Empty Then

    Dim mois As String
    Dim Année As String
    Dim Titre As String
    Dim Récap_Mensuelle As String
    Dim Relevé_Hebdo As String
    Dim Semaine As String
    Dim Sme As String
    Dim c As Range
    Dim DateDepart As Date
    Dim Sunday As Integer
    Dim D As Date
    Dim j As Date
    Dim k As Date
    'Date départ au 1er du mois
    DateDepart = DateSerial(Year(Date), Month(Date), 1)
    k = DateDepart
    D = Date
    j = D + 1 - DatePart("w", D, vbMonday, vbFirstFourDays)
    mois = Format(j + 3, "mmmm") 'mois contenant au moins 4 jours de la semaine.
    Année = Format(DateDepart, "yyyy")

    Titre = "MOIS DE" & " " & mois & " " & Année
    Cells(4, 1) = UCase(Titre)

    Sheets("Relevé_Hebdo").Select
    Worksheets("Relevé_Hebdo").Unprotect
    mois = Format(j + 3, "mmmm")
    Année = Format(Now, "yyyy")

    Titre = "MOIS DE" & " " & mois & " " & Année
    Cells(1, 1) = UCase(Titre)
        If D > k Then
            D = k + 1
                Else
            D = D
        End If
            For Each c In Range("C1,E1,G1,I1,K1")
        
                j = D + 1 - DatePart("w", D, vbMonday, vbFirstFourDays)
                c = "Sem " & DatePart("ww", j, vbMonday, vbFirstFourDays)
                D = D + 7 'DateDepart = DateDepart + 7     'Incrémente la date de 7 jours (1 semaine)
        
            Next
        Worksheets("Relevé_Hebdo").Protect
    End If
    Application.ScreenUpdating = True

End Sub

@+
 
G

Guest

Guest
Re : VBA vérifié si datePart est Dimanche

re,

Post#1 à dit:
je souhaite vérifier si DatePart est Dimanche. Si c'est le cas, je souhaite que DatePart soit DatePart du mois précédant.

ton dernier post à dit:
Le problème, c'est que si le 1er du mois est un dimanche et que j'ouvre le classeur, le dimanche est sur le mois précédant

Y'a pas une contradiction là?

De toute façon tototiti t'a donné de quoi modifier profitablement ta date.

A+
 

Arpette

XLDnaute Impliqué
Re : VBA vérifié si datePart est Dimanche

Bonsoir tototiti, c'est exactement se que je voulais, çà fonctionne à merveille.
Merci à vous deux
 

Arpette

XLDnaute Impliqué
Re : VBA vérifié si datePart est Dimanche

Bonsoir tototiti, c'est exactement se que je voulais, çà fonctionne à merveille.
Merci à vous deux

Re tototiti, je me suis emballé un peu vite. Si date système = 01/08/2010 c'est à dire un Dimanche, cela renvoi bien sur Juillet. Mais si date système = 02/08/2010 je suis toujours sur Juillet. Voici mon code, il y a certainement une erreur.
Code:
 'Date départ au 1er du mois
    DateDepart = DateSerial(Year(Date), Month(Date), 1)
    k = DateDepart
        If Weekday(k, 2) = 7 Then
        k = DateAdd("m", -1, k)
        Else
        k = DateDepart
        End If
Merci de votre aide
 

Pierrot93

XLDnaute Barbatruc
Re : VBA vérifié si datePart est Dimanche

Bonjour à tous,

A priori chez moi, pas de problème avec le 2 août, c'est bien cette date qui est renvoyée dans k, exemple avec le code ci-dessous :

Code:
Sub test()
Dim DateDepart As Date, k As Date
DateDepart = DateSerial(Year(Date), Month(Date), [COLOR="Red"][B]2[/B][/COLOR])
k = DateDepart
If Weekday(k, 2) = 7 Then
k = DateAdd("m", -1, k)
Else
k = DateDepart
End If
End Sub

bonne journée
@+
 

Arpette

XLDnaute Impliqué
Re : VBA vérifié si datePart est Dimanche

bonjour Arpette,Hasco,Pierrot
chez moi c'est ok
change If Weekday(k, 2) = 7 Then par If Weekday(k) = vbSunday Then
à bientôt

Bonsoir Bebere, Hascaco, Pierrot et le Forum.
Je pense que je m'était mal expliqué, mais avec votre aide j'ai finis par y arrivé.
Merci à vous
Code:
DateDepart = DateSerial(Year(Date), Month(Date), 1)
    k = DateDepart
    D = Date
        If D <> k Then
          ElseIf Weekday(D) = vbSunday Then
            k = DateAdd("m", -1, k)
          Else
            k = DateDepart
        End If
 

Discussions similaires

Réponses
8
Affichages
418
Réponses
2
Affichages
218
  • Question Question
Microsoft 365 Tri alpha de colonne
Réponses
7
Affichages
161
Réponses
3
Affichages
792
  • Question Question
XL 2021 calendrier
Réponses
6
Affichages
498
Réponses
5
Affichages
545
Réponses
8
Affichages
237
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…