Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

numero de semaine (VBA)

bigmousse

XLDnaute Occasionnel
Pourquoi lorsque je converti la fonction sous excel :

=ENT(MOD(ENT((B2-2)/7)+0,6;52+5/28))+1

en code VBA, ça ne fonctionne pas, la fonction Mod sous VBA prend t'il en compte toutes les décimales de n2????


Code:
n1 = (Int((Ma_Date - 2) / 7) + 0.6)
n2 = 52 + 5 / 28
n3 = n1 Mod n2
N_SEMAINE = Int(n3) + 1

Avez-vous des solutions???

Merci
Mousse
 
Dernière édition:

bigmousse

XLDnaute Occasionnel
Re : numero de semaine (VBA)

Merci, mais je viens de trouver une solution simple :
Mod(n,d) = n-d*Int(n/d)


Code:
n1 = (Int((Ma_Date - 2) / 7) + 0.6)
n2 = 52 + 5 / 28
n3 = n1 - n2 * Int(n1 / n2)
N_SEMAINE = Int(n3) + 1

merci
à+
 

pierrejean

XLDnaute Barbatruc
Re : numero de semaine (VBA)

Bonjour a tous

Un test en attendant ROGER
 

Pièces jointes

  • NOSEM.xls
    37.5 KB · Affichages: 119
  • NOSEM.xls
    37.5 KB · Affichages: 119
  • NOSEM.xls
    37.5 KB · Affichages: 121
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : numero de semaine (VBA)

Bonjour à tous
Vous me flattez, Messieurs…
À la demande générale :
Code:
[COLOR=DarkSlateGray][B]Function ISO([COLOR=Red]ByVal[/COLOR] r, Optional x As Byte = 0)
[COLOR=Sienna]' Transcription ISO d'une date grégorienne r.
'
'.__________________________________________________________________________________________.
'|           |                   |              |        |                                  |
'|     x     |       retour      |    format    |  type  |              exemple             |
'|___________|___________________|______________|________|__________________________________|
'|           |                   |              |        |                                  |
'| 0 ou omis | date ISO complète | "aaaa-WSS-J" | String |=ISO("3/3/2003")   | 2003-W10-1   |
'|     1     | semaine ISO       | "aaaa-WSS"   | String |=ISO("3/3/2003";1) | 2003-W10     |
'|     2     | semaine ISO       | SS           | Double |=ISO("3/3/2003";2) |           10 |
'|                                                                                          |
'|    Validité probable : lundi premier janvier 1900 - vendredi 31 décembre 9999 inclus.    |
'|__________________________________________________________________________________________|
'[/COLOR]
Application.Volatile
Dim a&, b&
  r = CDate(r)
  r = r - (r < 61)
  a = r - Weekday(r, vbMonday)
  b = DateSerial(Year(a + 4), 1, 1)
  ISO = IIf(x < 2, Year(b) & "-W", 0) + (Format((a - b + Weekday(b, vbMonday)) \ 7 + (Weekday(b, vbMonday) > 4) + 1, "00") & IIf(x < 1, "-" & Weekday(r, vbMonday), ""))
End Function[/B][/COLOR]
ROGER2327
#4567


Vendredi 20 As 138 (Saint Olibrius, augure, SQ)
2 Frimaire An CCXIX
2010-W47-1T14:24:55Z
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : numero de semaine (VBA)

Bonjour à tous
On n'est jamais assez attentif !
Il y avait encore une erreur dans la fonction que je donne plus haut : l'argument r de la fonction doit être passé par valeur.
(C'est corrigé.)

Avec mes excuses,
ROGER2327
#4614


Mercredi 25 As 138 (Saint Lewis Caroll, profesSainteur, SQ)
7 Frimaire An CCXIX
2010-W47-6T11:49:17Z
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…