OVH Cloud OVH Cloud

Dates et jour

10 réponses
Avatar
Michael
Bonjour,

Quelqu 'un saurait-il en VBA comment savoir si il y a un lundi ou
un dimanche entre deux dates de deux cellules.

Merci d 'avance.!

10 réponses

Avatar
SL
Bonjour

sans VBA en matricielle (CTRL+MAJ+ENTREE)
valable jusqu'en juin 2079 pour l'instant mais d'ici là, Excel aura plus de
lignes ;-)

=MIN(JOURSEM(LIGNE(INDIRECT(A1&":"&A2))))<3
avec tes dates en A1 et A2

Stéphane

"Michael" a écrit dans le message de news:
%

Bonjour,

Quelqu 'un saurait-il en VBA comment savoir si il y a un lundi ou
un dimanche entre deux dates de deux cellules.

Merci d 'avance.!




Avatar
michdenis
Bonjour Michael,

AV avait déjà proposé ici :

'Nombre de Dimanche entre 2 dates
=SOMMEPROD((JOURSEM(LIGNE(INDIRECT(début&":"&fin)))=1)*1)

Nombre de lundi ...
=SOMMEPROD((JOURSEM(LIGNE(INDIRECT(début&":"&fin)))=2)*1)


Salutations!



"Michael" a écrit dans le message de news: %

Bonjour,

Quelqu 'un saurait-il en VBA comment savoir si il y a un lundi ou
un dimanche entre deux dates de deux cellules.

Merci d 'avance.!
Avatar
jb
Function SamDimLun(debut, fin)
Dim témoin As Boolean
témoin = False
For j = debut To fin
If Weekday(j) = 2 Or Weekday(j) = 1 Or Weekday(j) = 7 Then
témoin = True
End If
Next j
If témoin = True Then SamDimLun = True Else SamDimLun = False
End Function

Sub essai()
If SamDimLun(#11/1/2005#, #11/5/2005#) = True Then
MsgBox "Sam dim lun"
End If
End Sub

Cette fonction peut également s'utiliser dans le tableur

JB
Avatar
Michael
Merci ça m'aide déjà bien mais je ne parviens pas a trouver la syntaxe pour
incrementer un compteur pour (par ex.) chaque lundi entre mes deux
dates.(une en A1 l'autre en C3)

For Each Weekday(j) = 1
compteur = compteur + 1

Merci beaucoup de votre aide !!!
Avatar
jb
Sub essai()
x = CombienSamDimLun(#11/1/2005#, #11/12/2005#)
MsgBox x
End Sub

Function CombienSamDimLun(debut, fin)
Dim n As Integer
n = 0
For j = debut To fin
If Weekday(j) = 2 Or Weekday(j) = 1 Or Weekday(j) = 7 Then
n = n + 1
End If
Next j
CombienSamDimLun = n
End Function

JB
Avatar
Michael
Merci infiniment jb pour toutes ces precisions mais je suis (encore)
confronté à un probleme :

En G3 : un nombre au format [h]:mm qui correspond à un nombre d'heures sur
plusieurs jours.
Une constante k qui 'indique (merci !) le nombre de samedi et dimanche.

J'aimerai en G4 avoir G3-(mon nb de jours * 24h) or, k*24 = 120 h
(normal...)

mais G3 moins 120 me donne un resultat faux car pour excel c'est un entier
et non une heure...

Quelle syntaxe utiliser pour avoir un resultat correct ?

Merci d'avance
Avatar
jb
Je supposes que tu veux soustraire (en heures) le nombre de SamDimLun
de G3:
24 h est représenté par 1, 12 h par 0,5

=G3-H3 par ex si H3 contient le nb de SamDimLun

JB
Avatar
jb
Sub essai()
x = CombienSamDimLun(#11/1/2005#, #11/12/2005#)
MsgBox x
End Sub

Function CombienSamDimLun(debut, fin)
Dim n As Integer
n = 0
For j = debut To fin
If Weekday(j) = 2 Or Weekday(j) = 1 Or Weekday(j) = 7 Then
n = n + 1
End If
Next j
CombienSamDimLun = n
End Function

JB
Avatar
jb
Voici un fichier joint.

http://cjoint.com/?ldo3kbRD7q

JB
Avatar
Michael
Merci d'avoir transmis je commence à voir le bout de mon probleme maintenant
!

Si tu n'en a pas encore eu assez j'ai fait un nouveau post pour "detecter"
un jour ferié.

Grands mercis encore pour tes conseils !

Salutations.