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

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

Votre réponse

4 réponses

Meilleure réponse
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
60
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 86 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
60
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 86 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
Dernière intervention
21 juillet 2013
3
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
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.