NodeJS – socket – NTP

Excel – VBA Date

Le type de données VBA Date

Les variables de type Date sont stockées sous la forme de nombres à virgule flottante de 64 bits (8 octets) IEEE représentant des dates comprises entre le 1er janvier 100 et le 31 décembre 9999, et des heures allant de 0:00:00 à 23:59:59. Toute valeur de littéral date peut être attribuée à une variable de type Date. Les littéraux date doivent être délimités par le signe #, par exemple #January 1, 1993# ou #1 Jan 93#.

Les variables de type Date affichent les dates au format de date abrégé reconnu par votre ordinateur. Les heures s’affichent au format horaire (plage de 12 ou 24 heures) défini dans votre ordinateur.

Lorsque d’autres types de données numériques sont convertis en données de type Date, les valeurs situées à gauche du séparateur décimal représentent la date, tandis que celles situées à droite correspondent à l’heure. Minuit est représenté par 0 et midi par 0,5. Les nombres entiers négatifs représentent des dates antérieures au 30 décembre 1899.

  • Le codage interne de la date Excel est un nombre réel double dont l’unité est le jour et les fractions des heures, minutes, secondes, etc…
  • La valeur référence 2 correspond au 1er janvier 1900 (voir liens référencés 2 et 3 ci-dessous). Il est souvent mentionné que 1 est la valeur de référence mais cela n’est que partiellement exact et ne satisfait qu’Excel et d’anciens logiciels. Cela ne satisfait en aucun cas les interactions avec d’autres logiciels ou références de temps comme EPOCH et d’autres. Ce défaut d’Excel n’a jamais été corrigé et ne le sera probablement jamais (voir lien référencé 2).
  • Dans la pratique, le calendrier Excel sans erreur comprend les valeurs de date >=61 (1er mars 1901 00:00:00) et <2958466 (31 décembre 9999 24:00:00).

La fonction VBA Format(expr, format, …)

Renvoie une valeur de type Variant (String) contenant une expression formatée en fonction des instructions contenues dans l’expression de mise en forme.

Syntaxe

Format(expression[, format[, firstdayofweek[, firstweekofyear]]])

La syntaxe de la fonction Format comprend les éléments suivants :

Élément Description
expression Toute expression valide.
format Facultatif. Expression de mise en forme valide, nommée ou définie par l’utilisateur.
firstdayofweek Facultatif. Constante indiquant le premier jour de la semaine.
firstweekofyear Facultatif. Constante indiquant la première semaine de l’année.
  • La fonction est sans erreur, y compris depuis la valeur de référence 2 (Excel 2010 et probablement toutes les versions).
  • Le formatage de dates Excel le plus complet est aaaa-mm-jj hh:mm:ss.000.
  • Excel ne prend pas en compte les TimeZone, ni les heures d’été et d’hiver.
  • Il est toutefois intéressant de noter que la référence 2 pour la date du 1er janvier 1900 autorise le calcul relatif de TimeZone aux limites de +/- 24 heures (1 jour).
  • Les valeurs de dates >=0 et <1 peuvent être assimilées à des heures >=#00:00:00# et <#24:00:00#.
  • Le formatage pour afficher l’heure est hh:mm:ss ou hh:mm:ss.000 ou encore d’autres variantes.

La fonction VBA CDate(expr)

La fonction ci-dessous convertit une expression en un type de données spécifique.

Syntaxe

CDate(expression)

L’argument expression peut être n’importe quelle expression de chaîne ou expression numérique.

Types renvoyés

Le nom de la fonction détermine le type renvoyé, comme le montre le tableau suivant :

Fonction Type renvoyé Plage de valeurs de l’argument expression
CDate Date Toute expression de date valide.

Utilisez la fonction IsDate pour déterminer si la valeur de l’argument date peut être convertie en date ou en heure. La fonction CDate reconnaît les littéraux date et heure ainsi que certains nombres appartenant à la plage de dates autorisées. Lors de la conversion d’un nombre en date, la partie entière du nombre est convertie en date. Si le nombre comprend une partie décimale, celle-ci est convertie en heures, exprimées en partant de minuit.

La fonction CDate reconnaît les formats de date définis dans les paramètres régionaux de votre système. L’ordre des jours, mois et années risque de ne pouvoir être défini si les données sont fournies dans un format différent des paramètres de date reconnus. En outre, les formats de date complets précisant le jour de la semaine ne sont pas reconnus.

Pour des raisons de compatibilité avec les versions antérieures de Visual Basic, il existe une fonction CVDate, dont la syntaxe est identique à celle de la fonction Cdate. Cependant, la fonction CVDate renvoie une donnée de type Variant et de sous-type Date et non une véritable donnée de type Date. Dans la mesure où il existe désormais un type Date intrinsèque, la fonction CVDate n’est plus nécessaire. On obtient le même résultat en convertissant une expression en donnée de type Date, puis en l’affectant à une donnée de type Variant. Cette technique est cohérente avec la conversion des autres types intrinsèques dans le sous-type Variant équivalent.

  • La valeur expression peut satisfaire à de nombreux critères d’analyse (parsing).
  • La fonction CDate n’est exacte que pour les dates >=#1.3.1900# (1er mars 1900).

Liens externes

  1. Feuille Excel d’étude DateTime: DateTime_2017-08-02.xlsm
  2. Confusion Excel pour l’année 1900: Microsoft – Excel suppose à tort que l’année 1900 est une année bissextile
  3. Différences entre Excel pour Windows ou Macintosh: EPFL – Problème de dates dans Excel danger!
  4. Calcul des années bissextiles: Vikidia – Année bissextile
  5. Calcul des années bissextiles: Wikipédia – Année bissextile
  6. Calcul des années bissextiles: Wikipédia – Année séculaire bissextile

Addendum

2017-12-29: Les fonctions VBA CDate et Format convertissent correctement les dates <#1.3.1900#. En fait, c’est le formatage des dates affichées dans les cellules du tableur Excel qui est incorrect. La valeur 2 correspond correctement à la date #1.1.1900#.

Arduino – CPPM Library

Révision du 2015-08-06.

  • Ajout d’une trame de sortie CPPM.
  • Augmentation de la plage des temps Sync/Pulse/Frame.
  • Modification de la pulse de synchronisation sur le flanc descendant.

Cette librairie offre un interface pour décoder la trame d’un signal CPPM délivré par un récepteur R/C comme par exemple le modèle Orange R615X. Continuer la lecture

FT232R USB UART – Fake and Genuine

Lors d’un dernier atelier DIY que je dirigeais, un participant ne parvenait pas à vérifier la connexion de son Diduino sur un routeur fraîchement flashé avec OpenWrt. En dernière solution, je lui ai échangé son Diduino « tout neuf » contre un de mes « anciens » et cela a solutionné temporairement le problème. De retour en atelier, j’ai entrepris de comprendre ce qui se passait. Continuer la lecture

OpenWrt – Cross-Compilation

Je m’intéresse à écrire un programme de démonstration « Hello world ! » en langage C et à en vérifier l’exécution dans un routeur opérant sous OpenWrt. Les difficultés de l’exercice résident dans la compilation du programme et la liaison avec les librairies OpenWrt car ces opérations ne sont pas réalisables dans le routeur. Elles doivent être réalisées dans un autre ordinateur et le code généré doit être transféré dans le routeur. On parle de Cross-Compilation.
Dans l’article précédent OpenWrt – TP-Link TL-WR710N, j’avais documenté comment installer OpenWrt dans le routeur TP-Link TL-WR710N. Cet article s’appuie sur le même modèle. Continuer la lecture