algorithmique vba - unidentified

Transcription

algorithmique vba - unidentified
T-GSI
STAGE RENOVATION
- Algorithmique -
Lexique D’algorithmique
& De programmation en VBA
Olivier Mondet
http://unidentified-one.net
A. Correspondances langage algorithmique & VBA
A.1.
Types de variables
ALGORITHMIQUE
Types de
données :
VBA
Types de
données :
Plages de valeurs :
Octet
Booléen
Vrai ou Faux
Entier
Réel
Plages de valeurs :
Byte
De 0 à 255.
Boolean
True ou False.
Integer
De –32 768 à 32 767.
Long
Entier long. De –2 147 483 648 à
2 147 483 647.
Single
(virgule flottante en simple
précision).
Double
(virgule flottante en double
précision).
Currency
Decimal
Entier avec décalage pour signifier
les types monétaires (avec 2
décimales).
Nombres décimaux de grande
précision (28 chiffres après la
virgule).
Du 1er janvier 100 au 31 décembre
9999 (pour affecter une date :
variable = #10/11/1999#).
Date
Date
Chaîne
String
Texte.
Variant
Reçoit n’importe quelle valeur, qu’il
s’agisse d’un nombre entier, d’un
objet ou d’un texte.
Type
Tableau[x,
…]
Cf. plus bas.
Personnalisé (Avec Type) Cf. plus bas.
y, Un tableau a plusieurs
dimensions notées ici x, y, …
Lexique algorithmique et VBA.doc
Array(x,
y,…)
page 1 / 16
Avec x & y (entiers) allant de 0 à n.
om (2000-2007)
A.2.
Déclarer les variables
Vérifier si au début du module : Option Explicit
est toujours activé car cette option vous informera
si une variable n’est pas déclarée.
On utilise la séquence suivante :
Variables variable : Réel Nom_Famille : Chaîne variable1, variable2 : Réel Dim variable as Single
Dim Nom_Famille as String
Dim prenomEleve as Single, codePostal
as Single
Déclarer un tableau :
variable[n, …] de chaîne (où n représente
tableau.)
la
première
dimension
du Déclarer un tableau :
Dim variable(n, …) As String
Ou
Exemple pour construire un tableau d’une colonne Dim variable() As String
(pour un tableau dont on ne connaît pas à l’avance
et 10 lignes :
la taille. Cette déclaration est très gourmande en
variable[10] de Chaîne capacité mémoire.) Il faut par la suite utiliser
Construire un tableau de deux colonnes et 10 ReDim pour redimensionner le tableau dès que
l’on en a la taille définitive.
lignes :
Par exemple :
variable[2,10] ReDim variable(3,10)
ou
variable[10,2] Attention : VBA, comme les autres langages,
commence
la numérotation des variables d’un
N.B. : Les variables peuvent être écrites en
tableau
à
0
! Cela veut dire que si vous faites la
majuscules ou en minuscules. On ne peut pas
déclaration
suivante
:
changer de format d’écriture au cours d’un
Dim
variable(3)
As String
algorithme.
Vous irez de 0 à 3, soit quatre occurrences de
Si la variable choisie doit comporter plusieurs tableau nommé : variable.
mots, comme par exemple « montant h.t. », les
différents mots qui composent le nom de la La seule façon de forcer VBA à commencer sa
variable seront alors séparés par un trait de numérotation à 1 serait d'écrire l'instruction
soulignement
"_"
(touche 8
du
pavé suivante en début de module:
Option Base 1
alphabétique) :
montant_ht (sans les points après le h et le t.)
Ou l’on distinguera les mots par des majuscules :
montantHT
Lexique algorithmique et VBA.doc
page 2 / 16
om (2000-2007)
A.3.
Déclarer les types
Un Type permet de faire un tableau qui peut Remarque : En VBA les déclarations Type se font
contenir différents noms de variables et surtout toujours avant la procédure.
des variables de différents type. Quand on créé un
tableau, on ne peut avoir qu’un seul type de Type Tablo
Code_Personnel as Single
donnée.
Nom_Personnel as String
End Type
Par exemple :
variable[2,2] de chaîne Déclare un tableau à deux dimensions de chaînes.
La variable tableau donnera :
Dim variable As Tablo
Type permet comme suit d’avoir un tableau de
réels et de chaîne. Par exemple :
Ou l’on affectera par exemple :
Type Tablo Code_Personnel :réel Nom_Personnel :Chaîne variable(1).Code_Personnel = 100
variable(1).Nom_Personnel = "DUPONT"
Fin Type Donnera le tableau :
Code_
Personnel
Nom_
Personnel
…
Permet
comme
et une
déclare
créer :
…
de créer un tableau à deux dimensions
une table avec une variable de type Réel
autre de type Chaîne. Par la suite on
une variable du type que l’on vient de
Variable[n] :Tablo Ou l’on affectera par exemple :
variable[1].Code_Personnel Õ 100 variable[1].Nom_Personnel Õ "DUPONT" A.4.
Déclarer les constantes
Constantes Taux_TVA Õ "19,6"
Lexique algorithmique et VBA.doc
Const Taux_TVA = "19,6"
page 3 / 16
om (2000-2007)
A.5.
Déclarer les fonctions
Fonction Nom‐Fonction(variable) :réel Entrée variable :réel Function
Nom-Fonction(variable
Single) as Single
Pour retourner le résultat :
Pour retourner le résultat :
. . . Retourner variable . . . .
.
.
Nom-Fonction = variable
.
.
.
A.6.
as
Ajouter un commentaire
Un algorithme comme un programme doit être
lisible. Il faut donc ajouter des commentaires pour
faciliter la compréhension du programme. Cela
permet également de bien se repérer dans la
structure de son algorithme.
L’apostrophe est le signe du commentaire en VBA.
Dès que l’on place un apostrophe et que l’on tape
du texte celui-ci se transforme en vert.
/* Commentaire */ Exemple :
Exemple :
Dim Nom_Candidat As String ‘ Variable
recevant le nom du candidat
‘ Commentaire
Nom_Candidat :Chaîne /* Variable recevant le nom du candidat */ A.7.
Affecter une valeur
On utilise le signe "Õ" :
On utilise le signe "=" :
Exemples :
Exemple :
variable Õ 12,3 variable Õ "Les chiens arrivent"
variable = 12,3
variable = "Les chiens arrivent"
A.8.
Comparer
Égalité
=
Différent
Strictement supérieur à
Strictement Inférieur à
Supérieur ou égal à
Inférieur ou égal à
<>
>
<
>=
<=
Ce sont les mêmes symboles :
= <> > < >= <=
De la même manière :
A inférieur ou égal à B se note : A <= B
Exemple :
A inférieur ou égal à B se note : A <= B
Lexique algorithmique et VBA.doc
page 4 / 16
om (2000-2007)
A.9.
Afficher
Pour afficher un résultat, une information on Il existe deux façons d’afficher un résultat sous
Access :
utilise la commande Afficher.
Soit par une boîte de dialogue grâce à
l’instruction MsgBox. La manipulation de cette
instruction est compliquée bien que les
résultats soient mieux présentés.
Exemples :
On peut afficher le contenu d’une variable :
Afficher variable On peut afficher une phrase :
MsgBox Prompt, [Style de boite et
bouton(s)],
[Title],
[HelpFile],
[Context]
Afficher "Les Tortues ont toutes une carapace !" Exemple :
On peut afficher une phrase avec le contenu d’une
variable :
MsgBox "Le montant de votre commande
est :" & Variable
Afficher "Le montant de votre commande est : ", variable Soit dans la fenêtre de débogage du module
Access avec l’instruction Debug.Print Cette
instruction est plus simple à utiliser, mais elle
oblige d’ouvrir la fenêtre de débogage : pour
voir les résultats.
(fenêtre de débogage)
Debug.Print Prompt
Exemple :
Debug.print "Le montant de
commande est :" & Variable
votre
N.B. : Voir en fin de lexique pour plus de détails
sur ces instructions.
A.10.
Les opérateurs (classés par priorité de traitement)
"( )"
Appels de fonction :
Exemple : (3 + 6) * 2 = 18
"^"
Élévation à la puissance :
Exemple : 9^2 = 18
"-"
Négation :
Exemple : ‐2 * 3 = ‐6
"*" et "/"
"Div"
"Mod" :
Même priorités hormis l’instruction de division
entière qui s’écrit "\" :
Exemple : 10 \ 3 = 3
Multiplication et division :
Exemple : 4 * 2 + 4 / 2 = 10
Division entière :
Exemple : 10 Div 3 = 3
Modulo - Donne
division :
Exemples :
le
reste
de
la
10 Mod 3 = 1 10 Mod 2 = 0
"+" et "-"
Addition et soustraction:
Exemple : 4 + 3 – 5 = 2
Lexique algorithmique et VBA.doc
page 5 / 16
om (2000-2007)
"=" "<>"
Opérateurs de comparaison
"<" ">"
Cf. Comparaison
"<=" ">=".
A.11.
Cumul
var_Cumul Õ var_Cumul + variable A.12.
var_Cumul = var_Cumul + variable
Opérateurs logiques
Non
Exemple :
Les instructions sont Not, And, Or :
Si Non(A > 10) Alors … Not :
(Si A n’est pas supérieur strictement à 10)
If Not A > 10 Then …
Et
Exemple :
And :
If A >= 10 And A <= 20 Then …
Si A >= 10 Et A <= 20 Alors … Or :
(pour A compris entre 10 et 20 : A[10,20])
If A > 10 Or B = "Non" Then …
Ou
Exemple :
Si A > 10 Ou B = "Non" Alors …
(pour la variable A strictement supérieure à 10 ou
la variable b égale au mot « Non ».
A.13.
Structure d’un algorithme ou d’un programme
Algo Nom_de_l’algorithme Variables Variable :réel /* commentaire */ Variable2 :Chaîne Début Sub Nom_Programme()
Dim variable as Single ‘ commentaire
Dim variable2 as String ‘ commentaire
.
.
.
Corps du programme
. . . .
.
.
End Sub
Corps de l’algorithme . . . Sub est une Procédure : une macro ;
Function est une Fonction -> procédure qui peut
renvoyer une valeur par son nom (ex : Time())
Fin Généralement les instructions sont soulignées en
algorithmique. Quant aux variables on peut
indifféremment les trouver toujours en majuscules
ou en minuscules mais pas les deux en même
temps.
Lexique algorithmique et VBA.doc
page 6 / 16
om (2000-2007)
A.14.
Conditions / Sélections
Condition :
Si condition Alors Action Action… Fin Si
Sélection :
Si condition Alors Action Action… Sinon Action Action… Fin Si Selon Que variable = valeur1 : Actions = valeur2 : Actions… . . Autrement : Action … Fin Selon If condition Then
Action
Action…
End If
If condition Then
Action
Action…
Else
Action
Action…
End If
Select Case variable
Case Is condition
Action
Case Is condition
Action
.
.
Else: Action…
End Select
A.15.
Les itérations
Les Itérations (ou Répétitions) sont aussi appelées (Quitter prématurément une boucle : Exit Do)
des boucles :
Boucles avec condition au départ :
(Quitter prématurément une boucle : Sortir)
Boucles avec condition au départ :
Tant Que condition Action Action… Fin TQ Boucles avec condition à la fin :
Répéter Action Action… Jusqu’à condition Boucles infinies :
Itérer Action Action… Fin Itérer Lexique algorithmique et VBA.doc
Do While condition
Action
Action…
Loop
ou
Do Until condition
Action
Action…
Loop
Boucles avec condition à la fin :
Do
Action
Action…
Loop While condition
page 7 / 16
om (2000-2007)
Boucles avec incrémentation :
ou
Pour variable de début à fin par pas de Do
incrément Action
Action Action…
Action… Loop
Until
condition
Fin pour Exemple :
Boucles infinies :
Pour i de 0 à 10 par pas de 2 Action Action… Fin pour
Do
Action
Action…
Loop
Boucles avec incrémentation :
For variable
Incrément
Action
Action…
Next variable
=
Début
to
Fin
step
(Quitter prématurément une boucle For/Next :
Exit For)
A.16.
Saisir des données
On peut utiliser indifféremment les mots Saisir ou Sous Access une seule instruction assure à la fois
l’affichage et la saisie d’une variable :
Lire :
InputBox
(Prompt,
[Title],
[Default],
Saisir variable [xpos], [ypos], [helpFile], [context])
Prompt = Texte du message.
Ou
[Title] = Titre de la boite de message.
Lire variable [Default] = Texte par défaut proposé dans la
ligne de saisie.
On peut Saisir/lire plusieurs variables :
[xpos] et [ypos] = position de la fenêtre.
Saisir variable1, variable2, variable3 [helpFile] et [context] = fichier d’aide associé
Parfois on veut afficher un message avant la à la boite de dialogue.
saisie :
Exemple :
Afficher "Entrer votre âge :" Saisir age variable = InputBox("Entrer votre
âge : ", "Saisie de l’âge", 0)
Où l’on invite l’utilisateur à saisir son âge dans
une boîte de dialogue nommée "Saisie de l’âge".
Vous aurez remarqué que l’on propose 0 comme
valeur par défaut.
N.B. : La boite de dialogue propose "Ok" ou
Lexique algorithmique et VBA.doc
page 8 / 16
om (2000-2007)
"Annuler" une fois l’âge saisi. La touche "Ok"
termine la saisie alors que la touche "Annuler"
provoquera une erreur.
Cf. plus loin pour voir comment intégrer cette
erreur possible dans un programme.
A.17.
Appeler une procédure ou une fonction
Souvent, pour éviter qu’un algorithme devienne
trop long tout en devenant complexe on le coupe
en plusieurs parties autonomes. Très souvent
également des tâches répétitives peuvent faire
l’objet de procédures ou de fonctions à part.
On tape tout simplement le nom de la procédure :
nom_procédure()
Pour une fonction :
variable = Nom_fonction(valeur)
ou
Pour une procédure :
If Nom_fonction(valeur) = … Then …
Appeler nom_procédure() Pour une fonction :
variable = Nom_fonction(valeur) On alors la fonction peut être utilisée ainsi : si Nom_fonction(valeur) = … Alors … B. Compléments VBA
Pour découper une chaîne afin de constituer un tableau, utiliser l’instruction :
Split (variable, " " ou " ;") découpe une chaîne selon le séparateur précisé " "
ou " ;"
Exemple :
Décomposer une
chaîne en tableau :
Split.
variable1 = "Paul Virginie Antoine"
variable2() = Split(variable1, " ")
varaible2() contient – à présent – le tableau suivant :
Paul
Virginie
Antoine
Comparer deux
chaînes de
caractères : Like.
Pour comparer deux chaînes de caractères, utiliser l’instruction : Like.
Exemple : On cherche toutes les chaînes de deux caractères ("A8" "B7" "A1"
"C9" "D7") commençant par un "A" :
On utilisera… Like "[A]?" cela nous renverra "A8" "A1".
(? Remplace un seul caractère et * remplace un nombre quelconque de
caractères et # remplace un chiffre.)
Exemple : On cherche toutes les chaînes de caractère – cette fois ci de taille
variable – commençant par un "B" :
On utilisera… Like "[B]*"
On pourrait également rechercher les lettres allant de "A" à "D" : [A-D]
Ou rechercher les lettres "A", "O" ou "U" : [A,O,U]
Tous les caractères sauf "a", "b" et "c" : [!a-c]
Lexique algorithmique et VBA.doc
page 9 / 16
om (2000-2007)
Exemple d’utilisation :
If variable like "[B]*" Then …
Aller plus loin dans
les boîtes à
messages avec
MsgBox.
MsgBox Prompt, [Style de boite et bouton(s)], [Title], [HelpFile],
[Context]
ƒ Prompt : représente le message de la boite de dialogue. Cela peut être du
texte entre guillemets, une variable ou les deux en même temps en
ajoutant un & avant le second élément à afficher.
ƒ [Style de boite et de bouton(s)] : vous permet éventuellement d’avoir
une boite de message avec un signe propre à Windows. Ci-dessous les
différentes boîtes de messages :
Avec l’instruction vbCrtitical :
Avec l’instruction vbExclamation :
Avec l’instruction vbInformation :
Avec l’instruction vbQuestion :
Vous pouvez également gérer les boutons (par défaut le bouton "Ok"
s’affiche). Utilisez alors :
ƒ
ƒ
– VbOkOnly : Bouton "Ok" seulement ;
– VbOkCancel : Bouton "Ok" et bouton "Annuler" ;
– VbAbortRetryIgnore : Boutons "Abandon", "Réessayer" et "Ignorer" ;
– VbYesNoCancel : Boutons "Oui", "Non" et "Annuler" ;
– VbYesNo : Boutons "Oui" et "Non" ;
– VbRetryCancel : Boutons "Réessayer" et "Annuler".
[Title] : représente le titre de la boîte de dialogue (remplace Microsoft
Access).
[HelpFile & Context] : représentent les liens vers les éventuels fichiers
d’aide liés à la boîte de dialogue.
Exemples :
MsgBox "J’ai envie d’un verre d’eau – Pouvez-vous m’en
apporter ?", vbExclamation + vbYesNo, "Très très urgent !!"
Vous pouvez afficher du texte avec une ou plusieurs variables. Dans ce cas
n’oubliez pas de précéder d’un & les variables ou chaînes que vous ajoutez :
MsgBox "Le montant de votre commande est : " & variable,
vbExclamation, "Montant commande"
Lexique algorithmique et VBA.doc
page 10 / 16
om (2000-2007)
Il peut arriver que vous ayez besoin de connaître le bouton sur lequel a appuyé
l’utilisateur. Par exemple si vous demandez – par une boite de dialogue – si l’on
veut continuer « Oui ou Non » et que vous avez utilisé le paramètre vbYesNo il
vous faudra stocker la réponse dans une variable. Cette variable prendra la
valeur vbOk si l’on appui sur le bouton "Ok", vbYes si l’on appui sur le bouton
"Oui" etc. avec vbNo, vbCancel, vbRetry, vbIgnore.
Cette fois-ci on ajoutera des parenthèses entre les paramètres de MsbBox
comme pour InputBox.
MsgBox (Prompt, [Style de boite et bouton(s)], [Title], [HelpFile], [Context])
Exemple :
Dim Réponse As Integer
Réponse = MsgBox ("Voulez-vous quitter
vbQuestion + vbYesNo, "Fin de programme")
le
programme ?",
L’instruction Debug.Print n’utilise aucun paramètre. Il suffit d’accoler les
informations ou variables à imprimer.
Exemples :
Aller plus loin dans
les fenêtres de
résultat(s) avec
Debug.print.
Debug.print variable
Debug.print "Les vaches donnent du lait !"
Debug.print "Le n° de téléphone est : " & Variable
On peut utiliser la virgule pour séparer les variables affichées avec
Debug.Print (les variables sont affichées en colonnes), avec un point-virgule
(les variables numériques sont affichées avec un espace avant).
Les erreurs proviennent très souvent lorsque la touche "Annuler" d’une
instruction InputBox est activée. Cela arrête le programme. On peut éviter le
déclenchements de cette erreur et faire de sorte que lorsque l’erreur se
déclenche le programme passe à l’instruction suivante ou reprend à la même
instruction.
Pour éviter cette erreur on place après la déclaration des variables l’instruction
suivante :
Intégrer les
éventuelles erreurs
lors du déroulement
programme.
On Error GoTo ERREUR
Puis avant la fin de la procédure (par exemple) :
ERREUR:
MsgBox "Vous ne pouvez pas Annuler !!", vbExclamation, "Le
programme va se fermer !"
Ou si vous voulez reprendre à partir de l’instruction qui a provoqué l’erreur :
ERREUR:
MsgBox "Erreur de saisie !", vbExclamation, "ATTENTION"
Resume
(Où Resume vous permet de retourner à l’instruction ayant provoqué l’erreur).
Vous pourriez utiliser Resume Next pour aller à l’instruction suivante.
Lexique algorithmique et VBA.doc
page 11 / 16
om (2000-2007)
C. Spécificités Excel
Alt+F11
Ou
OUTILS/MACRO… Visual Basic Editor
Pour exécuter une macro OUTILS/MACRO… MACRO… Choisir dans la liste le nom de la procédure
(une procédure).
puis : Exécuter
Ouvrir Visual Basic puis choisir Module1 dans la fenêtre Projet – VBAProject
Ou
Pour modifier une macro.
Dans le menu OUTILS/MACRO… MACRO… Choisir dans la liste le nom de la
procédure puis : Modifier
OUTILS/MACRO… MACRO… Choisir dans la liste le nom de la procédure
Pour Effacer une macro.
puis : Supprimer
On utilise l’instruction :
Pour ouvrir Visual Basic
Editor.
Range("Adresse_Cellule").Value
Exemple :
On veut affecter à une variable la valeur de la cellule "B4" ci-dessous qui
vaut 120000 :
Pour affecter la valeur
d’une cellule Excel à une
variable.
L’instruction sera la suivante :
variable = Range("B4").Value
Affecter la valeur d’une
variable à une cellule
Excel.
Lexique algorithmique et VBA.doc
On utilise également l’instruction :
Range("Adresse_Cellule").Value.
Exemple : On affecte à la cellule "B9" la valeur d’une variable.
Range("B9").Value = variable
page 12 / 16
om (2000-2007)
D. Spécificités Access
Ouvrir Visual Basic Editor. Cliquer sur l’onglet MODULES puis NOUVEAU
OUTILS/MACRO… MACRO… Choisir dans la liste le nom de la procédure
Pour exécuter une macro puis : Exécuter
Ou
(une procédure).
Dans Visual Basic Editor… choisir le nom de la procédure puis Exécuter
Pour modifier une
Dans l’onglet MODULES, sélectionner le Module1 puis Modifier.
procédure.
Pour supprimer une
Dans l’onglet MODULES, sélectionner le Module1 puis cliquer droit et
procédure.
supprimer (ou utiliser la touche "Suppr").
Ouvrir des objets Access Ce fait grâce à l’instruction DoCmd de VBA qui permet de nombreuses
(Table, requête, état,
manipulations autres que celles décrites ici.
formulaire, module.)
Ouvrir une table :
Application.DoCmd.OpenTable "NomTable", Mode de vue, Mode
d’accès
Mode de vue :
– acViewDesign : voir la construction ou la structure d’une table, d’un
formulaire…
– acViewNormal : vue d’une table, d’un formulaire ou du résultat d’une
requête…
– acViewPreview : mode aperçu avant impression.
Mode d’accès :
– acAdd : on veut ajouter un enregistrement,
– acEdit : on veut modifier un enregistrement,
– acReadOnly : interdit toute modification.
Les formulaires :
Application.DoCmd.OpenForm "NomFormulaire", Mode de vue,
Filtre(s), Condition(s), Mode d’Accès, Apparence
Mode de vue :
– acNormal : formulaire normal ;
– acDesign : mode création de formulaire ;
– acFormDS :mode tableau ;
– acPreview :aperçu avant impression).
Filtres(s) & Condition(s) : pointer sur certain(s) enregistrement(s).
Mode d’accès :
– acFormAdd : ajouter formulaire ;
– acFormEdit : modifier le formulaire ;
– acFormPropertySettings : modifier les paramètres ;
– acFormReadOnly : utiliser le formulaire en lecture seule.
Apparence :
acDialog : affichage en fenêtre fixe (on ne peut changer la taille) ;
acHidden : formulaire caché ;
acIcon : fenêtre icône ;
acWindowsNormal : affichage en fenêtre windows.
Lexique algorithmique et VBA.doc
page 13 / 16
om (2000-2007)
Ouvrir un Etat :
Application.DoCmd.OpenReport
Filtre(s), Condition(s)
"NomEtat",
Mode
de
vue,
Mode de vue : cf. OpenTable
Filtres(s) & Condition(s) : pointer sur certain(s) enregistrement(s).
Ouvrir une Requête :
Application.DoCmd.OpenQuery
Mode d’accès
"NomRequête",
Mode
de
vue,
Mode de vue : cf. OpenTable
Mode d’accès : cf. OpenTable
Ouvrir un Module :
Application.DoCmd.OpenModule "NomModule", "NomProcédure"
"NomProcédure" : indique le nom de l’une des procédures à ouvrir.
Fermer un objet Access.
Application.DoCmd.Close. acTable "NomTable", Mode Fermeture
acMacro "NomMacro"
acModule "NomModule"
acQuery "NomRequête"
acForm "NomFormulaire"
acReport "NomEtat"
Mode Fermeture :
acSaveNo : fermer sans sauvegarder ;
acSaveYes : fermer en sauvegardant ;
acSavePrompt : fermer en demandant s’il faut sauvegarder.
Créer des
enregistrements.
L’instruction GotoRecord permet, lorsqu’une table est ouverte (cf. plus
haut) de créer des enregistrements :
Application.DoCmd.GotoRecord, , acNewRec
L’instruction RecordSet permet d’accéder à des tables et d’en utiliser les
Manipuler des tables avec enregistrements (ou tuples). On peut, avec cette méthode, utiliser les
l’instruction RecordSet. données des tables, les modifier, les supprimer.
Ouvrir une table :
L’ouverture d’une table se fait grâce à la séquence d’instructions suivante :
Dim RS as recordset
Set RS = Application.CurrentDb.OpendRecordset ("NomTable",
dbOpenTable)
Fermer une table :
RS.Close
Lexique algorithmique et VBA.doc
page 14 / 16
om (2000-2007)
Parcourir une table d’enregistrement en enregistrement :
N.B. : Nécessite d’avoir déjà ouvert la table auparavant.
–
–
–
–
RS.MoveFirst :aller au premier enregistrement de la table ;
RS.MoveLast : aller au dernier enregistrement de la table ;
RS.MoveNext : aller à l’enregistrement suivant ;
RS.MovePrevious : aller à l’enregistrement précédent.
Détecter le début ou la fin d’une table :
Pour terminer les itérations d’une boucle, il est parfois très utile de détecter
si l’on est à la fin ou au début d’une table.
RS.EOF : fin de table (End Of File) ;
RS.BOF : début de table (Beginnig Of File).
Exemple :
If RS.EOF Then
MsgBox "Fin de fichier rencontrée", vbExclamation
End If
Utiliser la valeur d’un champ :
RS.Fields ("NomDuChamp").Value
Exemple :
variable = RS.Fields("MontantStock") .Value
(Où variable prend la valeur du champ "MontantStock" de l’enregistrement
actif de la table.)
Trouver un enregistrement :
N.B. : Pour utiliser cette fonction, vous devez avoir utilisé l’instruction
suivante :
Dim RS as recordset
Set RS = Application.CurrentDb.OpendRecordset ("NomTable",
dbOpenDynaSet)
Où dbOpenDynaSet remplace dbOpenTable.
–
–
–
–
RS.FindFirst "NomDuChamp critère" : trouver le premier champ
correspondant au(x) critère(s) ;
RS.FindNext "NomDuChamp critère" : trouver le champ suivant champ
correspondant au(x) critère(s) ;
RS.FindLast "NomDuChamp critère" : trouver le dernier champ
correspondant au(x) critère(s) ;
RS.FindPrevious "NomDuChamp critère" : trouver le champ précédant
correspondant au(x) critère(s).
Exemples de critères :
RS.FindFirts
RS.FindFirts
RS.FindFirts
RS.FindFirts
Lexique algorithmique et VBA.doc
"Code_tarif = 12"
"Nom_client like ’[A]*’"
"Prénom_client = ’Bob’"
"Code_personnel = " variable
page 15 / 16
om (2000-2007)
Modifier un enregistrement :
N.B. : Pour utiliser cette fonction, vous devez avoir utilisé l’instruction
suivante :
Dim RS as recordset
Set RS = Application.CurrentDb.OpendRecordset ("NomTable",
dbOpenDynaSet)
Où dbOpenDynaSet remplace dbOpenTable.
RS.Edit
RS.Fields("NomDuChamp").Value = variable
RS.Update
Où le champ prend le contenu de variable.
Ajouter un enregistrement :
N.B. : Pour utiliser cette fonction, vous devez avoir utilisé l’instruction
suivante :
Dim RS as recordset
Set RS = Application.CurrentDb.OpendRecordset ("NomTable",
dbOpenDynaSet)
Où dbOpenDynaSet remplace dbOpenTable.
On ajoute un nouvel enregistrement en réservant une place libre et en
renseignant tous les champs de la table.
RS.AddNew
RS.Fields("NomDuChamp").Value = variable
RS.Fields("NomDuChamp2").Value = variable2
.
.
RS.Update
Où les champs prennent le contenu des variables.
Supprimer un enregistrement :
N.B. : Pour utiliser cette fonction, vous devez avoir utilisé l’instruction
suivante :
Dim RS as recordset
Set RS = Application.CurrentDb.OpendRecordset ("NomTable",
dbOpenDynaSet)
Où dbOpenDynaSet remplace dbOpenTable.
Il faut au préalable pointer sur l’enregistrement à effacer car l’instruction
de suppression supprime l’enregistrement courant.
RS.Edit
RS.Delete
RS.Update
Lexique algorithmique et VBA.doc
page 16 / 16
om (2000-2007)