Smart Indenter
Smart Indenter est un petit outil très pratique pour indenter votre code VBA. Ci-dessous un petit test rapide.
- Système d’exploitation : Windows XP / Windows Vista / Windows 7 (32 bits)
- Licence : Freeware
- Version testée : 3.5
- Taille : 260 Ko (version Exe)
- Site officiel : http://www.oaltd.co.uk/Indenter
Le principe
Il y a quelques jours, j’ai hérité d’un ensemble de macros VBA Excel, quelques milliers de lignes dont la structure n’était pas facile à lire, parce que l’indentation du code était un peu… arbitraire ! 🙂 Plutôt que de tout reformater « à la main », il était plus simple de chercher un outil adapté. Parmi ceux-là : Smart Indenter. Petit, gratuit, efficace. Que du bonheur !
Vous me direz : et le rapport avec Access ? En fait, l’outil s’applique à VBA en général, donc à Access par extension. Sur le site officiel, Smart Indenter est annoncé compatible avec :
- Office 2000
- Office 2002
- Office 2003
- Visual Basic 6
- Excel 97
De mon côté, j’ai pu vérifier que ça fonctionne aussi sur Office 2010, testé sur Access 2010, Excel 2010 et Word 2010 (par extension, Office 2007 devrait être concerné également).
Installation
- Connectez-vous à l’adresse donnée plus haut.
- Téléchargez la version adaptée à votre besoin (la version Office 2000/2002/2003 fonctionne sur Office 2007/2010, même si le logiciel date un peu).
- Une fois le fichier
IndenterVBA.exe
téléchargé, double-cliquez dessus pour lancer son installation.
Utilisation
Smart Indenter ajoute un menu Smart Indent sous le menu Edition de Visual Basic Editor, et dans le menu contextuel du code VBA (clic droit). Pour reformater un bloc de code :
- Sélectionnez le bloc concerné.
- Faites un clic du bouton droit, puis choisissez Smart Indent / Indent procedure. Vous pouvez aussi reformater tout le module actif, ou tout le projet VBA.
Le menu Indenting Options permet de choisir les options de reformatage du code :
Exemple AVANT
Voici un bout de code avec une mauvaise indentation :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
' --- ' IMPORTATION DE VOITURES ' --- ' Private Sub btnImportVoitures_Click() Dim strFichier As String ' Demander confirmation If MsgBox("Confirmez-vous l'importation de la liste de voitures ?", _ vbQuestion + vbYesNo) = vbNo Then Exit Sub End If ' Initalisations... strFichier = "C:\Users\Hervé\Documents\liste_voitures.txt" ' Vérifier que le fichier existe bien ' If Dir(strFichier) = "" Then ' MsgBox "Le fichier '" & strFichier & "' est introuvable !", _ ' vbExclamation ' Exit Sub ' End If ' Vider la table temporaire si elle existe ' (elle est de toute façon créée automatiquement si ' elle n'existe pas) On Error Resume Next CurrentDb.Execute "DELETE * FROM [tbl Voitures];" ' Importer le fichier texte DoCmd.TransferText acImportDelim, "Import Voitures", _ "tbl Voitures TEMP", strFichier, True ' Transfert des nouvelles couleurs DoCmd.SetWarnings False DoCmd.OpenQuery "rqt Nouvelles couleurs - Ajout" ' Transfert des voitures DoCmd.OpenQuery "rqt Nouvelles voitures - Ajout" ' Terminé ! MsgBox "Importation terminée !", vbInformationn End Sub |
Exemple APRES
Et voici le même code après le passage de Smart Indenter (qui s’applique bien sûr à des structures plus complexes, avec des If
ou des With
imbriqués, par exemple). Même les lignes de commentaires peuvent être alignées sur le code, à la place des apostrophes placées à gauche par VBA.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
' --- ' IMPORTATION DE VOITURES ' --- ' Private Sub btnImportVoitures_Click() Dim strFichier As String ' Demander confirmation If MsgBox("Confirmez-vous l'importation de la liste de voitures ?", _ vbQuestion + vbYesNo) = vbNo Then Exit Sub End If ' Initalisations... strFichier = "C:\Users\Hervé\Documents\liste_voitures.txt" ' Vérifier que le fichier existe bien ' If Dir(strFichier) = "" Then ' MsgBox "Le fichier '" & strFichier & "' est introuvable !", _ ' vbExclamation ' Exit Sub ' End If ' Vider la table temporaire si elle existe ' (elle est de toute façon créée automatiquement si ' elle n'existe pas) On Error Resume Next CurrentDb.Execute "DELETE * FROM [tbl Voitures];" ' Importer le fichier texte DoCmd.TransferText acImportDelim, "Import Voitures", _ "tbl Voitures TEMP", strFichier, True ' Transfert des nouvelles couleurs DoCmd.SetWarnings False DoCmd.OpenQuery "rqt Nouvelles couleurs - Ajout" ' Transfert des voitures DoCmd.OpenQuery "rqt Nouvelles voitures - Ajout" ' Terminé ! MsgBox "Importation terminée !", vbInformationn End Sub |
Points +
- Petit
- Gratuit
- Efficace
- Annulation possible de l’indentation
- Boîte d’options avec aperçu direct des réglages
Points –
- En anglais uniquement.
- Parfois quelques défauts d’indentation, mais rien de grave par rapport au temps gagné.
- Une option pour la suppression de lignes vides serait pratique, mais je chipote ! 😉