MS ACCESS et CHATGPT

Puisque c’est la mode de ChatGpt et qu’on peut, au premier contact, lui faire dire ce que l’on veut, j’ai tenté une expérience sur le thème :

MS ACCESS est-il une base de données ?

Et voici l’échange avec ChatGpt :

User
Est-ce que Microsoft Access est une base de données ?
ChatGPT
Oui, Microsoft Access est une application de gestion de base de données relationnelle. Elle fait partie de la suite Microsoft Office et offre un environnement convivial permettant aux utilisateurs de créer, gérer et interroger des bases de données. Access utilise le modèle de base de données relationnelle, où les données sont organisées en tables, et les relations entre ces tables peuvent être définies pour permettre des liens logiques entre les différentes parties de la base de données. Bien que Microsoft Access soit utilisé pour des applications de base de données plus petites ou moins complexes, il peut être une solution pratique pour les utilisateurs qui ont des besoins de gestion de données sans nécessiter une infrastructure de base de données plus robuste.(ChatGpt 3.5 – le 26/01/2024)

La fin est absolument vrai. Ceux qui n’ont pas besoin d’une application robuste et n’ont pas de budget pour une infrastructure, Ms Access reste une bonne solution.

Mais vous pensez bien que cette réponse, plutôt réservée aux néophytes ou aux détracteurs de MS Access ne m’a pas convaincu. J’ai donc poussé plus loin l’expérience.

Ms Access n’est pas qu’une base de données

User
Non MS Access n’est pas une base de données.
ChatGPT
Je comprends que la terminologie peut parfois prêter à confusion. Pour clarifier, Microsoft Access est une application de gestion de base de données relationnelle. Cela signifie qu’Access fournit un environnement pour créer, gérer et interroger des bases de données relationnelles. Les bases de données créées avec Microsoft Access utilisent le modèle relationnel, où les données sont organisées en tables et les relations entre ces tables peuvent être définies.
Cependant, il est vrai que l’on peut parfois entendre des personnes dire que « Microsoft Access n’est pas une base de données » dans le sens où il ne s’agit pas d’un système de gestion de base de données (SGBD) autonome comme MySQL, PostgreSQL, ou Microsoft SQL Server. Access est plutôt une application qui inclut un moteur de base de données intégré.
Donc, selon le contexte, on peut se référer à Microsoft Access comme une application de gestion de base de données ou comme un système de gestion de base de données intégré.(ChatGpt 3.5 – le 26/01/2024)

ChatGPT vient de mettre le doigt sur 2 affirmations qui sont vrais :

  1. Le moteur ACE n’est pas autonome comme MySql, Oracle et autre.
  2. Ms Access inclus un moteur de base de données (ACE).

Rapid Application Development le RAD de Microsoft

Je décide donc d’aller plus loin dans la démonstration et de rentrer un peu plus dans le fond du problème.

User
Mais on peut utiliser MS Access sans se servir de ACE, donc ce n’est pas une base de données mais plutôt un RAD.
ChatGPT
Vous avez raison de souligner que Microsoft Access est souvent utilisé comme un outil de développement rapide d’applications (RAD – Rapid Application Development) plutôt que simplement comme un système de gestion de base de données (SGBD) autonome. Microsoft Access combine un moteur de base de données intégré (Microsoft Jet Database Engine ou ACE Database Engine) avec un environnement de développement qui permet aux utilisateurs de créer rapidement des applications liées à des bases de données.
Dans ce contexte, on peut considérer Microsoft Access comme un outil RAD qui offre une interface conviviale pour créer des applications associées à des bases de données, plutôt qu’un SGBD autonome. L’utilisation de l’ACE Database Engine permet à Access de gérer les données de manière relationnelle.
Il est important de noter que, bien que Microsoft Access puisse être utilisé pour le développement rapide d’applications, il a ses limites en termes de performances et d’évolutivité, ce qui le rend plus adapté à des applications de taille moyenne ou à des tâches spécifiques plutôt qu’à des solutions d’entreprise massives. Pour des applications plus complexes ou des volumes de données importants, des SGBD autonomes peuvent être préférables.(ChatGpt 3.5 – le 26/01/2024)


ChatGPT indique bien que MS Access, utilisé sans son composant ACE (le SGBDR tant décrié), est un RAD.

Ms Access et les applications Massives

Je décide de pousser ChatGPT un peu plus loin sur le thème des applications dites « massives ».

User
Ms Access peut utiliser des SGBD autonomes, il peut donc répondre à une demande d’application massive.
ChatGPT
Vous avez raison. Microsoft Access offre également la possibilité d’utiliser des sources de données externes, y compris des systèmes de gestion de base de données (SGBD) autonomes tels que Microsoft SQL Server, MySQL, ou Oracle. Cela permet d’accéder à des bases de données plus robustes et adaptées à des charges de travail plus importantes.
En utilisant Access comme interface frontale, vous pouvez développer des applications qui exploitent la puissance de SGBD autonomes pour gérer des volumes de données plus importants et offrir des performances optimisées. Cela peut rendre Access plus adapté à des applications plus massives, en tirant parti de la robustesse des SGBD sous-jacents tout en profitant de l’interface de développement rapide d’applications qu’Access offre.
Il est important de choisir la solution en fonction des besoins spécifiques du projet, de la complexité de l’application, des volumes de données anticipés et des exigences de performances. Utiliser Access comme interface frontale avec un SGBD autonome en backend est une approche courante pour tirer parti des avantages des deux mondes.(ChatGpt 3.5 – le 26/01/2024)

Voilà, nous sommes dans le coeur du sujet. Ms Access en frontal peut être utilisé pour répondre à des besoins d’applications massives. Pour moi ce n’est pas nouveau, cela fait plusieurs années que j’ai fait le choix technique d’utiliser Ms Access comme un RAD pour le Front-end et un SGBDR autonome (MySql, Sql Server, Oracle) pour le Back-end.

ChatGPT, Ms Access et le méchant humain

Mais comme je suis un peu obstiné, certains pourraient utiliser le vocable « chiant ». Je poursuis la discussion, car c’est bien d’une discussion qu’il s’agit.

User
En fait tu ne sais pas trop ce que raconte, tu dis tout et son contraire.
ChatGPT
Je m’excuse si mes réponses ont pu sembler contradictoires ou confuses. Permettez-moi de clarifier : Microsoft Access est un outil de gestion de base de données relationnelle qui combine un moteur de base de données intégré avec un environnement de développement. Vous pouvez utiliser Access de différentes manières, que ce soit en tant que système autonome avec son propre moteur de base de données (Jet Database Engine ou ACE Database Engine) ou en connectant Access à des SGBD autonomes externes tels que Microsoft SQL Server.
Cependant, il est important de noter que bien que Microsoft Access puisse être utilisé pour des applications de différentes tailles, il peut avoir des limitations en termes de performances et d’évolutivité par rapport à des SGBD autonomes plus puissants. Pour des applications massives et complexes, il peut être recommandé d’utiliser directement un SGBD autonome.
Encore une fois, je m’excuse pour toute confusion, et j’espère que cela clarifie la situation. Si vous avez des questions plus spécifiques ou des préoccupations, n’hésitez pas à les partager.(ChatGpt 3.5 – le 26/01/2024)

J’avoue que même si je m’adresse à une machine, le fond et la forme de mon affirmation ne sont pas du tout adaptés. J’en suis profondément désolé et m’en excuse. Mais cela permet cependant de voir les comportements intéressants suivants :

  1. ChatGPT a une capacité de synthèse.
  2. ChatGPT sait se remettre en question.
  3. ChatGPT sait s’excuser.
  4. ChatGPT ne semble pas apprendre des prompts.

Les trois premiers points sont vraiment peu courant chez les humains.

Frontend ou Backend là est la question

Je poursuis donc l’expérience pour tenter de lui en faire dire plus.

User
peut-on utiliser MS access en frontal avec un SGBD autonome pour des applications massives ?
ChatGPT
L’utilisation de Microsoft Access en tant qu’interface frontale avec un SGBD autonome en tant que backend est techniquement possible, et cela peut être une approche viable pour certaines applications, y compris celles qui peuvent être considérées comme massives. Cela permet de tirer parti de la convivialité de l’interface de développement rapide d’applications d’Access tout en utilisant un SGBD plus robuste pour stocker et gérer les données.
Voici quelques points à considérer :
Taille et complexité de l’application : Pour des applications massives avec des volumes de données importants et une complexité élevée, il peut être plus approprié d’envisager des SGBD autonomes tels que Microsoft SQL Server, Oracle, ou d’autres solutions.
Performances : Access peut avoir des limitations en termes de performances par rapport à des SGBD autonomes, surtout lorsque la taille des données ou le nombre d’utilisateurs simultanés augmente. Il est important d’évaluer les exigences de performances de votre application.
Sécurité : Lorsque vous utilisez Access avec un SGBD externe, assurez-vous de mettre en place des mécanismes appropriés de sécurité et d’accès aux données pour garantir l’intégrité et la confidentialité.
Évolutivité : Si vous prévoyez une croissance importante de votre application, il est essentiel d’évaluer la capacité d’évolutivité de votre solution. Certains SGBD autonomes offrent de meilleures capacités d’évolutivité que d’autres.
Maintenance : La maintenance d’une application dépend de la complexité de la solution. L’utilisation de SGBD autonomes peut parfois nécessiter des compétences techniques plus avancées pour la gestion et la maintenance.
En résumé, l’utilisation de Microsoft Access en tant qu’interface frontale avec un SGBD autonome en backend peut être une option, mais cela dépend des besoins spécifiques de votre application. Il est recommandé d’évaluer attentivement les caractéristiques et les exigences de votre projet avant de prendre une décision.(ChatGpt 3.5 – le 26/01/2024)


Conclusion

Pour moi ChatGPT s’avère être un bon outil… utilisé dans des mains compétentes. S’attacher à sa première réponse, et je l’ai déjà constaté sur des essais précédents, est loin d’être pertinent, il s’avère dans la majorité des cas comme contre-productif.
Donc n’hésitez pas à creuser, à le contredire et à aller dans les détails (chercher la petite bête). A moins que vous ne poursuiviez le but d’obtenir une réponse partiale, un consensus ou une réponse rapide sans autre forme de procès.

Pour finir voici la copie d’écran de la discussion.

VBA : La recherche et les accents en SQL et VBA.

Rechercher dans une base de données avec l’opérateur Like est assez trivial. Avec quelques jokers on arrive à retrouver ce que l’on souhaite. Cependant lorsque on a affaire à des contenus ayant des caractères accentués il est difficile de récupérer à la fois ceux qui en comporte et ceux qui n’en ont pas.

L’objet de ce billet est d’utiliser VBA pour contourner ce problème.

La première chose à faire est de créer une fonction qui va traiter le mot recherché.

Function ConvertAccForLike(strValue As String) As String
' Fabrice Constans (MVP ACCESS) mars 2016
If InStr(1, strValue, "a") > 0 Then
    strValue = Replace(strValue, "a", "[aàâä]")
End If
If InStr(1, strValue, "e") > 0 Then
    strValue = Replace(strValue, "e", "[eéèêë]")
End If
If InStr(1, strValue, "i") > 0 Then
    strValue = Replace(strValue, "i", "[iîï]")
End If
If InStr(1, strValue, "o") > 0 Then
    strValue = Replace(strValue, "o", "[oôö]")
End If
If InStr(1, strValue, "u") > 0 Then
    strValue = Replace(strValue, "u", "[uùûü]")
End If
ConvertAccForLike = strValue
End Function

Dans cette fonction, on recherche la présence des voyelles, une à une, en commençant par le a, ensuite le e, puis le i, etc. Chaque fois que la voyelle est détectée on la remplace par la syntaxe Contient de l’opérateur Like, soit […]

Pour le mot « eleve », la valeur renvoyée sera :

"[eéèêë]l[eéèêë]v[eéèêë]"

Les mots trouvés seront :

eleve, éleve, élève, élevé…

Vous pouvez l’utiliser directement dans objet requête, une source de formulaire, une clause Where d’un OpenForm ou OpenReport comme dans une requête en VBA.

Voici son utilisation :

SELECT * FROM matable WHERE champ1 LIKE convertAccForLike("eleve");

Évidemment vous pouvez compléter avec les autres jokers.

SELECT * FROM matable WHERE champ1 LIKE convertAccForLike("eleve?");

Dans ce cas la valeur renvoyée sera :

"[eéèêë]l[eéèêë]v[eéèêë]?"

Ce bout de code fonctionne avec des tables liées, cependant lorsque vous utilisez d’autres bases de données comme Sql Server, MariaDB, PostgreSql, il vaut mieux travailler directement sur ces dernières pour des raisons évidentes de performance.

N’hésitez pas à laisser un commentaire.

VBA : Bang ou Dot ?

Lorsque vous développez en VBA, êtes-vous plutôt Bang (!) ou plutôt Dot (.) ou mélangez-vous allégrement les deux formes de syntaxe Dang/Bot ?

Pour savoir où vous vous situez, voici un exemple de chaque syntaxe.

'Bang
Forms!monformulaire!maliste

'Dot
Forms.monformulaire.maliste

'Dang ou Bot :)
Forms.monformulaire!macolonne

Le Bang

C’est la syntaxe originelle de VBA quand il apparut pour la première fois sur Ms Access 1.1. On retrouve de nombreux exemples sur Internet et dans des applications anciennes ou développez à grand coup de copier/coller issu du net, et sans surprise dans le code remonté par les IA.

Le Bang a une signification particulière depuis l’apparition du Dot. Prenons par exemple l’objet Recordset de la bibliothèque DAO (Microsoft Office xx.0 Object Library) dans l’Explorateur d’Objets (F2) de VBE.

On voit dans l’Explorateur d’Objets qu’un élément de la classe bénéficie d’une icône particulière et qu’en le sélectionnant il apparait comme Membre par défaut. Le Bang désigne cet objet (ou propriété) implicitement sans pour autant qu’on spécifie sa nature.

Partant du modèle indiquant que Fields est le membre par défaut de Recordset et que Value est le membre par défaut de Field on crée l’exemple de manipulation Bang/Dot suivant :

Sub test()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("select * FROM matable", dbOpenSnapshot)

'renvoi le nom de la colonne Nom
Debug.Print rs!nom.Name  'bang/dot
Debug.Print rs.Fields("nom").Name  'équivalent dot

'renvoi la valeur de la colonne Nom
Debug.Print rs!nom    'bang ou Value est le membre par défaut de Field
Debug.Print rs.Fields("nom")  'dot avec bang implicite
Debug.Print rs.Fields("nom").value  'dot explicite

'provoque une erreur
Debug.Print rs!nom!Name     'bang non maitrisé
Debug.Print rs.Fields("nom")!Name  'dot/bang non maitrisé

rs.Close
Set rs = Nothing

End Sub

Alors pourquoi le Dot ? Quels avantages ?

L’utilisation de Dot, même si elle est plus verbeuse, permet l’affichage de l’autocomplétion à la touche du point (Dot) appuyée.

L’autocomplétion pour ceux qui ne sont pas habitués à l’utilisation des EDI (Environnement de Développement Intégré) sont des listes très utiles qui recenses les propriétés, méthodes et objets des classes invoquées.

Outre sont coté pratique d’aide à la saisie, il y a, pour les plus curieux, un tremplin de découverte et d’exploration de classe.

Le côté verbeux de Dot ne doit pas rebuter le développeur car à première lecture du code et sans forcément connaitre la classe utilisée, il n’y a pas de doute sur ce que le concepteur fait.

Conclusion

Si la forme Dot peut remplacer la forme Bang, il faut être vigilant lors de l’utilisation du Bang et le mélange des deux doit être effectué dans la plus grande connaissance de la classe.

Etes-vous Dot, Bang ou Dang/Bot ?
Si vous voyez du Bang, éprouvez-vous le besoin de le transformer en Dot ?
Donnez moi votre point de vue sur le sujet.

Assistant Excel – Powerpoint

Vous créez souvent des slides Powerpoint à partir d’Excel alors cet assistant est fait pour vous.

L’assistant Graphics Extractor vous permet de créer d’un simple clic des slides Powerpoint à partir de zones contenues dans des feuilles Excel.

Sélectionnez les zones Excel que vous souhaitez inclure dans vos slides.

  1. Sélectionnez votre modèle
  2. Sélectionnez la première page d’insertion
  3. Créer votre balise d’extraction
  4. Sélectionnez vos zones à extraire
  5. Cliquez sur Extraire
  6. Le fichier Powerpoint s’ouvre avec les zones Excel extraites.

Une fois les balises incluses dans le fichier Excel vous pourrez recréer les slides Powerpoint à l’infini, en supprimer ou en ajouter.

Vous pouvez envoyer vos slides sans avoir à joindre le fichier Excel, cela garantie la sécurité et la confidentialité des données.

Le gain de temps est notable.

VBA : IsIn() une fonction d’analyse de paramètres

Cette fonction détermine si la valeur (value) passée appartient à la liste (listvalue).

Public Function isIn(value As Variant, listValue As String, _
                     Optional sep As String = ";") As Boolean
'------------------------------------------------------------------------------------
' Procedure : isIn
' Author    : Fabrice CONSTANS (MVP)
' Date      : 10/08/2023
' Purpose   : renvoi VRAI si value transmise fait partie de la liste listValue
' Parameters: listValue est une liste d'éléments séparés par sep
'             value peut être un élément de la liste listValue
' Return    : Boolean
' Copyright : © L'intégralité du code ci-dessous est la propriété de son auteur (Author)
'             
'------------------------------------------------------------------------------------

    Dim tbl As Variant
    Dim i As Long
    If isNullOuVide(value) Then Exit Function

    tbl = Split(listValue, sep)
    For i = 0 To UBound(tbl)
        If tbl(i) = CStr(value) Then
            isIn = True
            Exit Function
        End If
    Next
End Function

2 paramètres obligatoires :

  • value pour la valeur à chercher
  • listvalue pour la liste des valeurs à explorer

1 paramètre facultatif :

  • sep pour le séparateur de la liste à explorer.

On l’utilise de cette manière avec le séparateur par défaut.

If isIn(1,"2;5;8;6") Then
   Msgbox "1 fait bien parti de la liste
Else
   Msgbox "1 ne fait pas parti de la liste"
Endif

Ou encore en précisant le séparateur.

mavar = 1
maliste = "1|2|3|8|94|100|15|50"

If isIn(mavar, maliste, "|") then
   Msgbox "1 fait bien parti de la liste
Else
   Msgbox "1 ne fait pas parti de la liste"
Endif  
 

Cette fonction peut être modifiée pour traiter le Null. J’ai également créé des variantes avec des Array et ParamArray pour le paramètre listvalue.

Vous utilisez une autre méthode ?
Vous souhaitez échanger sur ce sujet ?
N’hésitez pas à laisser un commentaire.

ACCESS : Protéger une application Access contre la copie est possible

Cela fait plusieurs années que je pensais investir du temps dans ce type de protection pour mes applications Access. Après une bonne réflexion j’ai établi les règles à respecter pour créer une protection efficace et peu contraignante.

Les règles sont les suivantes :

  1. Activer une application avec une licence.
  2. Ne pas pouvoir exécuter une application copiée.
  3. Ne pas utiliser de composants externes.
  4. Que l’intégration à toute nouvelle application soit triviale.
  5. Qu’elle ne perturbe pas les mises à jour de l’application.

Au terme de plusieurs semaines de réflexion, d’études, de recherche, de développement, d’avancées et d’échecs la première application protégée par ce système a été livrée et testée avec succès.

Évidemment pour qu’une protection reste efficace il vaut mieux éviter d’en dévoiler la méthode.
Si vous souhaitez protéger vos applications, que votre entreprise à des carences dans ce domaine, n’hésitez pas franchir le pas, contactez-moi !

Excel n’est pas une base de données.

Combien d’entrepreneurs assurent toutes ou partie de la gestion de leur entreprise avec Excel ?
Combien osent affirmer qu’ils sont dans une impasse après quelques temps d’utilisation ?

Au premier abord c’est génial, bluffant, les résultats rapidement obtenus par un néophyte s’affichent et comparés au temps passé et aux sommes investies l’entrepreneur reste gagnant.
Les problèmes apparaissent à l’utilisation et lors de l’évolution des besoins.

Les carences d’un produit dévoyé ne peuvent être totalement gommées d’un simple agencement de formules ou de code. Le contournement devient alors un véritable casse-tête et ce qui semblait démarrer comme une belle aventure tourne au cauchemar chronophage et fonctionnel.

Un peu comme si vous utilisiez une pompe à vélo pour gonfler la roue de votre voiture.

Cependant il ne faut pas se méprendre, quelques formules entre feuilles ou workbooks ou quelques procédures VBA n’en feront jamais un système de gestion de base de données relationnel.

Voici les erreurs les plus récurrentes observées dans ces solutions empiriques :

  • Duplication de données
  • Absence ou lourdeur des contrôles de saisie
  • Absence d’un langage de traitement de masse
  • Incohérence des chaines de données
  • Limitation de la quantité de données
  • Lenteur généralisée avec des volumes de données moyens
  • Aucune notion de multi-utilisateur

Excel reste le meilleur tableur sur le marché mais ce n’est pas parce qu’on maitrise un produit qu’il est le plus adapté au but recherché.

Si on ne peut pas tenir rigueur de l’entrepreneur néophyte, son seul objectif étant la gestion à meilleur coût, on est en droit de se poser des questions sur l’éthique des « expert » qui conseillent encore Excel pour ce genre de besoin.

comparatif Excel et Base de données

Si après la lecture du comparatif suivant vous n’êtes toujours pas convaincu, n’hésitez pas à exposer vos arguments.

Épingler une application ACCESS sous Windows 7 et supérieur

Épinglez une application Microsoft ACCESS dans la barre de Windows 7 ou 8 et vous constaterez qu’au démarrage c’est Microsoft ACCESS qui se lance… mais pas l’application.

Pour réussir ce tour de force, commencez par créer un simple raccourci vers votre application.

  • Clic-droit sur l’icône de l’application, Créer un raccourci.
  • Faites un clic-droit/propriété/onglet Raccourci
  • Dans la zone Cible rajoutez le chemin et le nom du programme de lancement, en l’occurrence MSACCESS.EXE, avant le chemin et le nom du fichier de votre application.

Suivant la version du système, 32 ou 64 bits et d’office, 32 ou 64 bits, l’emplacement sera différent. Si vous avez des difficulté utilisez la recherche de programme.

Par exemple pour un Windows 64bits et un Office 32 bits, cas le plus fréquent actuellement, vous trouverez ce fichier dans :

C:\Program Files (x86)\Microsoft Office\Office1x\

x correspondant à la version de votre Office, 12 pour 2007, 14 pour 2010, 15 pour 2013 ainsi de suite.

N’oubliez pas les guillemets séparant les 2.

Vous devrez obtenir ceci dans la zone Cible :

"C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE" "X:\chemin vers mon application\application.accdb"

Le plus compliqué est fait, vous n’avez plus qu’à redémarrer votre application via ce raccourci et l’épingler.

Ce billet s’applique à une application Microsoft Access mais également aux autres applications en général.

Cordialement,

VBA : Débogage, les bonnes pratiques (1)

Dans cette série de billets nous allons délivrer des conseils, détailler des techniques et mettre en pratique le débogage au travers d’exemples simples.

Introduction

Le débogage est l’action de suivre le déroulement du code pour en observer le comportement et corriger des problèmes ou bugs. Tout développement passe par cette phase dont la durée varie suivant la maîtrise du langage. La facilité de débogage est proportionnelle à la simplicité du code. Faites un code simple, efficace et vous aurez d’autant plus de facilité à le déboguer.

Qu’est-ce que VBE ?

VBE est l’acronyme de Visual Basic Editor, soit l’éditeur Visual Basic Application commun à tous les produits de la suite Office et autre produit intégrant le langage de programmation VBA. C’est avec lui que nous allons travailler tout au long de ces billets.

On y accède au choix après l’ouverture d’un fichier Access :

  • Avec la combinaison de touches Alt + F11,
  • En ouvrant un nouveau module ou un existant,
  • En ouvrant ou créant un événement du type [Procédure Evènementielle] d’un formulaire/état.
  • Pour les versions récentes via le ruban Créer/ Autre /Menu Macro/ Module ou Module de classe.

Cet éditeur comporte un menu, des barres d’outils ainsi que plusieurs fenêtres.

Nous allons aborder tour à tour chacune d’elles au fur et à mesure de notre besoin.

Premiers réglages : Réduire les risques d’erreurs

Le débogage commence avant l’écriture de la moindre ligne de code. En effet, au-delà de la bonne connaissance du produit il existe quelques précautions à prendre pour limiter le risque d’erreurs de codage. Il faut en premier lieu utiliser les meilleurs réglages de l’éditeur VB (Visual Basic Editeur, VBE).

Les réglages de VBE

Avant de commencer l’écriture de la moindre ligne de code vous devez vous assurer des réglages des options de l’éditeur VB.

Vérification automatique de syntaxe

Cette option est intéressante lorsque vous débutez car elle vous signale les erreurs lors du changement de ligne et vous propose un accès à la rubrique d’aide la plus adéquate pour résoudre le problème.
Dans le cas d’une erreur sur la ligne, la ligne apparait en rouge. Si la vérification automatique de syntaxe est active, le mot clef posant problème est signalé et un message d’erreur s’affiche.

Avec la vérification automatique de syntaxe :

Lorsque le curseur n’est plus sur la ligne comportant l’erreur.

Sans la vérification :

Activée ou non la ligne apparaitra en rouge si elle comporte une erreur, la différence est uniquement sur l’affichage ou non du message.

Lorsque vous faites de la concaténation de texte, comme des requêtes SQL dans le code (les plus intégristes me traiteront d’hérétique), ou de la copie de code cette option peut vite devenir agaçante. Personnellement je désactive cette option.

Déclaration des variables obligatoires

Vivement conseillée en toute circonstance, cette option permet d’ajouter sur tous les nouveaux modules, l’instruction Option Explicit en en-tête. Cela oblige le développeur à déclarer chaque variable avant son utilisation. Vous réduisez ainsi les erreurs liées aux mauvais noms de variables souvent causées par des fautes de frappe.
Très fréquente, cette erreur conduit à un code qui ne plante pas mais qui ne fait pas ce qu’on lui demande. C’est souvent le plus difficile à déboguer.
Si vous avez déjà commencé à coder lorsque vous lisez ces lignes, il n’est pas trop tard pour ajouter cette option dans tous vos modules y compris ceux des formulaires et des états, cependant vous devrez le faire manuellement.
Cette instruction vient immédiatement après Option Compare.

Option Compare Database 
Option Explicit

Notez qu’en l’absence de déclaration, une variable est de type Variant comme une variable déclaré sans type. Le type Variant est  très gourmand en mémoire.

Complément automatique des instructions

Cette option ajoute un confort et une rapidité en mettant à disposition la complétion de code. La complétion, souvent désignée sous le terme d’auto-complétion ou intellisense, se comporte de différentes manières.

1er cas d’utilisation

Lorsque vous saisissez un début d’instruction et que vous appuyez simultanément sur CTRL+Espace  plusieurs cas de figure peuvent se produire.
INFORMATION : Les cas sont ceux rencontrés avec les références standards.

Une seule correspondance

Il n’existe qu’une instruction possible, votre saisie est automatique complétée.
Entrez Doc et CTRL+Espace, le mot clé DoCmd s’affiche.

Plusieurs correspondances possibles

Il existe plusieurs instructions qui répondent à cette saisie. Une liste déroulante s’affiche, l’instruction choisie est celle qui correspond à la saisie.
Entrez Do et CTRL+Espace et la liste s’affiche.

Utilisez les touches de déplacement et la tabulation pour valider ou la souri ou encore compléter le mot clef.
Pour annuler utilisez la touche Echap.

2ème cas d’utilisation

Lorsque vous utilisez le nom d’un objet ou d’une classe et que vous saisissez le point, la même liste déroulante s’ouvre avec les choix possibles pour cet objet.

3ème cas d’utilisation

Dans certains cas, comme la déclaration de variables typées, la complétion entre en action après avoir entré le mot clé AS.

On rencontre aussi ce fonctionnement lorsque l’instruction saisie nécessite un paramètre Enum, La méthode OpenRecordset de DAO en est un parfait exemple. Voir le billet sur les déclarations Enum ici.

Conclusion
Avec la complétion vous n’aurez plus d’excuses pour avoir inventé des noms de méthodes ou propriétés farfelues. Si vous êtes un peu curieux vous pourrez explorer les composants d’un objet, en action avec l’aide vous découvrirez ainsi de nouvelles méthodes et propriétés.

La complétion fonctionne également avec vos bibliothèques de fonctions, procédures et classes ainsi qu’avec les contrôles, propriétés et méthodes des formulaires et états.
La complétion ne fonctionne pas dans les cas suivants :
• Quand il y a une erreur identifiée (ligne en rouge) non corrigée.
• L’objet que vous utilisez n’existe pas (bibliothèque non référencée, nom farfelu…)
• L’objet n’est pas typé précisément (Late Binding) c’est le cas pour Variant et Object par exemple.

Notez que dans ce dernier cas vous pouvez utilisez la méthode « Early Binding » durant la conception, puis le transformer en « Late Binding » par la suite. Cette technique est décrite dans le billet traitant du Binding.

La complétion est donc essentielle pour éviter les fautes de frappe et l’utilisation de propriétés ou méthodes inexistantes mais également dans le perfectionnement de votre apprentissage d’une bibliothèque.

Bon utilisation !