VBA : Exclure weekend

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

K

kalek93

Guest
Bonjour,

Dans ma macro, je dois renvoyer le nombre de valeur en date "hier".

Mon fichier contient une multitude de lignes, la date est en colonne L.

Si la date est égale à "hier", le compteur en cellule A5 doit s'incrémenter d'une unité.

Cependant, lorsque je lance cette macro le "lundi", elle doit compteur le nb de valeur en date "vendredi". En résumé je dois exclure les weekends.

Voici mon code, pourriez-vous m'aider à ajouter cette condition de faire date-3 le lundi, et non date-1 car ma case A5 sera vide...

Code:
For i = 200 To 11 Step -1

    If Range("L" & i) = Range("A1") - 1 Then

        Range("A5") = Range("A5") + 1

    End If

Next i

J'espère que je suis assez clair ;-)

Merci d'avance,
 
Re : VBA : Exclure weekend

Bonsoir kalek93,

Il faut décaler les dimanches et les lundis en A1.

A priori pas besoin d'un Step -1 :

Code:
Sub CompteHier()
Dim dat As Date, i&
[A5] = 0 'RAZ
dat = [A1] - IIf(Weekday([A1]) = 1, 2, IIf(Weekday([A1]) = 2, 3, 1))
For i = 11 To 200
  If Range("L" & i) = dat Then [A5] = [A5] + 1
Next
End Sub
Edit : VBA n'est absolument pas nécessaire, entrer en A5 la formule :

Code:
=NB.SI(L11:L200;A1-SI(JOURSEM(A1)=1;2;SI(JOURSEM(A1)=2;3;1)))
A+
 
Dernière édition:
Re : VBA : Exclure weekend

Hello Job75,

Tu es au top 🙂 Ca fonctionne parfaitement.

Pour ma culture perso, pourrais-tu m'expliquer/détailler la ligne de code suivante ?

Code:
dat = [A1] - IIf(Weekday([A1]) = 1, 2, IIf(Weekday([A1]) = 2, 3, 1))

Merci beaucoup encore ;-)
 
Re : VBA : Exclure weekend

Bonsoir à Tous, Job75, Kalek93

Voilà l'explication de la formule de JOB75

Capture.jpg

Si tu utilises la Formule :
1. JOURSEM(A1) sans type de retour alors 1 = Dimanche, 2 = Lundi
2. JOURSEM(A1;1) type de retour identique au N°1
3. JOURSEM(A1;2) type de retour alors 1 = Lundi, 7 = Dimanche

A+
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    35.7 KB · Affichages: 104
  • Capture.jpg
    Capture.jpg
    35.7 KB · Affichages: 105
Re : VBA : Exclure weekend

Bonjour le fil, le forum,

Juste pour simplifier, mais c'est un peu plus difficile à comprendre :

Code:
Sub CompteHier()
Dim dat As Date, i&
[A5] = 0 'RAZ
dat = [A1] + (Weekday([A1]) < 3) * Weekday([A1]) - 1
For i = 11 To 200
  If Range("L" & i) = dat Then [A5] = [A5] + 1
Next
End Sub
Code:
=NB.SI(L11:L200;A1-(JOURSEM(A1)<3)*JOURSEM(A1)-1)
Se rappeler qu'en VBA True = -1...

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
469
Réponses
4
Affichages
756
Réponses
7
Affichages
987
Retour