Généralités : Une fonction qui renvoie TRUE renvoie en fait -1 et FALSE 0
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 |
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 |
Reste à analyse
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 |
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 |
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 |
' 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
Reste à analyser
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
Les fonctions financières seraient longues à étudier ici. Elles ne sont pas vraiment difficiles, mais inutiles dans le cadre de ce tableau.
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 |
Voir le chapitre Ecriture dans des fichiers texte
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)) |
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. |
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.
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 |
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, "*") |
Msg = Msg + Chr$(13) + Chr$(10)