Formule générée par macro

Emeric

XLDnaute Nouveau
Bonjour à tous :) ,
Je suis débutant en VBA et actuellement en train de programmer une macro qui permet de classer des données en fonction de la date.

Initialement la date est au format "JJ/MM/AAAA" , ma macro permet de copier ces dates dans mon nouveau classeur, cependant, je dois également les traduire en numéro de semaine.
J'ai trouvé sur le net une formule qui permet d'obtenir le numéro de semaine à partir d'une date au format "JJ/MM/AAAA" , cette formule est la suivante : = ENT(MOD(ENT((C1-2)/7)+0,6;52+5/28))+1

J'aimerais que cette formule s'applique à chaque ligne sans avoir à l'étirer sur la colonne après éxecution de la macro. J'ai essayé de procéder de la plus simple des manières en créant une nouvelle macro, puis en modifiant l'enregistrement, mais impossible d'y arriver :mad:

Quelle est la syntaxe que je dois utiliser?

Sachant que les numéros de semaine sont classés dans la colonne F, et que les dates au format "JJ/MM/AAAA" sont classées dans la colonne C.

Merci à ceux qui pourront me répondre.
Si mon problème est mal posé, n'hésitez pas à me demander plus de renseignements.
Cordialement

EC
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Formule générée par macro

Bonjour Emeric et bienvenu, bonjour le forum,

Peut-être comme ça, en rajoutant ces quelques lignes en fin de ta macro (sauf la déclaration de variable Dim qu'il est préférable mettre au début...) :
Code:
Dim dl As Integer
dl = Cells(Application.Rows.Count, 3).End(xlUp).Row
Range("F1").FormulaR1C1 = "= INT(MOD(INT((RC[-3]-2)/7)+0.6,52+5/28))+1"
Range("F1").AutoFill Destination:=Range("F1:F" & dl), Type:=xlFillDefault
 

Emeric

XLDnaute Nouveau
Re : Formule générée par macro

Bonjour TempusFugit et merci pour ta solution !

Désolé de vous solliciter encore un peu mais j'ai à nouveau un petit soucis, je souhaite également traduire le mois en toutes lettres, pour cela j'utilise la formule suivante : =TEXTE("1/"&MOIS(C2);"mmmm")"

Je procède de la même façon que pour la date :
Range("G2:G" & [C65536].End(xlUp).Row).FormulaR1C1 = " =TEXTE("1/"&MOIS(C2);"mmmm")"

Et là, j'ai un message d'erreur qui me dit "Erreur de compilation Attendu : fin d'instruction" , c'est peut être dû aux guillemets dans la formule?

Que dois-je faire?
Merci d'avance !
 

Emeric

XLDnaute Nouveau
Re : Formule générée par macro

Yes ça marche, aussi simple que ça!
Encore merci, on peut compter sur vous!

Juste une petite question pour ma culture perso,
Que signifie la syntaxe RC[-3] , RC[-4]?
Si la formule dépend de plusieurs cellules (colonne A et B et C), quelle syntaxe faut-il utiliser?
 

TempusFugit

XLDnaute Impliqué
Re : Formule générée par macro

R=Row ce qui veut dire ligne
C=Column ce qui veut colonne

RC[-4] veut donc dire colonne -4 donc colonne C si la formule est en colonne G
ce qui est le cas ici.

Sinon par commodité tu peux utiliser cette autre syntaxe:
Code:
Range("G2:G" & [C65536].End(xlUp).Row).FormulaLocal = "=TEXTE(C2;""mmmm"")"
 
Dernière édition:

Statistiques des forums

Discussions
312 932
Messages
2 093 725
Membres
105 798
dernier inscrit
Sly67