C'est une manip que je fais pour le plaisir.
Je mets un listing de programme sur un formulaire puis je l'indente.
j'arrive à indenter correctement sur les mots clés mais pas entre-eux.
j'ai tenté plusieurs solution sans succès.
Tout est clair dans le fichier avec ce que je voudrais obtenir en rouge colonne "D".
fichier joint.
Ok pour le renseignement, l'apostrophe je ne m'en suis jamais inquiété, par contre je ne sais pourquoi il disparaît !
toutefois je cherche à réécrire tout ça différemment.
dans le cas de l'utilisation de Cells(x,y).Value
l'apostrophe est interprétée en tant que "PrefixCharacter" et non comme "apostrophe texte"
car "By Design" l'interprétation feuille de calcul est prise en compte automatiquement, VBA n'y voit que du feu
(c'est ce qui ce produit également dans la reconnaissance automatique d'une date et les problèmes récurrent dates US / FR)
MsgBox "The prefix character is " & _
Worksheets("Sheet1").Range("A1").PrefixCharacter
J'ai continué les manips en vue de supprimer l'indice de tabulation sur le formulaire.
J'ai utilisé le Dico pour la première fois, ça marche mais il y a des répétitions de tri.
Donc j'ai fait une autre version avec tableau, c'est bien plus légé.
Comme je ne lâche pas le morceau, j'ai résolu le problème du caractère "CHR(39)" en tête de ligne.
Et je remercie vivement "Modeste Geedee" pour l'éclairage qu'il apporte avec "PrefixCaract", je ne connaissais pas.
Donc voici 2 fichiers, l'un regroupe les 3 manip (avec colonne auxiliaire, avec dico et sans).
L'autre uniquement sans dico.
A la place des Tab tu pourrais te servir de .IndentLevel des cellules.
Plus besoin de stocker. Pour indenter/désindenter lire le niveau de la cellule au-dessus +/-1.
Plus de traitement de chaine pour gérer ça non plus.
eric
PS : j'ai voulu tester en ajoutant des lignes à la main. Les mots sans initiale en majuscule ne sont pas reconnus. Je verrais bien les comparer tout en majuscule avec ucase().
Pour Select Case ça donne :
Bonjour Modeste Geedee, Eriic, Mj13 à toutes et tous
C’est la suite de l’indentation, comme préconisé par ″Eriiic″ que je remercie au passage de m’avoir mis sur la piste. Réalisé une indentation direct en utilisant ″IndentLevel″ encore un terme que je ne connaissais pas, après quelques manip, je l’ai adapté au programme, par contre ici, le pas de l’indentation est fixe et limité de (0 à 15), contrairement à la tabulation ajustable.
Le programme qui suit comprend 2 versions une en comparaison avec tab et ″indentlevel″, et l’autre avec ″indentlevel″ seul, cette version prend 100 lignes de code.
Je remercie également ″Modeste Geedee″, la colonne ″A″ est au format texte et CHR(39) est traité (.PrefixCaract) (Commentaire).
Je pense qu'ils ont oublié de mettre à jour leur doc depuis 2003.
Sur 2010 on peut aller jusqu'à 250 pour le retrait (vérifiable dans la boite de dialogue)
Du coup tu peux offrir la possibilité de mettre 2-3 indentlevel par incrémentation pour ceux qui trouve que c'est un peu juste.
eric
PS: Souhait de eriiic est un mot un peu fort ;-) C'était juste une proposition pour alléger et simplifier