Smart VBA Indenter Beautifier

Smart VBA Indenter Beautifier 2.0

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

patricktoulon

XLDnaute Barbatruc
patricktoulon a soumis une nouvelle ressource:

Smart VBA Indenter Beautifier - un complément xlam developant les outis pour indenter vos codes

Bonjour à tous
Après le vba Indenter interface (moteur HTML) de 2024
je vous présente aujourd'hui le Smart VBA Indenter Beautifier
avec son nouveau moteur XML!!!!
comme son petit frère c'est un complement xlam qui intègre les outils pour intenter vos codes
l'accès se fait directement dans les modules
il se constitue d'un module classe contenant les fonctionsd'indentation
dès l'open dans le menu "Outils" de la commandbarre VBE j'ajoute...

En savoir plus sur cette ressource...
 
Salut Pat,
J'ai téléchargé et réinstallé ton fichier .
1748277580895.png
le clic sur le ruban ne provoque plus rien ?
1748277779073.png
Je n'ai plus les options d'indentation au clic droit dans le Vbe
1748277903873.png
Je les retrouve bien dans les outils,
1748278038831.png
J'ai testé l'option 2,
ce qui reste dans l'user profile classique de mon disque système est le seul dossier AppData
Toutes mes bibliothèques ont été migrées vers un disque dédié aux données .
Donc pas de Desktop dans le C ...
Perso, j'utilise plutôt :
CreateObject("WScript.Shell").SpecialFolders("desktop")
qui est plus juste que le Environ()
1748278158222.png
1748278185567.png

Bon, j'ai relevé quelques inattendus dans l'indentation mais je te laisse d'abord régler les premières anomalies .
 
re
Bonjour @fanch55
alors
1° le clic sur le ruban ne provoque plus rien ?
si si !! : tu vois rien c'est tout je n'ai pas mis de message

2° Je n'ai plus les options d'indentation au clic droit dans le Vbe
et oui ça a changé le menu et dans la barre VBE"Outils"

3° oui c'est vrai ce environ et casse bonbon

sinon ça donne quoi l'indentation ? et si possible donne moi les modules que tu teste si il y a coquille (ou leur code)

merci de tes retours toujours constructifs 👍 👍
 
Attention
le xml est stricte a l'inverse du html (qui te re balançait le code comme ça mal indenté si il y avait des blocs non fermé )
le xml lui n'indentera pas
le mode Hard permet effectivement de reconstruire des lignes propres mais il ne fait pas tout
un XSD dynamique est en mise au point qui sera greffé dans la future version ce qui permettra de détecter les lignes qui cafouillent
et de les identifier dans un messages ou autre je ne sais pas encore
 
re
ok le destop folder changé
du coup j'en avais marre de voir ce xml (code.xml)de log et débogage se créer a chaque fois ,je l'ai mis en option dans la boite de paramétra"ge
on coche que si on en a besoins au cas ou on aurait un module retord
je le dépose la provisoirement
 
Dernière édition:
Dernière version chargée .
Le problème c'est que j'ai enregistré le dernier classeur testé sans y faire plus que ça attention.
Et tout mon code est indenté à la sauce Beautifier .
Je préférai l'autre version qui faisait l'indentation dans un sand-box ( userform )
Un peu de temps à tout remettre à peu près conforme à l'original.

Anomalie du jour, si on désire revenir à la situation "précédente", il y a double code, pas glop si on a un ontimer qui tourne .
Dans l'exemple ci-dessous, il n'y a qu'une seule sub, ce qui m'a permis de déceler immédiatement l'anomalie .
Pour les modules longs avec de multiples subs ou fonctions, on ne fait pas attention et on double tout ...

pat.gif
 
en fait c'est pareil que le html il faut double control+z
sauf qu'avec le le html j'efface et met le nouveau donc 1er control+Z vide et le 2d remet l'ancien
c'est une tout petite modif a faire si tu y tiens
 
re
teste celui là avec l'ancien et avec le nouveau tu va comprendre pourquoi je l'ai refait stricte

avec ce code de rien du tout le vba indenter interface est Out of order
avec le nouveau + mode hard ben...regarde
Private Type RECT: Left As Long: Top As Long
Right As Long: Bottom As Long
End Type

Private Enum Couleur
Marron = 411543
Rouge = 255: Vert = 32768: End Enum

Type rect2: a As Long: b As Long: End Type
'exemple divers bloc imbriqués
Sub test()
Dim TbL(1 To 10, 1 To 50), I, E
With machin: For I = 1 To 10
For E = 10 To 20: TbL(I, E) = I + I * E
Select Case I: Case 10
With toto
For X = J To p
If X = 5 And E = 12 Then TbL(I, E) = "none": gogo = 8
Next
End With
Case 15
With toto: For X = J To p:
If X = 18 And E = 17 Then TbL(I, E) = "a voir": gogo = 10
Next
End With
End Select
Next
Next
End With
'rrrrrrrrrr
Select Case truc
Case "machin": lolo = 10
Case "doudou": lolo = 50
End Select 'fghjklm

For I = 1 To 10: For E = 20 To 30: TbL(I, E) = I * E: Next: Next


End Sub

Sub testtouillage_de_underscore2( _
Optional a As Long = 0, _
Optional E As Long = 1, _
Optional b As Long = 7)
MsgBox "coucou"
End Sub
 
je viens d'en trouver une bonne encore avec le vba interface
regarde bien ce qui se passe et là c'est carément rédhibitoire
on se retrouve avec une seul variable modifiée par la condition les deux autres sont libres elle s'execute toute seules sans conditions
et ça c'est grave par ce que ca change tout le sens du code
vba indenter interface
demo3.gif


maintenant le beautifier
la on vois bien qu'il a cassé la ligne mais a fermer le bloc If
donc les trois variable seront modifié selon la condition If comme à l'original inline
demo3.gif


non alors sérieux le beautifier n'a rien a envier au interface
et ce n'est qu'un exemple parmi les 77 que j'ai trouvé et qui sont insolubles dans le contexte ou le vba interface a été codé
je ne crache pas sur ce que j'ai fait le beautifier existe aujourd'hui grâce au vba interface les misères de l'un ont appris à l'autre et moi en même temps

ps: je viens de tester la dernier version de vba indenter fait exactement la même chose double ctrl+z et encore c'est un peu mou il faut insister des fois
je peux te faire si tu veux pour ne pas te tromper
1er ctrl+z = vide
2d ctrl+z =ancien code
 
allez encore une
là c'est un if then double la dernière varible se retrouve orpheline
demo3.gif

avec beautifier ça va beaucoup mieux en mod simple ou hard
demo3.gif

si avec ça tu n'es pas convaicu je sais plus moi
 
Je n'ai jamais dit que je préférais l'ancien au nouveau,
Je disais juste que je regrettais de ne plus pouvoir faire la simulation,
la double annulation n'est pas naturelle surtout si on a modifié qq chose entre .
Si on fait plus d'une double annulation, on perd vite le fil de ce qui a pu être modifié .
Je ne me rappelle pas que l'Indenter faisait de la restructuration, peut-être ai-je omis une évolution .

Je m'attache plutôt maintenant au coté cosmétique qui a pu passer au travers des deux .
A gauche, l'original, à droite la Beautification .....
Pas d'indentation sur ce type de tri ( ou plutôt suppression )
1748437929785.png
1748437971426.png

Il n'est peut être pas utile de vouloir indenter les commentaires dont le symbole est en colonne 1.
Généralement, le comment a été fait avec le ruban et le décomment le sera probablement aussi, le code sera ainsi visuellement synchrone avec le reste.
1748438340771.png
1748438368555.png

Ce type de code fait que ton Beautifier demande de faire une restructuration,
ce n'est pas rédhibitoire mais pas vraiment indispensable ( à mon point de vue )
1748438744178.png
1748438774126.png

L'indentation des if then else "séquentiels" est peut-être superflu à mon avis .
Certaines indentations sont assez directives ( les jaunes ) mais je mesure bien la difficulté à faire du décisionnel .

1748440366882.png
1748440558020.png
1748440800612.png

Bon, ce que j'ai signalé c'est du peanuts, ton Beautifier est très performant rapport à l'Indeter, on sent qu'il y a eu du travail et pas du basique.
Je dois partir à un mariage les 3 jours à venir, je reprendrai sur un autre type de code à mon retour .
 
ok Bonjour @fanch55 merci pour les retours
je vais examiner tout ça
1° pour le premier jaune et oui la c'est compliqué visiblement il a pris le case "(" et s'aligne à elle -1
2°et oui je peux comprendre par exemple pour le 2d jaune j'ai du prendre une décision et là celle qui prévaut c'est parent/child
si c'est des childs de même niveau = indentation identique
3°le if en rouge je peux le faire tout aligner en colonne

et oui quand il demande de tenter la restructuration c'est que l'analyse n'a pas pu fermer une balise (incapacité décisionnelle)
c'est bien pour ça qu'il est là le beautifier en restructurant scolairement un code il envoit du code parfaitement indenté car toutes les balises ont pu être fermées correctement

je reconnais, il est beaucoup plus stricte que le moteur html mais le résultat est sans faille pour l'instant
bon mariage et fait la fête tu le mérite 😉
 
mais ne t’ inquiète donc pas le vba indenter interface arrive avec son nouveau moteur html
il aura aussi le beautifier (dé connectable comme le smart vba indenter beautifier)
le grand frère qui tire les leçons du petit frère 😉

j'avais pas compris quand tu parlais de simulation
tu parlais d'indenter dans l'interface c'est bien ça ?
c'est vrai que c'est un bon point que le beautifier n'a pas(enfin selon pas beaucoup d'entre nous)

jai pas jugé utile de refaire un interface pour le petit nouveau
les retours sur ce point sont plutôt négatifs enfin il n'a pas fait l'unanimité
en effet a part l'intérêt pour l'export plus de 80% des utilisateurs préfèrent rester dans le VBE
 
Annonce du jour
le moteur XML version 2.0 arrive

a° 4 correctifs majeurs(erreur de ma part gros flemmard je fait du copier/ coller sur du code répétitif et je fait des sottises )

b° 1autre correctif majeur celui là aussi c'est la decompilation partielle pour rendre le mode normal plus doux(moins stricte)afin qu'il puisse indenter sans décompiler les blocs inline complet

c° ajout d'un bouton supplémentaire pour l'appel d'un visionneur (userform(sandbox)) interface minimal (1 bouton et un checkbox
c'est @fanch55 qui va être content de ça je crois

il arrive courant semaine
j'annonce aussi que le moteur HTML Version 3.0 Ultimate basé sur l’algorithme de celui ci qui est en XML et quasi prêt
me reste en adapter a ce qui est présent dans le vba indenter interface

il y en a pour tout les gouts
mes deux bébés montent en puissance 😉

bientôt aussi le complément d'export en html coloration syntaxique arrive aussi plus puissant que le module du vba indenter interface html
bref je chome pas je me demande même d'ailleur si je vais pas le greffer au vba indenter interface aussi

patience je fait tout les tests finals

patrick
 
bonjour à tous
mise ajour version 2.0
assouplissement du mode normal avec une semi décompilation des ligne si non compilé entièrement
ajout du userform de visualisation pour travailler tester l'indentation simple ou avec restructuration du code sans toucher au module' ça va faire plaisir a @fanch55 ça ) accessible par le menu bien entendu
Capture.JPG


Ajout et maitrise de cas très complexe dans la gestion des IF multiple inline ,dans les bloc avec underscore et bien d'autres choses encore
bref il monte en puissance d'analyse de syntaxe
l’essayer c'est l'adopter
patrick
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour