Conversion d'une formule en code VBA [Résolu]

Messages postés
44
Date d'inscription
vendredi 25 janvier 2008
Statut
Membre
Dernière intervention
17 mai 2012
- - Dernière réponse : 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.
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
3
Merci
à 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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
172
Date d'inscription
jeudi 8 décembre 2011
Statut
Membre
Dernière intervention
21 juillet 2013
2
0
Merci
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 !
Commenter la réponse de MarcPL
Messages postés
44
Date d'inscription
vendredi 25 janvier 2008
Statut
Membre
Dernière intervention
17 mai 2012
0
Merci
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.
Commenter la réponse de cs_antom