Calcul du nombre de semaines

Blafi

XLDnaute Occasionnel
Bonjour à tous,

Pour faire suite à ma demande d'hier pour savoir comment calculer le nombre de semaines entre 2 dates et à la réponse qui m'a été faite par Lio(merci à lui et à Monique), j'ai suivi la solution donnée par Monique qui m'avait été proposée.

J'ai donc fais mes calculs avec sa formule et ça marche bien...

Par contre j'ai voulu faire les mêmes calculs en créant 2 macros fonctions : ma première macro fonction (NbSemaines) donne un résultat identique aux calculs de Monique.
Par contre, ma 2ème macro fonction (NbSemaines2) donne une différence de 2 semaines par rapport aux calculs de Monique...

J'ai sans doute fait une erreur dans la formule de ma macro fonction mais je n'arrive pas à la trouver...

Quelqu'un peut-il me dire ou se situe l'erreur ??

Je joins mon fichier dans lequel j'ai pris 2 dates très simples comme exemple.

Merci d'avance aux champions d'excel qui pourront m'éclairer...
A +


[file name=Nbsemaines.zip size=8071]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Nbsemaines.zip[/file]

Message édité par: blafi, à: 09/05/2006 23:55
 

Pièces jointes

  • Nbsemaines.zip
    7.9 KB · Affichages: 39

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir Blafi, bonsoir à toutes et à tous :)

Petite erreur due à la différence de valeur VRAI/True en formule/VBA.

Dans les feuilles de calculs, VRAI est interprété comme le chiffre 1 dans les calculs, mais sous VBA, la valeur TRUE est égale à -1 :huh:

Il te suffit donc de modifier ta formule ainsi :

NbSemaines2 = (JourF - ((JourF + 6) Mod 7) - (JourD - ((JourD + 5) Mod 7) - (Weekday(JourD) ‹› 2) * 7) + 1) / 7

ou, encore mieux car plus facile à déchiffrer :

NbSemaines2 = (JourF - ((JourF + 6) Mod 7) - (JourD - ((JourD + 5) Mod 7) + IIf(Weekday(JourD) ‹› 2, 7, 0) + 1) / 7

Il fallait le savoir... et maintenant, tu le sais :p

PS : les signes inférieurs et supérieurs sont à remplacer par leurs équivalents clavier pour le cas où tu ferais un Copier/Coller.

A+ ;)

Message édité par: Charly2, à: 10/05/2006 00:39
 
B

Blafi

Guest
Merci Charly2 pour ta réponse rapide...

Je connaissais la chose mais ça ne m'a pas interpellé car j'avais pas tout compris...

Maintenant je vais m'en rappeler ... Encore merci et à bientôt.
 
A

AV

Guest
Salut,

''..la formule est bonne ...''

Si l'on prend les 2 dates suivantes :
Début : dim 01/01/2006
Fin : sam 07/01/2006
Le nbre de semaines complètes (Lundi au Dimanche) est égal à 0
Es-tu sur que ta fonction renvoie ce résultat ?
Pour retranscrire très exactement une fonction de feuille en vba, il faut utiliser la fonction Evaluate : [file name=Nbsemaines_20060510081700.zip size=8095]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Nbsemaines_20060510081700.zip[/file]
 

Pièces jointes

  • Nbsemaines_20060510081700.zip
    7.9 KB · Affichages: 27

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali