

Bienvenue dans Access. Le tout-puissant SGBDR* de Microsoft.
* Système de Gestion de Bases de Données Relationnelles
Access est fascinant. Il est à la fois simple et complexe. Il est simple comparé à de puissants programmes de gestion de bases de données comme SQL Server ou Oracle, mais il devient complexe si on le compare à Word et Excel. Microsoft à donc voulu ajouter une pièce maîtresse dans sa suite Office en incluant Access, mais il ne faut donc pas s'imaginer que sa maîtrise viendra aussi vite que Word ou Excel. En fait, vous allez vraiment apprécier Access dans toute sa quintessence quand vous commencerez à vous sentir "A l'étroit" dans Excel.
Données de test : Cette base de données contient quelques tables comme une table des célébrités, avec une centaine de célébrités fictives, une liste de 350 clients, quelques fournisseurs, la liste de tous les pays du monde, les localités de Genève et leur code postal, ainsi que la liste des 24 cantons suisses.
Liste des mots français - Tous les noms communs du dictionnaire, au singulier et au pluriel, et au féminin
Best of Gestion : Un exemple de base de données professionnelle : La gestion d'une menuiserie.
Testez-votre QI - Pour rire bien sûr, mais votre logique sera mise à rude épreuve avec ce petit programme (Access 2000 minimum)
Dictionnaire d'apprentissage d'Esperanto - Une application Access très sympathique qui utilise deux sous formulaires côte à côte
SpeedList - Une application Access qui va vous permettre de faire des check lists pour ne rien oublier, plus jamais
AllowBypassKey - Base de données montrant par la pratique comment désactiver la touche SHIFT (Majuscuile) au démarrage
Vous pouvez développer une application Access 2007, et l'installer sur autant de PC que vous le désirez, gratuitement. Pour ce faire, il vous faut Access 2007 sur votre PC, et télécharger le complément Access RunTime (57Mo).
Access 2007 permet maintenant l'exportation en PDF. Nul besoin d'acheter Acrobat Distiller. Pour ce faire, rendez-vous sur cette page de Microsoft, téléchargez et exécutez le complément. Une fois que c'est fait, lorsque vous êtes dans une base de données, vous avez maintenant dans le ruban "Données externes" une icône "PDF" qui vous permet de créer un PDF à partir de n'importe quel objet Access
Access 2007 : Vous pouvez désormais définir des champs Mémo en format HTML (Propriété "Format du texte" : "Texte enrichi"). Toutefois, si vous mettez des couleurs, du gras, etc. dans ce genre de champ, ça se passera très bien, y compris lors de copier-coller vers Word ou Excel. Par contre, si vous exportez en "Fichier texte", les balises HTML seront visibles. Pour éviter ça, vous créerez une requête basées sur la table à exporter, et au lieu de mettre le champ "Remarque" (Qui serait un champ mémo HTML), vous mettez : Expr1:PlainText([Remarque])
Plus
la jauge est verte, plus c'est facile...
Admettons une table avec 1000 enregistrements, mais lors de la saisie des données, il y a eu des annulations, des affacements. Bref, le NuméroAuto de cette table a des trous. Le dernier enregistrement (le millième exactement) porte par exemple le numéro 1045. Attention : l'astuce présentée ne doit PAS s'effectuer si le champ NuméroAuto de cette table est en relation avec d'autres tables, car ça mélangerait tout. (Access refuserait simplement d'effectuer cette astuce)
1. Supprimez le champ NuméroAuto de cette table
2. Recréez-le
Ce n'est pas plus compliqué que ça.
Vous pouvez, bien entendu, cliquer avec le bouton droit de votre souris sur la table en question, et choisir Propriétés, cocher "Masqué". Mais une autre technique intéressante est simplement de renommer votre table en commençant par USYS. Par exemple Usys_Client. La table sera alors invisible, mais bien réelle. Pour les faire réapparaître, il faudra aller dans le menu Outils/Options, onglet Affichage, cocher "Objets système". Alors que si vous avez opté pour la première technique (Bouton droit/propriétés/Masqué), c'est "Objets masqués" qu'il faudra cocher. Ce préfixe USYS ne fonctionne qu'avec les tables, pas les requêtes, formulaires, etc.
Comment changer la valeur par défaut d'un champ dans une table ?Admettons une table T_Salarie dans laquelle nous avons un champ Salaire, et qu'il s'agisse d'extraire tous les salaires supérieurs à la moyenne des salaires. Dans une requête, écrivez comme critère du salaire :
>MoyDom("[Salaire]";"T_Salarie")
La sécurité au niveau des utilisateurs, des groupes et des objets - Transformez votre base de données en forteresse (Attention : le format Access 2007 n'accepte plus cette fonctionnalité)
VBA : Gestion des utilisateurs et des groupes
Une bonne manière de s'initier à Visual Basic pour Access 2007 : Créez une macro qui contient quelques actions, et pour savoir comment écrire la même chose en Visual Basic, fermez la macro, enregistrez-là, et sélectionnez-là en cliquant une fois dessus (sans l'ouvrir). Dans le ruban, cliquez sur "Outils de base de données", et dans la rubrique "Macro", cliquez sur "Convertir les macros en Visual Basic". La macro, ou le groupe de macros sur lequel vous êtes sera transformée en fonctions VBA.
Les différentes relations possibles entre les tables - Avec et sans intégrité, relations de 1 à plusieurs, ou de 1 à 1
Répéter les titres de section dans un état avec le mot "Suite" si nécessaire - Ou un doigt de Visual Basic pour ajouter cette fonctionnalité bien pratique
Comment nettoyer une table de caractères parasites ?
Lorsque vous saisissez beacoup de données, vous pouvez "riper" sur votre clavier, et taper Du^pont ou Dùpont à la place de Dupont. Créez une requête, et dans cinq lignes de critères, copiez collez ceci :
Comme "*[°§+ç%&/()=`¦@#¬|¢'´~`!{}$£<>\,;.:-_]*"
Comme "*[*]*" Ou Comme "*[[]*" Ou Comme "*]*" Ou Comme '*"*' Ou Comme "*[?]*"
Comme "*[àäâéèêîìôöòóûùúÿñ]*"
Comme "*[0123456789]*"
Comme " *"
Premier Comme : Caractères spéciaux
Deuxième Comme : Caractères tellement spéciaux qu'on doit les écrire de manière particulière
Troisième et quatrième Comme : Caractères accentués et chiffres
Cinquième Comme : Enregistrements commençant par un espace tapé par erreur
Les grands objets d'Access : Explication succinte mais complète des Tables, Requêtes, Formulaires, Etats
Requête suppression basée sur 2 tables - Ce n'est pas si simple, contrairement aux apparences ! Un doigt de SQL et la clause "IN" seront nécessaires
Comment créer une liste déroulante restreinte ? - Par exemple, une fois qu'on a choisit un pays, ne pouvoir sélectionner que les villes de CE pays
Utiliser les fonctions Excel au sein d'Access - Par exemple, la fonction NomPropre n'est pas disponible dans Access. Comment faire pour l'utiliser malgré tout
Les boutons radios et la fonction Choisir - Des boutons radios représentent une alternative esthétique des listes déroulantes. Ils se combinent à merveille avec la fonction Choisir
Comment fermer
Access depuis VBA
Fermer la base en laissant Access ouvert :
Application.CloseCurrentDatabase
Fermer la base et Access
Application.Quit
Choisissez
un dossier avec VBA : Comment sélectionner un dossier particulier
de votre ordinateur ou de votre réseau local.
Consultez
également cette page qui montre des exemple nettement plus simple
avec Application.FileDialog
Les
limites/performance d'Access : Limites de tailles des différents composants
(Bases de données, tables, requêtes, objets, Formulaires, états, macros)
La fonction SysCmd permet de retrouver d'intéressantes informations
:
Debug.Print SysCmd(acSysCmdAccessDir)
' Le dossier qui contient MSAccess.EXE
Debug.Print SysCmd(acSysCmdAccessVer)
' La version d'Access utilisée
Debug.Print SysCmd(acSysCmdGetWorkgroupFile)
' Le fichier de groupe de sécurité MDW utilisé
Installation
d'Access 2003 : Vous avez un gros message d'erreur à l'ouverture vous
enjoignant d'installer le Service Pack le plus récent pour Microsoft
Jet. Voici
ce que
dit Microsoft à ce propos
Les
différences entre Access 2000 et Access 2003
Comment
additionner des heures dont le total excède 24 heures ?
Requêtes
: l'opérateur Comme
Base
de données MDB endommagée ? Essayez
ceci ... (Je n'ai pas testé)
Quelques idées de ce qu'il est possible d'écrire dans la colonne
"Si" d'une Macro :
[Ville]="Paris"
CpteDom("[RéfCommande]", "Commandes")>35
CpteDom("*", " Détails Commandes ", "[RéfCommande]=Forms![Commandes]![RéfCommande]")>3
[DateEnvoi] Entre #2-Fév-2006# Et #2-Mar-2006#
Forms![Produits]![UnitésEnStock]<5
EstNull([Prénom])
[Pays/Région]="Royaume-Uni" And Forms![Total des ventes]![Commandes
cumulées]>100
[Pays/région] In ("France", "Italie", "Espagne")
And Len([Code Postal])<>5
BoîteMsg ("Confirmer modifications ?" ,1) = 1
[TempVars]![MsgBoxResult]=2
Source : Microsoft
Programmation
: Accédez à Outlook, et envoyez un E-Mail à vos contacts
qui se trouvent dans une table
Programmation
: Comment importer toutes les feuilles d'un classeur en une seule opération
Programmation
avec ADO - ActiveX Data Objects : Seulement pour programmeurs VBA expérimentés
Les
commutateurs de démarrage Access
Comment
retrouver un mot de passe perdu sous Access ?
Accès à des champs de sous-formulaire : Soit un sous-formulaire nommé SFCommande avec un champ DateCommande :
MsgBox [SFCommande].[Form]![DateCommande]
MsgBox [SFCommande].Form("DateCommande")
MsgBox SFCommand.Form("DateCommande")
MsgBox Forms![F_Principal]![SFCommande].Form![DateCommande]
Créez
vos menus contextuels personnalisés
Les raccourcis-clavier
Utilisation
d'une table-système (Exemple : Compter le nombre de fois
qu'une base de données a été ouverte)
Jongler
avec différentes version d'Access
Lorsque
vous avez de graves problèmes-système avec votre base de données
Comment changer le mot de passe de plusieurs bases de données en même temps ?
Il faut que vous vous trouviez dans une autre base de données, qui n'a pas besoin d'avoir son mot de passe changé (On ne peut pas changer le mot de passe d'une base de données ouverte). Dans VBA, vous allez dans Outils/Références/ cochez : "Microsoft ActiveX Data Objects 2.1 Library"
Essayez ce code :
Sub ChangerMotDePasse()
Dim objConn As ADODB.Connection
Set objConn = New ADODB.Connection
objConn.Mode = adModeShareExclusive
objConn.Provider = "Microsoft.Jet.OLEDB.4.0"
objConn.Properties("Jet OLEDB:Database Password") = "ancien"
objConn.Open "Data Source=D:\Mes
documents\Compta.mdb"
objConn.Execute "ALTER DATABASE PASSWORD [nouveau]
[ancien]"
objConn.Close
Set objConn = Nothing
End Sub
Créez
vos listes déroulantes
Plus
de puissance avec les listes déroulantes
C'est
quoi, une clé primaire ?
Lorsqu'on définit un champ "Null interdit : Oui", il est donc
obligatoire de renseigner ce champ. Or, quand l'utilisateur est dans un formulaire,
il ne voit pas quels sont les champs à remplir obligatoirement, à
moins que vous mettiez un petit texte "Champ obligatoire" a proximité.
Une méthode plus élégante consiste à écrire
en rouge "(obligatoire)" directement
dans le champ. Lorsque l'utilisateur clique dedans, ce texte disparait aussitôt.
Pour ce faire, dans la propriété "Format" de ce champ,
écrivez :
@;[Rouge]"(Obligatoire)"
Et voilà...
Ca
sert à quoi, les requêtes UNION ?
Comment
faire commencer le NuméroAuto par autre chose que par 1 ?
Etats
: Comment gérer des champs trops larges ?
Access Monster - Un énorme
site consacré à Access, en anglais
Tout plein de liens externes
concernant Access
Chez Stucki
: Un excellent site de trucs et astuces Access avancés et très
utiles
SQL
- Syntaxe avancée en détail
Liste
de toutes les fonctions Access
Tables : Réinitialiser le numéro automatique, diverses
astuces
Tables liées - Retrouver le chemin et le fichier d'ou elles sont
issues
Requêtes : Action (mise à jour, suppression, création
de table), Regroupement, paramètres, champs calculés, union, à tables multiples,
premières valeurs, relations, requêtes imbriquées, analyse croisée, Create Table
SQL : Utilisation et explication de SQL, Innenr Join,
Inner Join imbriqués, DistinctRow, Top, Appel SQL depuis VBA comparaison avec
les requêtes faites avec le QBE (Query By Example)
Graphiques : Dans les formulaires
Formulaires : Extrait du fichier : Gestion
de la dimension, événements, plusieurs instances, verrouillage d'enregistrements,
listes modifiables, sous-formulaires, clavier, événement ToucheAppuyée, barre
d'état, jauge de progression, FindRecord (trouver un enregistrement), filtre,
cancelEvent, Control
Etats : Cumul, Dessin de lignes, Regroupement, Evénement
AuFormatage, Colonnes, Ouverture en VBA en mode création, Ecriture de texte
dynamiquement, Numérotation des lignes, Utilisation avancée
Macros : Fonctionnement, Conditions, Sous-Macros,
Interaction avec VBA, macros automatiques AutoExec et AutoKeys
ATTENTION : La bibliothèque DAO 3.6 reconnaît les fichiers MDB, mais pas les fichiers ACCDB (Access 2007)
DAO : Référence complète et
exhaustive des méthotes et propriétés
DAO : (Data Access Object) - sauf
les RecordSets - Versions de Jet, Création d'objets (Tables, utilisateurs, Bases
de données, propriétés, formulaires, EventProcedure), Notion de collection,
For Each, Count, Object, Workspace, DBEngine, Traitement des requêtes, Refresh,
With, Objets par défaut...
DAO : Recordsets : RecordSetClone, FindFirst,
CurrentDb, OpenDataBase, MoveFirst, Dynaset, Snapshot, EOF, Edit, Update, AddNew,
GetRows, Index, Seek, NoMatch, Delete, Close...
ADO - ActiveX Data Object : la nouvelle alternative de
Microsoft remplaçant DAO pour les accès aux données
Création de fonctions,
procédures et types personnalisés - Exemple simple, Paramètres optionnels,
préservation des variables, nombre variable d'arguments, Call, Types
Fonctions existantes
dans Access : Tableaux, Conversion, Dates et heures, Regroupement de domaine,
Financières, Inspection (IsNuméric, IsDate, ..., ), mathématiques, Iif, Switch,
Traitement de textes, Retours des fonctions, Explications et astuces
Fonctions personnalisées
prêtes à l'emploi Récupérer le nom de l'ordinateur, de l'utilisateur,
Déterminer la langue d'Access, Chercher le dernier jour du mois, Qui fait partie
de quel groupe (sécurité), Transformer un montant en toutes lettres, calculer
un barême horaire, arrondissement à 5 centimes, calcul d'un montant sans TVA,
etc.
DDE : Les liaisons DDE (Dynamic
Data Exchange), principalement avec Word et Excel : DEPUIS ACCESS :
Insérer du texte dans Word, Ajouter une feuille dans Excel, Exploitation d'une
fonction Excel,
Débuggage : Débuggage Express,
Raccourcis Clavier, Points d'arrêts, Visualisation des variables
Fichiers et dossiers
: accès en Lecture/écriture à un fichier texte, Dir, EOF, BOF,
FileAttr, FreeFile, Input, Seek, ChDir, MKDIR, Kill, Input, Write, Print, ...
ActiveX : (Principalement CommonDialog)
Utilisation et importation, Common Dialog, RTF, InitDir, ShowOpen...
API : Comportement et utilisation,
DLL les plus usités, marche à suivre, Exemple simple, Analyse détaillée,
Fonctions API intéressante : GetTickCount, mciExecute, sndPlaySound, GetWiindowsDirectory,
GetComputerName, GetUserName...
OLE : (Object Linking and Embedding)
- Liaison et incorporation d'objets divers par VBA, insertion de feuilles
Excel
Assistant : Programmation
de l'assistant Office : Exemple
Visual Basic : Déclaration
de variables et de tableaux : Dim, General/Declaration, Tableaux dynamiques,
Taille des types
Visual Basic : Opérations
globales sur les objets d'Access : Ouverture-Fermeture de formulaires,
d'états, Recherche d'un enregistrement dans un formulaire, Importation de fichier
texte dans une table
Visual Basic : Utilisation
de mots-clé de base : Do, Until, Loop, For, Next
Visual Basic : Remarques
générales : Variables système, Opérateurs mathématiques et logiques,
Echo, Option Explicit, F5, Collection personnalisée, Exécution d'un menu, Case
Sensitive, Scinder le code en 2 lignes, Guillemets entre guillements, Msgbox,
InputBox, Dsum, Dcount, Variables-Objets, Types de données...
Progiciel : Conseils
pour la finalisation d'une base de données destinées à être distribuées au grand
public, Barres d'outils et menus personnalisés, Menus contextuels, Fonctions
personnalisées, .MDE, Options de démarrage, Kit de développement, Compactage
et réparation automatique
Compléments : Utilisation des compléments
Access, et Compléments personnalisés (.MDA), Gestionnaire, Analyseur, Attaches,
Importation,
Configuration nécessaire à Access : Installation
d'Office, Matériel, Logiciel, Réseau, Espace disque, Composants optionnels
Conseils personnels : Normalisation des
noms de tables, de champs, d'objets, Abréviations, Création d'une base de données
classique, Marche à suivre
Les fichiers d'aide (.HLP). Je m'appuie sur
ForeHelp (logiciel indépendant d'Access)
Formats d'affichage complexes : Multi-Format selon
la valeur, Dates, Texte, Valeur vide, format en couleur
Généralités globales d'Access (notamment le paramètre
Command), Compactage, réparation, Lancement d'Access, Rendre un objet
invisible...
Internet : Interaction Access avec Internet
: Liens hypertexte, Télécommander un moteur de recherche, Envoyer par E-Mail
.LDB : (Log Data Base) Utilité et accès : accès par
VBA
Menus et barres d'outils : Création et
utilisation de menus et barres d'outils personnalisées
Réplication : Théorie, Utilité, fonctionnement,
marche à suivre, gestion des conflits, Réplica-Maître : Création, récupération,
cas pratique, Multi-Réplicas, Gestion des clés primaires, Réplica créé depuis
un réplica, Réplication partielle, Réplication par DAO...
Ressources systèmes : Fichiers attachés
à Access, base de registres, Tables systèmes, Accès par DAO, System.MDA, Utility.MDA,
Wzbldr.MDA, Wzfrmrpt,.MDA, Wzlib.MDA, Wvquery.MDA, WzTable.MDA, Msacc2.ini,
Install.stf
Sécurité : Les utilisateurs, les groupes,
les groupes de travail .MDW (notamment System.MDW), premières démarches,
l'administrateur, Codage/Décodage, Mots de passe, Propriétaires (Par défaut,
Engine, Inconnu), Utilisateurs et groupes prédéfinis, Invités, Sécurité absolue,
Sécurité par DAO...
Réseau local : Utilisation d'Access en réseau
local, Intervalle d'actualisation
Utilisation de l'utilisateur courant et du
domaine courant Windows NT
Le code suivant remplit une table qui doit être existante (T_TableChamp, pourvue des champs texte NomTable et NomChamp) avec les noms de tous les champs de toutes les tables de la base de données courante :
Sub StatistiqueTableChamps()
Dim MaTable As New ADODB.Recordset
MaTable.Open "T_TableChamp", CurrentProject.Connection,
adOpenDynamic, adLockOptimistic
For Ctr = 0 To CurrentDb.tabledefs.Count - 1
If Left(CurrentDb.tabledefs(Ctr).Name, 4) <> "MSYS"
Then
For C2 = 0 To CurrentDb.tabledefs(Ctr).Fields.Count
- 1
MaTable.AddNew
MaTable("NomTable")
= CurrentDb.tabledefs(Ctr).Name
MaTable("NomChamp")
= CurrentDb.tabledefs(Ctr).Fields(C2).Name
MaTable.Update
Next
End If
Next
MaTable.Close
Set MaTable = Nothing
End Sub
Afin d'éviter les apostrophes (') et les guillemets(") dans les champs, car ces deux caractères donnent bien du fil à retordre dans les filtres crées avec VBA, voici un bout de code tout bête qui permet de remplacer les apostrophes par des accents graves (´) et les guillemets par un double accent grave (´´). Vous allez sur l'événement "perte focus" (Lost focus) du champ qui vous intéresse :
Private Sub LeChamp_LostFocus()
LeChamp = Replace(LeChamp, "'", "´")
LeChamp = Replace(LeChamp, """",
"´´")
End Sub
La même chose, mais juste avant qu'on enregistre les données, tous les champs en texte (A l'exclusion des listes déroulantes et autres) seront transformés :
Private Sub Form_BeforeUpdate(Cancel
As Integer)
On Error Resume Next
For ctr = 0 To Me.Controls.Count - 1
If Me.Controls(ctr).ControlType = 109 Then
Me.Controls(ctr).Value = Replace(Me.Controls(ctr).Value,
"'", "´")
Me.Controls(ctr).Value = Replace(Me.Controls(ctr).Value,
"""", "´´")
End If
Next
End Sub
Un excellent site de trucs et astuces Access | Liste des bugs connus sous Access
Office Systeème Access - Utilisation d'ActiveX, mais aussi des tonnes d'astuces avancées
Glossaire | Testez vos connaissances | Un autre excellent site
Si vous-même êtes formateur Access, voici une liste non exhaustive de chapitres à traiter lors de cours donnés à des débutants