Incompréhension VBA

UxorialRook8

XLDnaute Nouveau
Bonjour à tout le forum,

Je m'amusais à programmer un petit truc sur VBA quand je fus surpris pas une chose:

Objectif:Récupérer le moi en lettre actuel
Code: CurrentMonth = MonthName(Month(today))

Le problème est que la fonction renvoie "Décembre" quand on est au mois de Novembre... J'avoue une certaine imcompréhension du pourquoi... Mon excel qui est bizarre ? Faut il faire un réglage spécifique?

Pour corriger ce bug j'ai changé le code en CurrentMonth = MonthName(Month(today) - 1) mais bon j'aimerai bien savoir si un de vous peut m'expliquer cette "bizarrerie".

Merci d'avance

Cordialement

UxorialRook
 

job75

XLDnaute Barbatruc
Re : Incompréhension VBA

Bonsoir à tous,

Pour comprendre ce qui se passe avec ce fameux today.

Non déclarée la variable today prend par défaut le type Variant.

Elle s'initialise donc par la valeur Empty.

La fonction Month convertit Empty en 0.

Et dans le système de dates VBA, 0 est le numéro de série du 30/12/1899.

Pour vérifier exécutez :

Code:
Sub test()
'numéros de série des dates
MsgBox CDbl(CDate("30/12/1899"))
MsgBox CDbl(CDate("31/12/1899"))
MsgBox CDbl(CDate("01/01/1900"))
End Sub
Voilà donc pourquoi Month(today) renvoie 12.

A+
 

Modeste geedee

XLDnaute Barbatruc
Re : Incompréhension VBA

Bonsour®
chez moi "today" n'est pas une fonction vba valide.
chez moi non plus ...

mais pourtant c'est bien une fonction de feuille de calculs...:rolleyes:
ActiveCell.FormulaR1C1 = "=TEXT(TODAY(),""jjjj j mmmm aaaa"")"
ActiveCell.Offset(1, 0) = Evaluate("=TODAY()")

et cependant elle ne peut etre appelée non plus par :
[A1]=Application.WorksheetFunction.today()
:confused:

:cool: contournement :
Dim Today
Today = Int(Now)
MsgBox Today

Excel est toujours surprenant...:rolleyes:
 
Dernière édition:

UxorialRook8

XLDnaute Nouveau
Re : Incompréhension VBA

Merci beaucoup pour vos retours, ça fait plaisir un forum dynamique qui donne un écho rapide et efficace sur les questions posés ;)
je vous souhaites à tous une bonne journée :)

Ps: D'accord avec toi Modeste geedee excel est toujours surprenant
 

job75

XLDnaute Barbatruc
Re : Incompréhension VBA

Salut Modeste geedee,

Excel est toujours surprenant...:rolleyes:

Mais en général très logique.

Il serait en effet totalement inutile d'introduire Application.ToDay en VBA puisque la fonction Date y a été créée.

Voir dans l'aide VBA la Liste des fonctions de feuille de calcul disponibles dans Visual Basic.

Notez qu'il existe dans VBA :

- Application.Replace (REMPLACER) et Replace

- Application.Trim (SUPPRESPACE) et Trim

parce que ces fonctions ont des fonctionnalités différentes.

A+
 

Statistiques des forums

Discussions
312 493
Messages
2 088 959
Membres
103 990
dernier inscrit
lamiadebz