Il est de bon ton de se souhaiter la bonne année. Mais vous, et vous seul, pourrez faire en sorte que cette année soit bonne, meilleure que celle qui vient de s'écouler. Apprenez à ne compter que sur vous, car personne n'est plus qualifié que vous-même pour bâtir, réparer ou améliorer votre propre vie. Personne ne fera les choses à votre place. D'ailleurs, tout ce que les autres peuvent faire, c'est souhaiter que vous le fassiez. Et ne croyez pas que tout ceux qui vous entourent vous apporteront des solutions : certains font juste partie de vos problèmes. Transformez vos résolutions en actes, et dans douze mois, retournez-vous et souriez-vous fièrement : C'était long. C'était difficile. Mais ça y est : 2017 était une bonne année, merci Moi.

Fonctions regroupées par categorie

Généralités : Une fonction qui renvoie TRUE renvoie en fait -1 et FALSE 0

Tableau

Lbound et Ubound Donnent respectivement le plus petit et le plus grand élément disponible pour une certaine dimension d'un tableau. Voir l'aide Dim Array(2 To 20, 5 To 10)

LBound(Array, 1) Donne la valeur la plus basse de la 2ème dimension

Conversion (sauf date et heure)

Asc Retourne le code ANSI du premier caractère d'une chaîne. Asc("Abricot") contiendra 65
Cxxx (Conversions en différents types) CCur Monétaire
CDbl Nombre réel double
CInt Nombre entier
CLng Nombre entier long
CSng Nombre réel simple
CStr Donnée de type String
CVar Donnée de type Variant
ATTENTION : Si le paramètre à transformer n'est pas une valeur numérique, ça génère une erreur
Dim X As Currency
Dim St As String
St = "3,1"
X = CCur(St)
Chr[$] Renvoie le caractère ANSI correpondant au paramètre St = Chr(65) renvoie A
Hex[$] et Oct[$] Conversion Hexa/Octa/Décimal. Peu d'intérêt  
Str[$] Force un nombre à devenir une chaîne de caractères. L'argument doit être un nombre. Str(3)
Val Permet d'extraire le nombre au début d'une chaîne de caractères. Ce nombre peut même contenir des espaces Val("3 3 rue 444") renverra 33

Bases de données

Reste à analyse

Date / Heure

Généralités : Une date valide doit se situer entre le 1/1/100 et 31/12/9999. Pour les dates entre 1900 et 1999, on peut utiliser 2 chiffres au lieu de 4 pour l'année.

Nom de la fonction

Explication

Exemples

CVDate Renvoie le numéro de série d'une chaîne de caractères correspondant à une date. Si cette chaîne de caractère ressemble plutôt à un nombre entre guillemets, le résultat sera ce nombre en Variant. Dim X As Long
X = CVDate("7 février 1994")
X = CVDate("7/02/1994")
X = CVDate("7/02/94")
Ces 3 exemples renvoient chacun 34372
X = CVDate "1 janvier 1994 12h00" renverra 34 335,5.
Date[$] 2 fonctions : Soit imposer la date système, soit lire la date-système. Date = "20/03/1995"
x = Date
Time[$] 2 fonctions : Soit imposer l'heure système, soit lire l'heure-système. Time = "13:37"
x = Time
DateSerial Renvoie une date complète à partir de ses paramètres qui sont :
Année : 0 - 9999
Mois : 1 - 12
Jour : 1 - 31
Si on essaie d'entrer le 35 février, la date va apparaître avec le 7 mars
dim Ddate as variant
Ddate = DateSerial(1995, 3, 20)
renverra la date 20/03/1995
TimeSerial Renvoie une composée des 3 paramètres
Heure 0 .. 23
Minute 0 .. 59
Seconde 0 .. 59
x = TimeSerial(23, 59, 59)
DateValue Renvoie la date d'une chaîne de caractères. Voir aussi IsDate. Les formats reconnus sont :

30/12/1994
décembre 30, 1994
30/12/1994
déc 30, 1994
30-déc-1994
30 décembre 1994

DateValue("31/12/95")
DateValue(Now)
DateValue("abc")
arrête le programme
TimeValue Renvoie l'heure d'une chaîne de caractères. x = TimeValue("23:59")

x = TimeValue(Now)

DateAdd Ajoute un nombre positif ou négatif d'une certaine portion de temps à une certaine date.

Année yyyy
Trimestre q
Mois m
Jour de l'année y
Jour d (ou est la différence avec y?)
JourSem w
Semaine ww
Heure h
Minute n
Seconde ss

x = DateAdd("m", 1, "31 janvier 1995") Renvoie la date indiquée plus un mois

(28 février 1995). Par contre, x = DateAdd("m", 1, "28 février 1995") renverra 28 mars 1995. (pas le 31)

Cette Fonction Calcule le dernier jour possible du mois d'une date passée en paramètre :

Function CalculFinMois (QuelleDate)
If IsDate("31/" & Month(QuelleDate) & "/" & Day(QuelleDate)) Then
CalculFinMois = "31/" & Month(QuelleDate) & "/" & Day(QuelleDate)
Exit Function
End If
If IsDate("30/" & Month(QuelleDate) & "/" & Day(QuelleDate)) Then
CalculFinMois = "31/" & Month(QuelleDate) & "/" & Day(QuelleDate)
Exit Function
End If
If IsDate("29/" & Month(QuelleDate) & "/" & Day(QuelleDate)) Then
CalculFinMois = "31/" & Month(QuelleDate) & "/" & Day(QuelleDate)
Exit Function
End If
If IsDate("28/" & Month(QuelleDate) & "/" & Day(QuelleDate)) Then
CalculFinMois = "31/" & Month(QuelleDate) & "/" & Day(QuelleDate)
Exit Function
End If
End Function

DiffDate Calcule la différence entre 2 dates. Cette différence peut s'exprimer en jours, mois, années... Pour ces codes, se reporter à DateAdd. Si la 2ème date est antérieure à la première, un nombre négatif est retourné. x = DiffDate("d", "01/01", "30/01") retourne le nombre de jours entre le 1er et le 30 janvier.

x = DiffDate("ww", "1-1", Maintenant()) renvoie le nombre de semaines entre le 1er janvier de cette année et aujourd'hui

DatePart Retourne la valeur d'une partie de la date donnée en paramètre. Par exemple, le numéro du trimestre de l'année, ou le numéro du nom du jour (1-7 avec 1 pour dimanche). Se reporter à DateAdd pour les détails du premier paramètre. x = DatePart("w", "18-mar") renvoie le numéro du nom du jour du 18 mars de l'année courante.
Day Renvoie le combientième jour dans le mois de la date passée en paramètre x = Day(Now)
x = Day ("31/12/1995)
Month Renvoie quel mois (1-12) de la date passée en paramètre x = Month(Now)
Year Renvoie l'année de la date passée en paramètre x = Year(Now)
WeekDay Renvoie le numéro du jour dans la semaine (Lundi = 1 .. Dimanche = 7) x = Weekday("31/12/99")
x = Weekday(Now)
Hour Renvoie l'heure du paramètre x = Hour(Now)
x = Hour ("15:55:22")
Minute Renvoie la minute du paramètre x = Minute(Now)
Second Renvoie la seconde du paramètre x = Second(Now)
IsDate Permet de vérifier que le paramètre est ou non une date valide. x = IsDate (Now) renvoie True (-1)

x = IsDate ("ABC") renvoie False

Format (Dans le cadre des dates et des heures) Permet de formater une date ou une heure selon un certain style. x = "Genève, le " & Format(Now, "dd mm yyyy") renverra : Genève, le 21 03 1995
Timer Renvoie le nombre de secondes écoulées depuis minuit Cet exemple boucle pendant 5 secondes :
Début = Timer
Do
Loop Until Timer >= Début + 5

Calculer un montant depuis un tarif horaire :

' Cette fonction permet de calculer automatiquement le tarif à appliquer a partir
' d'un certain temps passé, à un certain barême horaire.
' PARAMETRES :
' Heure : une variable de type Date/Heure, telle que : #02:30:00 AM#.
' en admettant qu'on aie une chaîne de caractère telle que "2:30",
' il faut d'abord la transformer en Date/Heure avec CDate.
' TarifHoraire : Le prix demandé à l'heure
' EXEMPLES D'APPELS :
' X = CalculMontantSelonBaremeHoraire(#02:30:00 AM#, 80) ' X vaudra 200
' X = CalculMontantSelonBaremeHoraire(CDate("2:30"), 80) ' X vaudra aussi 200
Function CalculMontantSelonBaremeHoraire(Heure, TarifHoraire) As Single
CalculMontantSelonBaremeHoraire = Heure * 60 * 24 * (TarifHoraire / 60)
End Function

DDE

Reste à analyser

Regroupement de domaine

Toutes les fonctions de regroupement de domaine fonctionnent de la même façon :

X = Dxxx ("[NomChamp] , [NomTableDuNomChamp] , "CritèreStyle[NomTable]![Genre] = 'Critère'")

Fonction

Explication

Exemples

Dsum Permet de faire la somme d'un certain nombre d'un champ d'une certaine table. Les fonctions comme Dsum parcourent une table, et additionnent les valeurs d'un champs selon un critère défini X = DSum("[Prix]", "T_Article", "[T_Article]![Genre] = 'Dessert'") : renvoie la somme des prix de tous les articles dans la table T_Article dont le genre est Dessert.
Dcount Les enregistrements sont comptés (Le champ calculé n'est donc plus forcément un champ numérique)  
Davg Calcul de la moyenne  
DlookUp Permet de retrouver un certain champ d'un certain enregistrement d'une certaine table, sans avoir besoin de passer par des RecordSets pénibles

Dans le cas ou la recherche est infructueuse, DLookUp renvoie Null

Cet exemple renvoie le libellé de la table jouet dont l'IDJouet est égal à 6. Ici, c'est Monopoly qui sera affiché par MsgBox

DLookup("[Libelle]", "T_Jouet", "[IDJouet] = 6")

Dmax et Dmin Renvoie respectivement la valeur la plus haute et la plus basse  
DstDev, DstDevP, Dvar et DVarP Calculent respectivement l'écart-type d'un échantillon, d'une population et la variance d'un échantillon et d'une population  

Fonctions prédéfinies de Gestion d'erreurs

Fonction

Explication

Exemples

Err Variable prédéfinie qui contient le numéro d'erreur  
Erl Si j'indique les numéros de lignes, cette variable prédéfinie contient ce numéro en cas d'erreur  
Error Permet de générer une erreur (Ex1) et dans ce cas, la routine de traitement d'erreur éventuellement définie est appelée, ou de lire une erreur (Ex2) Ex1 : Error (11) appelle l'erreur "Division par 0"

Ex2 : X = Error (11) ' Place dans X la chaîne de caractères "Division par 0"

Error$ Contient la chaîne de caractère d'erreur Dans le cas d'une division par 0, les 2 lignes suivante renverront "Division par zéro" :

X = Error(Err)

ou

X = Error$

Exemple pratique

Sub DemoErreur ()
Dim A As Integer, B As Integer
On Error GoTo TraitementErreurs
' Dans tout la procédure, en cas d'erreur, quelle qu'elle soit, il faudra se rendre à TraitementErreurs.
A = B \ 0 ' Ligne qui génère l'erreur N° 11
A = 32767 * 2 ' Autre ligne qui génère une erreur
MsgBox Str(A)
Exit Sub
TraitementErreurs:
If Err = 11 Then
' Le N° de l'erreur est stocké dans la variable prédéfinie Err
MsgBox "Pas de division par zéro"
Else
MsgBox "Erreur inconnue au bataillon"
End If
Resume Next
' Retour à la ligne de la procédure immédiatement suivante à celle qui a déclenché l'erreur en cours
End Sub

ASTUCES :

Quand on veut afficher Err avec MsgBox, on ne peut pas faire MsgBox Err, on doit faire MsgBox "" & Err

Pour désactiver le traitement des erreurs, il faut écrire

On Error Goto 0

Fonctions financières

Les fonctions financières seraient longues à étudier ici. Elles ne sont pas vraiment difficiles, mais inutiles dans le cadre de ce tableau.

Fonctions générales

Fonction

Explication

Exemples

CodeDB Complexe. Reste à voir  
DoEvents Permet, dans les formulaires par exemple, d'obliger Access à faire tout ce qu'il doit faire avant de continuer le programme. Dans l'exemple, si on ne mettait pas DoEvents, les 2 boutons deviendraient visible au même moment. N = 600000

For x = 1 To N

Next

bouton0.visible = False

DoEvents

For x = 1 To N

Next

bouton1.visible = False

Environ[$] Permet de recueillir les variables d'environnement du DOS, telles que PATH  
In Devrait permettre d'utiliser une instruction de type If avec un intervalle, mais ça ne fonctionne pas comme je le fais.  
RGB et QBColor Ces 2 fonctions permettent de traiter les couleurs de manière plus conviviale qu'un simple nombre. RGB demande 3 paramètres : Rouge , Vert , Bleu, tandis que QBColor demande un nombre entier de 0 à 15 Me![ObjetColorable].BorderColor = RGB(255, 0, 0)

Me![ObjetColorable].BorderColor = QBColor(3)

Me![ObjetColorable].BorderColor = 190000

Shell Permet d'exécuter un programme depuis Access. Le 2ème paramètre 3 permet de lancer l'application en plein écran active VariableX = shell("aaplay c:\docs\info3001.fli",3)

X = Shell(AppName, 1)

Exemple pour appeler un certain programme de configuration :

Shell "control.exe modem.cpl", WindowStyle:=1

Entrée/Sortie

Voir le chapitre Ecriture dans des fichiers texte

Inspection

Fonction

Explication

Exemples

IsDate Voir dans les fonctions Date et heure  
IsEmpty Détermine si une variable Variant est vide (pas encore initialisée) If IsEmpty(VariableVariant) Then...
IsNull Détermine si une variable est nulle. Voir l'aide pour la différence entre Empty et Null  
IsNumeric Détermine si une variable (Variant) est de type numérique  
VarType Détermine précisément le type d'une variable Variant selon le barême suivant :

0 Vide

1 Null

2 Integer

3 Long

4 Single

5 Double

6 Currency

7 Date

8 String

msgbox Str(VarType(x))

Mathématiques

Fonction

Explication

Exemples

Abs Renvoie la valeur absolue d'un nombre  
Atn Retourne l'arc-tangente  
Cos Retourne le cosinus d'un angle  
Exp Logarithme népérien  
Fix et Int Renvoient la partie entière d'un nombre. La nuance entre les 2 réside dans les nombres négatifs  
Log Calcul des logarithmes  
Rnd Génération d'un nombre aléatoire entre 0 et 1. L'exemple montre comment on force un nombre entier entre 1 et 6 Randomize

X = Int(6 * Rnd + 1) ' Valeur aléatoire entre 1 et 6

Sgn Détermine le signe d'un nombre

Nombre > 0 Sgn(nombre) = 1.

Nombre = 0 Sgn(nombre) = 0.

Nombre < 0 Sgn(nombre) = -1.

 
Sin Retourne le sinus d'un angle.  
Sqr Retourne la racine d'un nombre  
Tan Retourne la tangente d'un angle.  

Regroupement SQL

Ces fonctions ressemblent à s'y méprendre aux fonctions de regroupement de domaines. Les fonctions Regroupement SQL ne sont pas conseillées dans les modules ni dans les macros, mais dans les requêtes elles-mêmes.

Déroulement de programme

Fonction

Explication

Exemples

Déroulement programme

Choose Sorte de Case Of simplifié. Choose retourne dans l'exemple la valeur de l'index y (Deux) x = 2

y = Choose(x, "Un", "Deux", "Trois")

Iif Encore plus simple que Choose X = IIf(10 > 1, "Vrai", "Faux")
Switch La plus sophistiquée des fonctions "Déroulement programme". On donne à x la valeur rencontrée lors de la première affirmation vraie dans les paramètres. Dans cet exemple, x prendra "Cinq" puisque c'est la première affirmation vraie dans toute la liste des affirmations (C3=5). C1 = 2

C3 = 5

x = Switch(C1 = 1, "Un", C1 = 3, "Trois", C3 = 5, "Cinq")

x vaut 5

Texte

Fonction

Explication

Exemples

Texte

Asc Renvoie la valeur ANSI du premier caractère passé en paramètre X = Asc("Bonjour") renvoie 66
Chr[$] Inverse de Asc : Renvoie la lettre correspondant à la valeur ANSI passée en paramètre X = Chr(66) renvoie "B"
Format Voir plus bas les exemples  
InStr Renvoie la position d'une chaîne de caractères dans une autre.

Syntaxe : InStr (DébutRecherche , ChaîneAInspecter , Chaîne à chercher)

ATTENTION : Le résultat peut être différent selon qu'il soit indiqué dans Général : "Option Compare DataBase" ou Option Compare Binary". Option Compare DataBase, les majuscules et les minuscules ne sont pas différenciées, tandis qu'elles le sont dans Option Compare Binary.

Ceci dit, on peut contourner cette particularité avec le 4ème paramètre optionnel qui est :

0 pour respecter les majuscules et minuscules

1 pour ne pas les respecter

x = InStr(1, "AMm", "m") ' renvoie 2 ou 3 selon l'Option Compare
Utilisation du 4ème paramètre :
x = InStr(1, "AMm","m",1) 'Renvoie 2
x = InStr(1, "AMm","m",0) 'Renvoie 3
x = InStr(3, "AMm", "m") ' renvoie 3 puisque de toute façon, la recherche commence à partir du 3ème caractère
x = InStr(1, "Anne", "nne") ' renvoie 2

x = InStr(1, "Abc", "bcd") ' renvoie 0

Lcase[$] et UCase[$] Convertit toutes les majuscules du paramètre en minuscules, et inversement pour UCase X = LCase("Abc") ' renvoie "abc"
X = Ucase ("Abc") ' renvoie "ABC"
Left[$] et Right[$] Extraient un certain nombre de caractères d'une chaîne à gauche ou à droite x = Left("abcd", 0) ' Renvoie une chaîne vide
x = Left("abcd", 1) ' Renvoie "a"
x = Left("abcd", 4) ' Renvoie "abcd"
x = Left("abcd", 5) ' Renvoie aussi "abcd"
x = Right("abcd", 0)' Renvoie une chaîne vide
x = Right("abcd", 1)' Renvoie "d"
x = Right("abcd", 4)' Renvoie "abcd"
x = Right("abcd", 5)' Renvoie aussi "abcd"
Len Retourne la taille d'une variable DEJA INITIALISEE. Dim S As String, D As Double, I As Integer, V As Variant
S = "123" ' Len (S)
donnerait 3
D = 12 ' Len (D) donnerait 4
I = 12 ' Len (I) donnerait 2
V = 12 ' Len (V) donnerait 2 (Comme integer)
V = "123" ' Len (V) donnerait 3
Trim , Ltrim , Rtrim Retirent les espaces aux extrémités d'une chaîne

Rtrim : Espaces a droite

Ltrim : a gauche

Trim : Les 2

x = RTrim(" 234 ")' Donne " 234"
x = LTrim(" 234 ")' Donne "234 "
x = Trim(" 234 ")' Donne "234"
Mid[$] Renvoie un certain nombre de caractères d'une certaine chaîne à partir d'une certaine position

Mid (Chaine , Départ , Nombre)

x = Mid("Chaine", 3, 2) ' Retourne "ai"
x = Mid("abc", 3, 2) 'retourne "c"

Astuce pour extraire le 2ème mot d'une chaîne de caractères composée de mots

ChaîneTest = "Mot1 Mot2 Mot3"
PosEsp1 = InStr(1, ChaîneTest, Chr(32))
PosEsp2 = InStr(PosEsp1 + 1, ChaîneTest, Chr(32))
LongueurMot = (PosEsp2 - PosEsp1) - 1
x = Mid(ChaîneTest, PosEsp1 + 1, LongueurMot) ' Contient le 2ème mot

Spacex = Space(10)    
StrCmp Permet de comparer 2 chaînes de caractères, et de déterminer laquelle des 2 est la plus avancée alphabétiquement
SI RETOUR
Chaine1 > Chaine2 1
Chaine1 < Chaine2 1
Chaine1 = Chaine 0
3ème paramètre = 1 majuscule <> minuscule
3ème paramètre = 0 majuscule = minuscule
x = StrComp("aaa", "AAA", 1) 'renverra 1 (minuscules après majuscules)
String Répète un certain nombre de fois un certain caractère x = String(10, "*")

Insérer un saut de ligne dans une chaîne de caractères

Msg = Msg + Chr$(13) + Chr$(10)