Conversion d'une formule en code VBA

Résolu
cs_antom Messages postés 44 Date d'inscription vendredi 25 janvier 2008 Statut Membre Dernière intervention 17 mai 2012 - 22 févr. 2012 à 12:33
cs_antom Messages postés 44 Date d'inscription vendredi 25 janvier 2008 Statut Membre Dernière intervention 17 mai 2012 - 22 févr. 2012 à 13:26
Salut à tous,

Je ne sais pas si je suis dans le bon forum, si non, au temps pour moi.

Est-ce que quelqu'un peut m'aider à retranscrire cette formule en VBA :

=DATE(ANNEE(AUJOURDHUI());1;1)-JOURSEM(DATE(ANNEE(AUJOURDHUI());1;1))+1

Si possible en évitant de faire :

Cells(2, 2).Formula = "=DATE(ANNEE(AUJOURDHUI());1;1)-JOURSEM(DATE(ANNEE(AUJOURDHUI());1;1))+1"

Normalement, ça devrait renvoyer 01.01.2012 avec le format date.

J'ai essayé pleins de combinaisons mais sans succès.

Si quelqu'un a l'amabilité de m'aider, je lui en serais reconnaissant.

Dans l'attente, je vous souhaite un bon appetit et vous remercie par avance !

mOOm.

4 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 févr. 2012 à 13:05
JOURSEM te donne le numéro de jour dans la semaine :

1 - Dimanche
2 - Lundi
3 - Mardi
4 - Mercredi
5 - Jeudi
6 - Vendredi
7 - Samedi

en gros, tu demande de partir du premier jour de l'année que nous noterons A
Un dimanche, en 2012
A -JourSem +1

01/01/2012 - 1 + 1 => 01/01/2012
01/01/2011 - 7 + 1 => 26/12/2011

a supposer que cette formule soit correcte, tu peux faire, en VBA:
A = dateserial(Year(Date), 1,1)
A = A - Weekday(A) +1
Cells(2, 2) = FormatDateTime(A, vbShortDate)




Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 févr. 2012 à 13:09
à noter que ce code :
Cells(2, 2).Formula = "=DATE(ANNEE(AUJOURDHUI());1;1)-JOURSEM(DATE(ANNEE(AUJOURDHUI());1;1))+1"


est à proscrire !

utiliser FormulaLocal. En effet, le nom de tes fonctions est traduit, le séparateur est le ';', défini dans tes regional settings (donc valable sur TON poste)

ou alors, utiliser la version traduite :
Cells(2, 2).Formula = "=DATE(YEAR(TODAY()),1,1)-WEEKDAY(DATE(YEAR(TODAY()),1,1))+1"


qui fonctionnera sur tous les postes


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
22 févr. 2012 à 12:48
Salut !

Déjà rien que =DATE(ANNEE(AUJOURDHUI());1;1) renvoie aussi 01/01/2012 !
Le mieux est d'expliquer littéralement (sans formule) ce dont tu as besoin ...

Sinon dans le fenêtre d'exécution de l'environnement VBA valide ? Cells(2, 2).Formula pour voir la formule en VBA ...

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
cs_antom Messages postés 44 Date d'inscription vendredi 25 janvier 2008 Statut Membre Dernière intervention 17 mai 2012
22 févr. 2012 à 13:26
Re,

D'abord merci pour vos réponses.

Marc, désolé il est vrai que peut-être n'ai-je pas été assez clair.
En fait, je voulais la date d'un jour x de telle semaine, dans la formule, j'avais oublié "7*numeroDeSemaine..."

Pourtant Renfield, ton bout de code, c'est exactement ce que je voulais... Chapeau bas !

Merci encore à vous deux !

Je ne sais pas où cliquer pour dire que c'est résolu, mais en tous cas, ça l'est !

mOOm.
0
Rejoignez-nous