Liste des principaux codes VBA que j’utilise sur Access

Liste des principaux codes VBA que j’utilise sur Access

Tutoriel réalisé avec Access 2016

Lorsque vous créez une macro sur Access, vous n’avez pas sa « version » en langage VBA et si vous souhaitez incorporer cette macro à une autre action via le même évènement, créer une boucle ou autre, cela peut être problématique.

Dans ce tutoriel, je vais donc lister les principaux codes VBA que j’utilise lorsque je crée des boutons et ne souhaite pas garder son action en tant que macro. Ces codes sont bien sûr à utiliser dans une procédure (sur clic d’un bouton par exemple).

 

Code VBA pour ajouter un enregistrement :

DoCmd.GoToRecord , , acNewRec

 

Code VBA pour se placer sur le premier enregistrement d’un formulaire :

DoCmd.GoToRecord , , acFirst

 

Code VBA pour se placer sur le dernier enregistrement d’un formulaire :

DoCmd.GoToRecord , , acLast

 

Code VBA pour sauvegarder l’enregistrement en cours :

DoCmd.RunCommand acCmdSaveRecord

 

Code VBA pour supprimer un enregistrement :

DoCmd.RunCommand acCmdDeleteRecord

 

Code VBA pour fermer le formulaire en cours :

DoCmd.Close

 

Code VBA pour fermer un formulaire spécifique :

DoCmd.Close acForm, "(nom du formulaire)"

Exemple : DoCmd.Close acForm, "F_Clients"

 

Code VBA pour rafraîchir les données d’un formulaire ou actualiser un enregistrement :

J’utilise ce code principalement lorsque je reviens sur un formulaire. Par exemple, si je modifie une facture pour indiquer qu’elle est réglée et que je reviens sur mon formulaire d’accueil où je liste les factures non réglées, cela me permet d’actualiser ma liste et de ne plus voir apparaître cette facture.

Me.Refresh (sur activation du formulaire dans ce cas)

On peut aussi utiliser (nom du contrôle).Refresh ou Me.Requery ou (nom du contrôle).Requery (à voir lequel fonctionne dans votre cas de figure)

 

Code VBA pour ouvrir un formulaire :

DoCmd.OpenForm "(nom du formulaire)"

Exemple : DoCmd.OpenForm "F_Factures"

 

Code VBA pour ouvrir un formulaire sur un enregistrement spécifique :

DoCmd.OpenForm "(nom du formulaire)", , , "[(numéro unique indiqué dans le formulaire de départ)] = " & numéro unique indiqué dans le formulaire d’arrivée

Exemple : DoCmd.OpenForm "F_Clients", , , "[ID_Client] = " & ID_Client

 

Code VBA pour se déplacer sur un onglet spécifique d’un formulaire :

Ce code peut être combiné au précédent lorsque vous créez une navigation par onglets.
Forms![(nom du formulaire)]!(nom du groupe d’onglets).Value = (numéro de l’onglet)
Exemple : Forms![F_Clients]!Navigation.Value = 1 (dans ce cas, je vais sur le 2e onglet, car cela commence à 0)

 

Code VBA pour ouvrir un état :

DoCmd.OpenReport "(nom de l’état) ", acViewPreview (pour afficher avant impression ou acViewReport pour l’afficher en Mode État Bouton Mode État ou acViewNormal pour imprimer l’état)

Exemple : DoCmd.OpenReport "E_Factures", acViewPreview

 

Code VBA pour ouvrir un état sur un enregistrement spécifique depuis un formulaire :

DoCmd.OpenReport "(nom de l’état)", acViewPreview, , "(numéro unique indiqué sur l’état)=" & (numéro unique indiqué sur le formulaire)

Exemple : DoCmd.OpenReport "E_Factures", acViewPreview, , "ID_Facture=" & ID_Facture

Les numéros uniques n’ont pas besoin d’apparaître, car il s’agit la plupart du temps d’un Numéroauto, mais ils doivent être dans la source du formulaire et de l’état.

 

Code VBA pour annuler les messages d’alerte :

Ce code vous évite d’avoir les messages d’avertissements qu’Access affiche selon l’action effectuée (une requête d’ajout par exemple). Cependant, il est à utiliser avec précaution, car le retour en arrière ne sera pas possible.

Code VBA à placer en début de procédure : DoCmd.SetWarnings False

Code VBA à placer en fin de procédure : DoCmd.SetWarnings True

 

Téléchargez « Liste des principaux codes VBA que j’utilise sur Access » au format PDF

Newsletter

9 réactions au sujet de « Liste des principaux codes VBA que j’utilise sur Access »

  1. Bonjour,
    Permettez-moi de vous remercier tout d’abord pour la qualité de vos tutoriels.

    J’essaye actuellement de créer une plateforme de gestion sur Access, j’ai créé un formulaire qui contient une zone de liste (un sous-formulaire) liée à une table permettant d’afficher tous les enregistrements. Parmi les champs de la table, j’ai les champs « BANQUE » et « MONTANT ».

    Au-dessus de cette zone de liste, j’ai écrit « veuillez sélectionner une banque » et, juste devant ça, j’ai inséré une liste déroulante qui me permet de choisir l’une des banques.

    Juste à côté, j’ai trois zones de texte. La première nommée « plafond autorisé », elle m’affiche le plafond correspondant à la banque sélectionnée dans la liste déroulante. La deuxième pour calculer la somme des montants utilisés de la liste déroulante et la troisième pour le reliquat entre le plafond et les montants.

    Le premier problème que j’ai est que je veux créer un lien entre la première liste déroulante et la deuxième. Si je choisis une banque, la deuxième se filtre et m’affiche que les enregistrements contenant le champ de cette banque, ainsi la zone de texte2 affiche la somme des montants après le filtre et le reliquat est automatiquement calculé.

    Le deuxième c’est que je veux qu’à chaque fois que je clique sur l’un des enregistrements, il m’affiche le détail qui lui correspond et comme ça je peux faire des suppressions, impressions ou ajouts qui impactent le montant calculé sous forme de somme dans la liste déroulante de synthèse.
    Je vous prie de bien vouloir me donner un coup de main dans ce sens, vraiment c’est très urgent.

    Mes remerciements.

    1. Bonjour,

      Je pense que vous faites une confusion entre une zone de liste et sous-formulaire : ils n’ont rien à voir l’un et l’autre (l’une est un contrôle et l’autre un formulaire imbriqué).
      Pour avoir le plafond correspondant à la banque, je vous invite à suivre la partie du tutoriel sur la création de factures Access où j’indique comment afficher le prix unitaire correspondant à un produit.
      Si c’est bien un sous-formulaire que vous avez créé, votre deuxième problème est censé être réglé de lui-même puisque c’est son fonctionnement normal.

  2. Bonjour,

    Je vous prie de me donner un coup de main, je suis débutante en Access, bref, j’ai un fichier sur Excel portant les relevés bancaires avec les colonnes suivantes (Date/Libellé/Débit/Crédit/N°compte).

    Mon objectif est de créer sur Access une application pour la gestion budgétaire des projets, vu que je n’ai pas de temps pour consulter le relevé à chaque fois et faire un pointage des opérations, je cherche à automatiser les choses, je vous donne un exemple :
    Dans le libellé, s’il y a un encaissement constaté (Débit), je veux qu’on me cherche le n° de marché dans le libellé et le N° de l’attachement de ce marché. Pourtant, les libellés peuvent changer, parfois on trouve ASMN M2434 DC2 (dans ce cas, Marché 2434 attachement N°2), parfois, prêt emprunt…le cas échéant est la première forme.

    J’ai pensé à ajouter deux colonnes sur le tableau Excel : la 1ère pour me chercher quel marché et la deuxième quel attachement. Pourtant, je ne sais pas comment le faire tout d’abord sur Excel (j’ai essayé avec la formule stxt et cherch, mais il y a des cas où il me renvoie toute une chaîne de lettre donc ce n’est pas efficace, je cherche une autre solution) et, deuxièmement, c’est comment exploiter ces données sur Access d’une façon à avoir une situation financière globale à jour qui regroupe les différents projets et, sous le détail de chacun, on aura des infos sur les attachements, combien y a-t-il de remboursements, le reliquat, PJ (et s’il y a une possibilité d’avoir une notification qui s’affiche sur l’écran du bureau qui informe qu’un nouvel encaissement est constaté d’un montant de … Marché N°…).

    Je vous remercie d’avance.

    1. Bonjour,

      Pour rechercher une valeur dans une cellule, il faut combiner des fonctions comme Gauche, Droite, Cherche et Nbcar. Tout dépend de la syntaxe de la cellule et du résultat attendu.
      Ensuite, vous pouvez importer vos données Excel sur Access avec la fonction d’importation.
      Vous ne pourrez pas avoir une notification sur le bureau, mais vous pouvez vous créer un formulaire sur un menu d’accueil basé sur une requête avec les résultats que vous souhaitez.

  3. Bonjour,
    Je voudrais savoir comment empêcher un formulaire Access d’occuper tout l’espace-écran à son exécution. J’aurai aimé qu’il garde les dimensions que je lui ai données à la conception.
    Merci d’avance.

  4. Merci pour la promptitude, mais je n’ai pas trouvé « Fenêtre contextuelle » dans la liste des propriétés.
    J’utilise Access 2010 à toutes fins utiles.
    Merci à vous.

  5. Dans cet onglet, il y a fenêtre indépendante et fenêtre modale comme propriétés, mais pas de fenêtre contextuelle.
    Et fenêtre indépendante règle justement le problème.
    Merci Madame !!!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

CAPTCHA
Change the CAPTCHA codeSpeak the CAPTCHA code