Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Nombre de vendredi 13 de ma naissance jusqu'à aujourdhui

34 réponses
Avatar
Tatanka
Bonsoir,

J'ai adapté une macro trouvée ici :
http://www.docmemo.com/divers/vendredi13.php

me permettant d'obtenir la liste de tous les « vendredi 13 »
de 1945 jusqu'à 2011. Le résultat me satisfait mais par
souci d'apprentissage, comment la modifier pour que cette
liste ne couvre que la période du 10 mai 1945 jusqu'à
la date du jour ? Voici la macro :

Sub Vendredi_13()
Dim Année, Mois, Compteur, NomMois(12)
NomMois(1) = "janvier"
NomMois(2) = "février"
NomMois(3) = "mars"
NomMois(4) = "avril"
NomMois(5) = "mai"
NomMois(6) = "juin"
NomMois(7) = "juillet"
NomMois(8) = "août"
NomMois(9) = "septembre"
NomMois(10) = "octobre"
NomMois(11) = "novembre"
NomMois(12) = "décembre"
For Année = 1945 To 2011
For Mois = 1 To 12
If Weekday(Mois & "/13/" & Année) = 6 Then
Range("A1").Offset(Compteur, 0) = "13 " _
& NomMois(Mois) & " " & Année
Compteur = Compteur + 1
End If
Next Mois
Next Année
End Sub

10 réponses

1 2 3 4
Avatar
DanielCo
Tatanka a pensé très fort :
Bonsoir,

J'ai adapté une macro trouvée ici :
http://www.docmemo.com/divers/vendredi13.php

me permettant d'obtenir la liste de tous les « vendredi 13 »
de 1945 jusqu'à 2011. Le résultat me satisfait mais par
souci d'apprentissage, comment la modifier pour que cette
liste ne couvre que la période du 10 mai 1945 jusqu'à
la date du jour ? Voici la macro :

Sub Vendredi_13()
Dim Année, Mois, Compteur, NomMois(12)
NomMois(1) = "janvier"
NomMois(2) = "février"
NomMois(3) = "mars"
NomMois(4) = "avril"
NomMois(5) = "mai"
NomMois(6) = "juin"
NomMois(7) = "juillet"
NomMois(8) = "août"
NomMois(9) = "septembre"
NomMois(10) = "octobre"
NomMois(11) = "novembre"
NomMois(12) = "décembre"
For Année = 1945 To 2011
For Mois = 1 To 12
If Weekday(Mois & "/13/" & Année) = 6 Then
Range("A1").Offset(Compteur, 0) = "13 " _
& NomMois(Mois) & " " & Année
Compteur = Compteur + 1
End If
Next Mois
Next Année
End Sub



Bonjour Serge,
Peut-être :

Sub Vendredi_13()
Dim Année, Mois, Compteur, NomMois(12)
NomMois(1) = "janvier"
NomMois(2) = "février"
NomMois(3) = "mars"
NomMois(4) = "avril"
NomMois(5) = "mai"
NomMois(6) = "juin"
NomMois(7) = "juillet"
NomMois(8) = "août"
NomMois(9) = "septembre"
NomMois(10) = "octobre"
NomMois(11) = "novembre"
NomMois(12) = "décembre"
For Année = 1945 To 2011
For Mois = 1 To 12
If Weekday(DateSerial(Année, Mois, 13)) = 6 And _
DateSerial(Année, Mois, 13) > #5/10/1945# Then
Range("A1").Offset(Compteur, 0) = "13 " _
& NomMois(Mois) & " " & Année
Compteur = Compteur + 1
End If
Next Mois
Next Année
End Sub

Cordialement.
Daniel
Avatar
Jacky
Bonjour,

Ceci ne serait pas suffisant ??
'----------------
Sub Vendredi_13()
Dim Année
Columns(1).Clear
debut = "10/05/1945"
For Année = debut To Date
If Weekday(Année) = 6 And Day(Année) = 13 Then
Range("a" & Cells(Rows.Count, 1).End(3).Row + 1) = Année
End If
Next Année
Columns(1).NumberFormat = "dddd dd mmmm yyyy"
Columns(1).EntireColumn.AutoFit
End Sub
'-----------------------

--
Salutations
JJ


"Tatanka" a écrit dans le message de news: ihfus2$apb$
Bonsoir,

J'ai adapté une macro trouvée ici :
http://www.docmemo.com/divers/vendredi13.php

me permettant d'obtenir la liste de tous les « vendredi 13 »
de 1945 jusqu'à 2011. Le résultat me satisfait mais par
souci d'apprentissage, comment la modifier pour que cette
liste ne couvre que la période du 10 mai 1945 jusqu'à
la date du jour ? Voici la macro :

Sub Vendredi_13()
Dim Année, Mois, Compteur, NomMois(12)
NomMois(1) = "janvier"
NomMois(2) = "février"
NomMois(3) = "mars"
NomMois(4) = "avril"
NomMois(5) = "mai"
NomMois(6) = "juin"
NomMois(7) = "juillet"
NomMois(8) = "août"
NomMois(9) = "septembre"
NomMois(10) = "octobre"
NomMois(11) = "novembre"
NomMois(12) = "décembre"
For Année = 1945 To 2011
For Mois = 1 To 12
If Weekday(Mois & "/13/" & Année) = 6 Then
Range("A1").Offset(Compteur, 0) = "13 " _
& NomMois(Mois) & " " & Année
Compteur = Compteur + 1
End If
Next Mois
Next Année
End Sub



Avatar
michel ou sam
Bonjour,
j'ai fait 2 autres variations sur le thème

Sub Vendredi_13c()
'on analyse chaque jour entre le 10 mai 45 et aujourd'hui
Dim Année, Mois, Compteur, NomMois(12)
NomMois(1) = "janvier"
NomMois(2) = "février"
NomMois(3) = "mars"
NomMois(4) = "avril"
NomMois(5) = "mai"
NomMois(6) = "juin"
NomMois(7) = "juillet"
NomMois(8) = "août"
NomMois(9) = "septembre"
NomMois(10) = "octobre"
NomMois(11) = "novembre"
NomMois(12) = "décembre"
For jour = DateSerial(1945, 5, 10) To Now
If Weekday(jour) = 6 And Day(jour) = 13 Then
Range("C1").Offset(Compteur, 0) = "13 " & " " & NomMois(Month(jour))
& " " & Year(jour)
Compteur = Compteur + 1
End If
Next jour
End Sub

Sub Vendredi_13d()
' on analyse que le 13 de chaque mois, en ajoutant 1 mois à chaque fois, du
13/5/45 à aujourd'hui
Dim Année, Mois, Compteur, NomMois(12)
NomMois(1) = "janvier"
NomMois(2) = "février"
NomMois(3) = "mars"
NomMois(4) = "avril"
NomMois(5) = "mai"
NomMois(6) = "juin"
NomMois(7) = "juillet"
NomMois(8) = "août"
NomMois(9) = "septembre"
NomMois(10) = "octobre"
NomMois(11) = "novembre"
NomMois(12) = "décembre"
Mois = 5
Do While DateSerial(1945, Mois, 13) < Now
jour = DateSerial(1945, Mois, 13)
If Weekday(jour) = 6 Then
Range("D1").Offset(Compteur, 0) = "13 " & NomMois(Month(jour)) & " "
& Year(jour)
Compteur = Compteur + 1
End If
Mois = Mois + 1
Loop
End Sub

Michel
Avatar
michel ou sam
Bonjour,
Jacky m'a fait prendre conscience qu'il suffit d'écrire dans mes 2 versions

Range("D1").Offset(Compteur, 0) = jour
avec le format qui va bien

Michel
Avatar
Frederic LE GUEN
On Jan 23, 11:49 am, "Jacky" wrote:
Bonjour,

Ceci ne serait pas suffisant ??
'----------------
Sub Vendredi_13()
Dim Ann e
Columns(1).Clear
debut = "10/05/1945"
For Ann e = debut To Date
        If Weekday(Ann e) = 6 And Day(Ann e) = 13 Then
             Range("a" & Cells(Rows.Count, 1).End(3).Row + 1) = Ann e
         End If
Next Ann e
 Columns(1).NumberFormat = "dddd dd mmmm yyyy"
 Columns(1).EntireColumn.AutoFit
End Sub
'-----------------------

--
Salutations
JJ

"Tatanka" a crit dans le message de news: ihfus2 $

> Bonsoir,

> J'ai adapt une macro trouv e ici :
>http://www.docmemo.com/divers/vendredi13.php

> me permettant d'obtenir la liste de tous les vendredi 13
> de 1945 jusqu' 2011. Le r sultat me satisfait mais par
> souci d'apprentissage, comment la modifier pour que cette
> liste ne couvre que la p riode du 10 mai 1945 jusqu'
> la date du jour ? Voici la macro :

> Sub Vendredi_13()
> Dim Ann e, Mois, Compteur, NomMois(12)
> NomMois(1) = "janvier"
> NomMois(2) = "f vrier"
> NomMois(3) = "mars"
> NomMois(4) = "avril"
> NomMois(5) = "mai"
> NomMois(6) = "juin"
> NomMois(7) = "juillet"
> NomMois(8) = "ao t"
> NomMois(9) = "septembre"
> NomMois(10) = "octobre"
> NomMois(11) = "novembre"
> NomMois(12) = "d cembre"
> For Ann e = 1945 To 2011
>    For Mois = 1 To 12
>        If Weekday(Mois & "/13/" & Ann e) = 6 Then
>            Range("A1").Offset(Compteur, 0) = "13 " _
>            & NomMois(Mois) & " " & Ann e
>            Compteur = Compteur + 1
>        End If
>    Next Mois
> Next Ann e
> End Sub



Jacky à raison, un test sur le jour "Vendredi" et sur la valeur du
jour "13" suffit largement. Pas besoin de charger un tableau avec les
mois.
Et puis même, on peut améliorer le code en passant en paramètre la
date de début et la date de fin
Avatar
Jacky
Re...
;o)
Même que l'on pourrait rajouter en fin de macro
'------------
MsgBox "Non! Non!" & vbLf & "Je ne suis (presque) pas superstitieux"
'------------
o;)
--
Salutations
JJ
Avatar
Daniel.C
Bonjour Jacky,
Ta macro est plus courte mais elle fait un test par jour quand la macro
initiale en fait un par mois.
Cordialement.
Daniel


Bonjour,

Ceci ne serait pas suffisant ??
'----------------
Sub Vendredi_13()
Dim Année
Columns(1).Clear
debut = "10/05/1945"
For Année = debut To Date
If Weekday(Année) = 6 And Day(Année) = 13 Then
Range("a" & Cells(Rows.Count, 1).End(3).Row + 1) = Année
End If
Next Année
Columns(1).NumberFormat = "dddd dd mmmm yyyy"
Columns(1).EntireColumn.AutoFit
End Sub
'-----------------------

--
Salutations
JJ


"Tatanka" a écrit dans le message de news:
ihfus2$apb$
Bonsoir,

J'ai adapté une macro trouvée ici :
http://www.docmemo.com/divers/vendredi13.php

me permettant d'obtenir la liste de tous les « vendredi 13 »
de 1945 jusqu'à 2011. Le résultat me satisfait mais par
souci d'apprentissage, comment la modifier pour que cette
liste ne couvre que la période du 10 mai 1945 jusqu'à
la date du jour ? Voici la macro :

Sub Vendredi_13()
Dim Année, Mois, Compteur, NomMois(12)
NomMois(1) = "janvier"
NomMois(2) = "février"
NomMois(3) = "mars"
NomMois(4) = "avril"
NomMois(5) = "mai"
NomMois(6) = "juin"
NomMois(7) = "juillet"
NomMois(8) = "août"
NomMois(9) = "septembre"
NomMois(10) = "octobre"
NomMois(11) = "novembre"
NomMois(12) = "décembre"
For Année = 1945 To 2011
For Mois = 1 To 12
If Weekday(Mois & "/13/" & Année) = 6 Then
Range("A1").Offset(Compteur, 0) = "13 " _
& NomMois(Mois) & " " & Année
Compteur = Compteur + 1
End If
Next Mois
Next Année
End Sub



Avatar
Jacky
Bonjour Daniel

Oui certes, j'en suis conscient.
Mais y a- t-il vraiment dans ce cas, un gain de temps d'exécution signifiant
Ma macro est moins rapide je l'admets, mais moins de 1 seconde dans les 2 procédures
--
Salutations
JJ


"Daniel.C" a écrit dans le message de news: 4d3c185b$0$18777$
Bonjour Jacky,
Ta macro est plus courte mais elle fait un test par jour quand la macro initiale en fait un par mois.
Cordialement.
Daniel


Bonjour,

Ceci ne serait pas suffisant ??
'----------------
Sub Vendredi_13()
Dim Année
Columns(1).Clear
debut = "10/05/1945"
For Année = debut To Date
If Weekday(Année) = 6 And Day(Année) = 13 Then
Range("a" & Cells(Rows.Count, 1).End(3).Row + 1) = Année
End If
Next Année
Columns(1).NumberFormat = "dddd dd mmmm yyyy"
Columns(1).EntireColumn.AutoFit
End Sub
'-----------------------

--
Salutations
JJ


"Tatanka" a écrit dans le message de news: ihfus2$apb$
Bonsoir,

J'ai adapté une macro trouvée ici :
http://www.docmemo.com/divers/vendredi13.php

me permettant d'obtenir la liste de tous les « vendredi 13 »
de 1945 jusqu'à 2011. Le résultat me satisfait mais par
souci d'apprentissage, comment la modifier pour que cette
liste ne couvre que la période du 10 mai 1945 jusqu'à
la date du jour ? Voici la macro :

Sub Vendredi_13()
Dim Année, Mois, Compteur, NomMois(12)
NomMois(1) = "janvier"
NomMois(2) = "février"
NomMois(3) = "mars"
NomMois(4) = "avril"
NomMois(5) = "mai"
NomMois(6) = "juin"
NomMois(7) = "juillet"
NomMois(8) = "août"
NomMois(9) = "septembre"
NomMois(10) = "octobre"
NomMois(11) = "novembre"
NomMois(12) = "décembre"
For Année = 1945 To 2011
For Mois = 1 To 12
If Weekday(Mois & "/13/" & Année) = 6 Then
Range("A1").Offset(Compteur, 0) = "13 " _
& NomMois(Mois) & " " & Année
Compteur = Compteur + 1
End If
Next Mois
Next Année
End Sub









Avatar
Tatanka
Merci à tous pour vos suggestions,

Et en quête de vitesse, voici ce que j'ai :

Sub Vendredi_13_Daniel_2()
Application.ScreenUpdating = False
Dim NomMois(12)
Dim d As Date, Année As Integer
Dim i As Byte, début As Date, Mois As Byte
Columns(1).Clear
For i = 1 To 12
NomMois(i) = i
Next i
début = #5/10/1945#
For Année = 1945 To 2011
For Mois = 1 To 12
d = DateSerial(Année, Mois, 13)
If d <= Date Then
If Weekday(d) = 6 And d >= début Then
Range("A1").Offset(Compteur, 0) = _
Format(d, "dd mmmm yyyy")
Compteur = Compteur + 1
End If
End If
Next Mois
Next Année
Application.ScreenUpdating = True
End Sub

Serge


"Daniel.C" a écrit dans le message de news: 4d3c185b$0$18777$
Bonjour Jacky,
Ta macro est plus courte mais elle fait un test par jour quand la macro initiale en fait un par mois.
Cordialement.
Daniel
Avatar
michdenis
Bonjour,

Si tu veux seulement calculer le nombre de vendredi 13 entre 2 dates

Debut : Nom de la cellule contenant la date du début
Fin : Nom de la cellule contenant la date de la fin

=SOMMEPROD(((JOUR(LIGNE(INDIRECT(Debut&":"&Fin))))*(((JOURSEM(LIGNE(INDIRECT(Debut&":"&Fin));1)=6)))))

OU

Validation matricielle :
=SOMME(SI(((JOUR(LIGNE(INDIRECT(Debut&":"&Fin))))*(((JOURSEM(LIGNE(INDIRECT(Debut&":"&Fin));1)=6)*1)))=1;1))


MichD
--------------------------------------------
1 2 3 4