Médiaforma

posts

Fonctions de base dédiées aux dates

Il existe un grand nombre de fonctions dédiées à la manipulation des dates en VBA. Tant mieux, car sans elles, vous devriez écrire beaucoup plus de lignes de code lorsque vous manipulez des dates et heures…

Fonction Valeur retournée par la fonction
Date Variant (Date) qui contient la date système
Time Variant (Date) qui contient l’heure système
Now Variant (Date) qui contient la date et l’heure système
Day Variant (Integer) qui représente le jour du mois de la date passée en argument
Month Variant (Integer) qui représente le mois de la date passée en argument
MonthName Variant (String) qui représente le nom du mois passé en argument
Year Variant (Integer) qui représente l’année de la date passée en argument
Weekday Variant (Integer) qui représente le jour de la semaine
WeekdayName Variant (String) qui représente le nom du jour de la semaine passé en argument
Hour Variant (Integer) qui représente les heures de la valeur passée en argument
Minute Variant (Integer) qui représente les minutes de la valeur passée en argument
Second Variant (Integer) qui représente les secondes de la valeur passée en argument
Timer Single qui représente le nombre de secondes écoulées depuis minuit

Voici quelques exemples d’utilisation de ces fonctions :

Debug.Print Date

Debug.Print Time

Debug.Print Now

Debug.Print Day(Date)

Debug.Print Month(Date)

Debug.Print MonthName(Month(Date))

Debug.Print Year(Date)

Debug.Print Weekday(Date)

Debug.Print WeekdayName(Weekday(Date) - 1)

Debug.Print Hour(Now)

Debug.Print Minute(Now)

Debug.Print Second(Now)

Debug.Print Timer

Et voici les résultats affichés dans la fenêtre Exécution :

30/10/2017

17:19:41

30/10/2017 17:19:41

 30

 10

octobre

 2017

 2

lundi

 17

 19

 41

 62381,12

Les fonctions IsDate() et CDate()

La fonction IsDate(d) retourne la valeur :

  • Vrai si l’argument est une date ;
  • Faux si l’argument n’est pas une date.

La fonction CDate() transforme l’argument chaîne qui lui est passé en un date

Exemples :

Debug.Print "IsDate(""12/8/1960"") : " & IsDate("12/08/1960")

Debug.Print "IsDate(""122/08/1960"") : " & IsDate("122/08/1960")

Dim d As Variant

Debug.Print "d est défini en tant que variant"

Debug.Print "IsDate(d) : " & IsDate(d)

d = CDate("22/12/2018")

Debug.Print "Après cette instruction :"

Debug.Print "  d = CDate(""22/12/2018"")"

Debug.Print "IsDate(d) vaut " & IsDate(d)

Voici le résultat de ce code :

IsDate("12/8/1960") : Vrai

IsDate("122/08/1960") : Faux

d est défini en tant que variant

IsDate(d) : Faux

Après cette instruction :

d = CDate("22/12/2018")

IsDate(d) vaut Vrai

Les fonctions de date qui travaillent sur des intervalles

Plusieurs fonctions vous permettent de travailler simplement sur des intervalles. Par exemple pour ajouter 25 jours à une date ou encore pour soustraire 3 mois à une date. Les intervalles sont codés sous la forme de String. Les différentes valeurs possibles sont résumées dans ce tableau :

Intervalle Effet
yyyy Année (entre 100 et 9999)
y Jour de l’année (entre 1 et 365)
m Mois (entre 1 et 12)
q Trimestre (entre 1 et 4)
ww Semaine (entre 1 et 53)
w Jour (entre 1 et 7)
d Jour (entre 1 et 31)
h Heure (entre 0 et 23)
n Minute (entre 0 et 59)
s Seconde (entre 0 et 59)

 

La fonction DateAdd()

La fonction DateAdd() retourne un Variant (Date) qui contenant une date à laquelle un intervalle de temps spécifié a été ajouté.

DateAdd(intervalle, nombre, date)

Où :

  • intervalle est un des codes du tableau précédent ;
  • nombre est le nombre d’intervalles à ajouter à la date de référence, spécifiée dans le troisième argument.

Exemples :

Debug.Print "Date système : " & Date

Debug.Print "Dans 3 mois : " & DateAdd("m", 3, Date)

Debug.Print "Il y a 3 mois : " & DateAdd("m", -3, Date)

Debug.Print "Dans 5 jours : " & DateAdd("y", 5, Date)

Debug.Print "Il y a 1 trimestre : " & DateAdd("q", -1, Date)

Debug.Print "Heure système : " & Time

Debug.Print "Il y a 2h20 : " & DateAdd("n", -140, Time)

Debug.Print "Dans 2 ans : " & DateAdd("yyyy", 2, Now)

Voici le résultat :

Date système : 30/10/2017

Dans 3 mois : 30/01/2018

Il y a 3 mois : 30/07/2017

Dans 5 jours : 04/11/2017

Il y a 1 trimestre : 30/07/2017

Heure système : 17:51:39

Il y a 2h20 : 15:31:39

Dans 2 ans : 30/10/2019 17:51:39

La fonction DateDiff()

La fonction DateDiff() retourne un Variant (Long) qui indique le nombre d’intervalles de temps entre deux dates données. Voici sa syntaxe :

DateDiff(intervalle, date1, date2)

intervalle est l’intervalle de temps (voir le tableau au début de la section « Les fonctions de date qui travaillent sur des intervalles ») qui sépare les dates date1 et date2.

Exemples :

Dim d1, d2 As Variant

d1 = "20/12/2016"

d2 = "15/06/2020"

Debug.Print "Les deux dates à comparer : " & d1 & " et " & d2

Debug.Print "Nb de mois entre ces deux dates : " & DateDiff("m", d1, d2)

Debug.Print "Nb de semaines entre ces deux dates : " & DateDiff("ww", d1, d2)

Debug.Print "Nb de jours entre ces deux dates : " & DateDiff("w", d1, d2)

Dim h1, h2 As Variant

h1 = "5:10:12"

h2 = "17:30:45"

Debug.Print "Les deux heures à comparer h1 et h2 : " & h1 & " et " & h2

Debug.Print "Nb d'heures entre h1 et h2 : " & DateDiff("h", h1, h2)

Debug.Print "Nb de minutes entre h1 et h2 : " & DateDiff("n", h1, h2)

Debug.Print "Nb de secondes entre h1 et h2 : " & DateDiff("s", h1, h2)

Voici le résultat de ce code :

Les deux dates à comparer : 20/12/2016 et 15/06/2020

Nb de mois entre ces deux dates : 42

Nb de semaines entre ces deux dates : 182

Nb de jours entre ces deux dates : 181

Les deux heures à comparer h1 et h2 : 5:10:12 et 17:30:45

Nb d'heures entre h1 et h2 : 12

Nb de minutes entre h1 et h2 : 740

Nb de secondes entre h1 et h2 : 44433

La fonction DatePart()

La fonction DatePart() retourne un Variant (Integer) qui représente l’année, le trimestre, le mois, la semaine ou le jour d’une date. Voici sa syntaxe :

DatePart(partie, date)

partie représente l’élément à extraire de la date spécifiée en deuxième argument.

Exemples :

Debug.Print "Date système : " & Date

Debug.Print "Semaine de la date système : " & DatePart("ww", Date)

Debug.Print "Trimestre de la date système : " & DatePart("q", Date)

Debug.Print "Jour de la semaine de la date système : " & DatePart("w", Date) – 1

Voici le résultat de ce code :

Date système : 30/10/2017

Semaine de la date système : 44

Trimestre de la date système : 4

Jour de la semaine de la date système : 1

Les fonctions DateSerial() et TimeSerial()

La fonction DateSerial() retourne un Variant (Date) qui correspond à l’année, le mois et le jour passés en argument. Voici sa syntaxe :

DateSerial(annee, mois, jour)

annee, mois et jour sont (respectivement) l’année, le mois et le jour de la date à reconstituer.

La fonction DateSerial() retourne un Variant (Date) qui correspond à l’année, le mois et le jour passés en argument. Voici sa syntaxe :

DateSerial(annee, mois, jour)

annee, mois et jour sont (respectivement) l’année, le mois et le jour de la date à reconstituer.

La fonction TimeSerial() retourne un Variant (Date) qui correspond aux heures, minutes et secondes passées en argument. Voici sa syntaxe :

TimeSerial(heures, minutes, secondes)

heures, minutes et secondes sont (respectivement) les heures, les minutes et les secondes de l’heure à reconstituer.

Exemples :

Debug.Print DateSerial(2018, 10, 25)

Debug.Print TimeSerial(22, 15, 12)

Voici le résultat de ce code :

25/10/2018

22:15:12

DateValue          Renvoie une valeur de type Variant (Date).

TimeValue          Renvoie une valeur de type Variant (Date) contenant une heure.

Mise en forme

La fonction Format() permet de mettre en forme des dates. Elle retourne une valeur de type String. Voici sa syntaxe :

Format(expression, format)

expression est l’expression à mettre en forme et format est le format de mise en forme à appliquer à l’expression.

Voici quelques exemples :

Dim d As Date

d = Date

MsgBox Format(d, "dddd dd/mm/yyyy")

MsgBox Format(d, "dd mmmm yyyy")

Voici le résultat de l’exécution :

 <  > <  

Pour aller plus loin avec la fonction Format(), je vous suggère de consulter la page dédiée à cette fonction sur MSDN.

Avec Excel 2019, il est très simple d’insérer des équations dans une feuille de calcul :

  1. Sélectionnez l’onglet Insertion dans le ruban.
  2. Cliquez sur la flèche sous l’icône Equation dans le groupe Symboles.
  3. Choisissez l’une des équations proposées.

Si l’équation n’est pas disponible dans la galerie, vous allez devoir la saisir manuellement. Dans l’onglet Insertion du ruban, cliquez sur l’icône Equation.

Une zone de saisie s’affiche dans le document et l’onglet Outils d’équation/Conception est ajouté au ruban. Vous l’utiliserez pour définir votre équation :

Une dernière possibilité : vous pouvez l’écrire à la main, comme vous le feriez sur une feuille de papier. Cliquez sur la flèche sous l’icône Equation dans le groupe Symboles, puis cliquez sur Equation manuscrite. Il ne vous reste plus qu’à dessiner l’équation dans la zone dédiée. Cette technique est bien plus efficace si vous utilisez un stylet qu’une souris.

Les opérations de couper/copier/coller sont universellement utilisées dans le système d’exploitation Windows ainsi que dans les applications qui fonctionnent sous Windows. En ce qui concerne PowerPoint 2019, elles vous permettront de déplacer et/ou de dupliquer les éléments (textes, images et autres objets) affichés dans une présentation.

Pour copier un ou plusieurs objets, commencez par les sélectionner, cliquez sur l’onglet Accueil du ruban, puis sur l’icône Copier dans le groupe Presse-papiers (vous pouvez également utiliser le raccourci clavier Contrôle + C pour parvenir au même résultat). Les objets sont copiés dans le presse-papiers et peuvent être collés une ou plusieurs fois dans la présentation en cours d’édition ou dans tout autre présentation.

Pour coller le contenu du presse-papiers dans la diapositive courante, sélectionnez l’onglet Accueil, puis cliquez sur l’icône Coller dans le groupe Presse-papiers. Vous pouvez également utiliser le raccourci clavier Contrôle + V pour parvenir au même résultat.

Pour couper un ou plusieurs objets, commencez par les sélectionner, cliquez sur l’onglet Accueil du ruban puis sur l’icône Couper dans le groupe Presse-papiers (vous pouvez également utiliser le raccourci clavier Contrôle + X pour parvenir au même résultat). Les objets sélectionnés disparaissent. Ils sont placés dans le presse-papiers et peuvent être collés une ou plusieurs fois dans la présentation en cours d’édition ou dans toute autre présentation.

Cette rubrique n’est pas à proprement parler liée à PhotoFiltre, mais elle va permettre d’ajouter des polices de caractères à Windows, et donc de les utiliser dans PhotoFiltre.

Rendez-vous sur le site http://www.dafont.com/fr/ et faites votre choix en sélectionnant une des nombreuses catégories de polices proposées.

Photofiltre - Ajouter des polices à Windows 1

Ici par exemple, nous allons installer la police Groovy Alba. Un clic sur Groovy et la police Alba est accessible. Nous cliquons sur Alba, sur Télécharger puis sur Ouvrir. Le fichier ZIP téléchargé contient trois polices TrueType nommées ALBA, ALBAM et ALBAS. Pour savoir quelles sont les différences entre ces trois polices, il suffit de double-cliquer dessus.

  • ALBA est la police par défaut
  • ALBAM est la police ALBA avec une graisse élevée
  • ALBAS est la police ALBA avec un ombrage.

Nous allons installer la police ALBAM. Pour cela, nous double-cliquons sur ALBAM, puis nous cliquons sur Installer. Quelques instants plus tard, la police ALBAM est disponible dans toutes les applications Windows, et donc dans PhotoFiltre. Si PhotoFiltre était ouvert au moment de l’installation de la police, fermez-le puis rouvrez-le.

Pour vous assurer que la nouvelle police est bien disponible dans PhotoFiltre, définissez une nouvelle image, cliquez sur l’icône Texte et cherchez la police ALBAM dans la liste déroulante Police. Comme vous pouvez le voir, cette police est bien disponible et elle peut être utilisée dans PhotoFiltre :

Photofiltre - Ajouter des polices à Windows 2

A vous de trouver les polices qui correspondent aux effets que vous recherchez.

Cette section va vous montrer comment calculer tous les jours fériés d’une année. Voici les formules utilisées, en supposant que l’année concernée est définie dans la cellule B1 :

Jour férié Formule
Jour de l’An =DATE(B1;1;1)
Pâques =ARRONDI(DATE(B1;4;MOD(234-11*MOD(B1;19);30))/7;0)*7-6
Lundi de Pâques =B3+1
Fête du travail =DATE(B1;5;1)
Victoire 1945 =DATE(B1;5;8)
Ascension =B3+39
Pentecôte =B3+49
Lundi de Pentecôte =B3+50
Fête Nationale =DATE(B1;7;14)
Assomption =DATE(B1;8;15)
Toussaint =DATE(B1;11;1)
Armistice 1918 =DATE(B1;11;11)
Noël =DATE(B1;12;25)

 

Le jour de l’An, la fête du travail, la Victoire de 1945, la Fête Nationale, l’Assomption, la Toussaint, l’Armistice de 1918 et le jour de Noël sont faciles à calculer car il s’agit de jours fixes dans l’année. Par exemple, la fête nationale a lieu le 14 Juillet, ou encore, Noël a lieu le 25 Décembre. La fonction DATE() est dont toute indiquée pour calculer les dates correspondantes.

La seule date difficile à calculer est Pâques. Le Lundi de Pâques, l’Ascension, Pentecôte et le Lundi de Pentecôte sont calculés à partir du jour de Pâques.

Pour faciliter l’exécution d’une macro, rien de tel qu’un raccourci clavier.

Sélectionnez l’onglet Affichage dans le ruban. Cliquez sur l’icône Macros dans le groupe Macros. Sélectionnez la macro à laquelle vous souhaitez attribuer un raccourci, puis cliquez sur Options.

Entrez une lettre dans la zone Touche de raccourci. Vous pouvez utiliser un raccourci du type Contrôle + lettre ou Contrôle + Maj + lettre. Dans le premier cas, il suffit d’appuyer sur une touche du clavier. Dans le deuxième, maintenez la touche Maj enfoncée pendant que vous appuyez sur une touche du clavier.

Cliquez sur OK pour fermer la boîte de dialogue Options de macro, puis fermez la boîte de dialogue Macro en cliquant sur sa case de fermeture. La macro peut maintenant être exécutée en utilisant le nouveau raccourci clavier.

Cet article regroupe les opérateurs et les fonctions dédiés à la manipulation des nombres en VBA Excel.

Opérateurs mathématiques

Les opérateurs mathématiques sont très classiques. Notez cependant l’opérateur de division entière (\) et le module (Mod) qui ne se retrouvent pas dans tous les langages :

Opérateur Signification
^ Mise à la puissance
+ Addition
Soustraction
* Multiplication
/ Division
\ Division entière
Mod Modulo

 

Exemples :

Dim n1, n2 As Single

n1 = 13.34

n2 = 3.46

Debug.Print "n1 = " & n1

Debug.Print "n2 = " & n2

Debug.Print "n1^3 = " & n1 ^ 3

Debug.Print "n1/n2 = " & n1 / n2

Debug.Print "n1\n2 = " & n1 \ n2

Debug.Print "n1 Mod 2 = " & n1 Mod n2

Voici le résultat de ce code :

n1 = 13,34

n2 = 3,46

n1^3 = 2373,927704

n1/n2 = 3,85549128697245

n1\n2 = 4

n1 Mod 2 = 1

Opérateurs de comparaison

Les opérateurs de comparaison sont très classiques :

Opérateur Signification
= Egale à
Inférieur à
<= Inférieur ou égal à
Supérieur à
>= Supérieur ou égal à
<>  Différent de

Opérateurs logiques

Les opérateurs logiques sont également très classiques :

Opérateur Signification
And Et logique
Or Ou logique
Not Non logique

Fonctions mathématiques

Le langage VBA contient quelques fonctions mathématiques dédiées à la manipulation des nombres. Elles sont résumées dans le tableau suivant :

Fonction Valeur retournée
Abs() Valeur absolue de l’argument
Atn() Double qui représente l’arc tangente de l’argument
Cos() Double qui représente le cosinus de l’angle passé en argument
Exp() Double qui représente la base de logarithmes népériens mise à la puissance de l’argument
Fix() Partie entière de l’argument
Hex() String qui représente la valeur hexadécimale de l’argument
Int() Partie entière de l’argument
Log() Double qui indique le logarithme népérien de l’argument
Oct() Variant (String) qui représente la valeur octale de l’argument
Rnd() Single qui représente un nombre aléatoire
Round() Argument arrondi à un nombre spécifié de décimales
Sgn() Variant (Integer) qui indique le signe de l’argument
Sin() Double qui représente le sinus de l’angle passé en argument
Sqr() Double qui représente la racine carrée du nombre passé en argument
Tan() Double qui représente la tangente de l’angle passé en argument
Val() Evaluation numérique de l’argument chaîne

Fonctions de conversion

Et pour terminer, voici quelques fonctions de conversion :

Fonction Valeur retournée Exemple
CBool() Evalue l’argument et retourne Vrai ou Faux en conséquence CBool(1<2) retourne Vrai
CByte() Retourne la conversion en Byte (entre 0 et 255) de l’argument CByte(2.35) retourne le Byte 2
CCur() Retourne la conversion en Currency de l’argument CByte(12345.678989) retourne le Currency 12345.679
CDbl() Retourne la conversion en Double de l’argument CDbl(12.456789) retourne le Double 12.456789

 

Mise en forme

La fonction Format() permet de mettre en forme des nombres. Elle retourne une valeur de type String. Voici sa syntaxe :

Format(expression, format)

expression est l’expression à mettre en forme et format est le format de mise en forme à appliquer à l’expression.

Voici quelques exemples :

Dim s As Single

s = 1234.456

MsgBox Format(s, "0 000.00 €")

s = 1234567

MsgBox Format(s, "0.00")

MsgBox Format(s, "#,##0")

Voici le résultat de l’exécution :

 

Pour aller plus loin avec la fonction Format(), je vous suggère de consulter la page dédiée à cette fonction sur MSDN.