Nombre de vendredi 13 de ma naissance jusqu'à aujourdhui

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
DanielCo
Le #23044811
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
Jacky
Le #23044971
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"
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



michel ou sam
Le #23045001
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
michel ou sam
Le #23045031
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
Frederic LE GUEN
Le #23045021
On Jan 23, 11:49 am, "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"
> 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
Jacky
Le #23045141
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
Daniel.C
Le #23045111
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" 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



Jacky
Le #23045261
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"
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"
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









Tatanka
Le #23045391
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"
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
michdenis
Le #23045421
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
--------------------------------------------
Publicité
Poster une réponse
Anonyme