Adapter une formule dans une macro

Lio59

XLDnaute Nouveau
Bonjour,

Je souhaite attribuer à une variable la formule NUM.SEMAINE (formule permettant de calculer le numéro de semaine en norme européenne).
L'enregistrement d'une macro me donne ceci : formule du site

N° de semaine norme européenne | www.excelabo.net

ActiveCell.FormulaR1C1 = _
"=INT((RC[-1]-(DATE(YEAR(RC[-1]-WEEKDAY(RC[-1]-1)+4),1,3)-WEEKDAY(DATE(YEAR(RC[-1]-WEEKDAY(RC[-1]-1)+4),1,3)))+5)/7)"

Quelle serait la syntaxe pour attribuer cette formule à une variable
dim test as integer
test = ActiveCell.FormulaR1C1 = _
"INT((A47-(DATE(YEAR(A47-WEEKDAY(A47-1)+4),1,3)-WEEKDAY(DATE(YEAR(A47-WEEKDAY(A47-1)+4),1,3)))+5)/7) 'cela ne fonctionne pas...

Auriez-vous une idée, je sèche depuis longtemps...

Merci
 

Lio59

XLDnaute Nouveau
Re : Adapter une formule dans une macro

Merci
Mais je ne veux pas afficher le résultat dans une cellule mais l'attribué à une variable qui sera additionnée avec autre chose. Seul le résultat final devra être affiché
Merci
 

Cousinhub

XLDnaute Barbatruc
Re : Adapter une formule dans une macro

Re-,

je ré-explique....

Tu as une date dans une cellule quelconque....(Admettons, la cellule A1)

Code:
test = DatePart("ww", [A1], 2, 2)

te donne le numéro de la semaine de cette date...

Tu n'as aucune date, nulle part, mais tu veux calculer le numéro de la semaine d'aujourd'hui...

Code:
test2 = DatePart("ww", Date, 2, 2)

te donne le numéro de semaine de ce jour....

Et tes 2 données, "test" et "test2" sont des variables type Byte....

Au plaisir
 

Lio59

XLDnaute Nouveau
Re : Adapter une formule dans une macro

Merci bhbh... désolé de n'avoir pas cru en cette formule... oui, il semble qu'elle réponde à ce que je cherche.... hé bien j'ai passé beaucoup de temps à résoudre ce soucis! Cependant une question à propos de cette syntaxe.

Pourquoi ce code, cette fonction répond elle au système de numéro de semaine européen ?
Alors que la formule NO.SEMAINE répond à la norme US. Pour ne pas utiliser cette dernière il faut télécharger un fichier zip intitulé morefunc qui contient la formule NUM.SEMAINE (norme EURO) ou utiliser la très longue formule écrite dans mon premier message....

En tous les cas, j'ai effectué quelques tests de dates, cela semble être bon!

Encore merci!
 

Cousinhub

XLDnaute Barbatruc
Re : Adapter une formule dans une macro

RE,

j'ai fait un test entre le 01/01/1901 et le 01/01/2500....

et ta formule (juste), et la mienne (???), ben....

elles donnent exactement le même résultat...

Ce qui importe, c'est le dernier 2...

Regarde ce que dit l'aide, et notamment, ce qui est en rouge...

DatePart, fonction


Renvoie une valeur de type Variant (Integer) contenant l'élément spécifié d'une date donnée.

Syntaxe

DatePart(interval, date[,firstdayofweek, firstweekofyear]])

La syntaxe de la fonction DatePart comprend les arguments nommés suivants :

Élément Description
interval Expression de chaîne correspondant à l'intervalle de temps à renvoyer.
date Valeur Variant (Date) à évaluer.
firstdayofweek Facultatif. Constante précisant le premier jour de la semaine. Si aucune valeur n'est précisée, la valeur par défaut est dimanche.
firstweekofyear Facultatif. Constante précisant la première semaine de l'année. Si aucune valeur n'est précisée, la première semaine est par défaut celle du 1er janvier.



Valeurs

L'argument interval peut prendre les valeurs suivantes :

Valeur Description
yyyy Année
q Trimestre
m Mois
y Jour de l'année
d Jour
w Jour de la semaine
ww Semaine
h Heure
n Minute
s Seconde



L'argument firstdayofweek peut prendre les valeurs suivantes :

Constante Valeur Description
vbUseSystem 0 Utilise les paramètres de l'API NLS.
vbSunday 1 Dimanche (valeur par défaut)
vbMonday 2 Lundi
vbTuesday 3 Mardi
vbWednesday 4 Mercredi
vbThursday 5 Jeudi
vbFriday 6 Vendredi
vbSaturday 7 Samedi



L'argument firtweekofyear peut prendre les valeurs suivantes :

Constante Valeur Description
vbUseSystem 0 Utiliser l'argument NLS API.
vbFirstJan1 1 Commencer par la semaine du 1er janvier (valeur par défaut).
vbFirstFourDays 2 Commencer par la première semaine comportant au moins quatre jours dans l'année nouvelle.
vbFirstFullWeek 3 Commencer par la première semaine complète de l'année.



Remarques

Utilisez la fonction DatePart pour évaluer une date et renvoyer un intervalle de temps spécifique. Par exemple, utilisez la fonction DatePart pour calculer le jour de la semaine ou l'heure en cours.

L'argument firstdayofweek a une incidence sur les calculs qui utilisent les symboles d'intervalles "w" et "ww".

Si date est un littéral date, l'année précisée devient un élément permanent de cette date. Toutefois, si date apparaît entre guillemets (" "), et si vous n'indiquez pas l'année, l'année en cours est insérée automatiquement chaque fois que l'expression date est évaluée. Vous pouvez ainsi écrire du code qui sera réutilisable au fil des années.

Note Pour date, si la valeur de la propriété Calendar est Grégorien, la date fournie par l'utilisateur doit être du même type. S'il s'agit d'un calendrier Hijri, la date doit prendre la valeur Hijri.

La partie de la date renvoyée est exprimée en unités périodiques du calendrier arabe actuel. Si, par exemple, le calendrier actuel est du type Hijri et que la partie de la date à renvoyer est l'année, la valeur obtenue correspond à une année Hijri.
 

Lio59

XLDnaute Nouveau
Re : Adapter une formule dans une macro (résolu)

Merci pour ta réponse. Je ne pensais pas que l'explication des semaines pouvait se trouver dans l'aide.... là j'ai honte.... merci beaucoup pour votre simplicité de réponse et vos explications!
 

Discussions similaires

Statistiques des forums

Discussions
312 429
Messages
2 088 350
Membres
103 822
dernier inscrit
kader55