Dessiner une bordure pour un titre
Le
elatlas

Bonjour à tous,
Comment peut-on, en VBA, dessiner une bordure pour un titre centré dans u=
n fichier texte.
Exemple :
-
! Titre !
-
Merci d'avance.
Comment peut-on, en VBA, dessiner une bordure pour un titre centré dans u=
n fichier texte.
Exemple :
-
! Titre !
-
Merci d'avance.
Une des manières (qui soit à ma portée) ...
Ouvrir une feuille blanche, activer l'enregistreur de macro, puis réaliser
le titre (centrer, encadrer , choix police , couleur ...)
Arrêter l'enregistreur.
Cela est peut-être lourd, mais au moins, on a une bonne base pour commencer.
Bonne journée
Jacques.
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
a écrit dans le message de groupe de discussion :
Bonjour à tous,
Comment peut-on, en VBA, dessiner une bordure pour un titre centré dans un
fichier texte.
Exemple :
-------------
! Titre !
-------------
Merci d'avance.
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
L'enregistreur des macros fonctionne sur une feuille Excel, mais pas dans un fichier texte !
en suposant que le fichier texte existe déjà et
il faut adapter cette ligne ("C:UsersisabelleDocumentstest_texte1.txt")
et mettre dans la feuille active du fichier excel en cellule A1:A3
l'info du titre
-------------
! Titre !
-------------
'il faut ajouter la référence : Microsoft Scripting Runtime.
Sub ÉcrireFichierTexte()
Dim oFSO As Scripting.FileSystemObject
Dim oFl As Scripting.File
Dim oTxt As Scripting.TextStream
Dim i As Integer
Set oFSO = New Scripting.FileSystemObject
Set oFl = oFSO.GetFile("C:UsersisabelleDocumentstest_texte1.txt")
Set oTxt = oFl.OpenAsTextStream(ForWriting)
With oTxt
For i = 1 To 3
.WriteLine Selection(i) & Chr(10)
Next i
End With
End Sub
isabelle
Le 2015-10-20 15:09, a écrit :
.WriteLine Selection(i) & Chr(10)
par celle-ci
.WriteLine Range("A" & i) & Chr(10)
isabelle
Le 2015-10-20 19:32, isabelle a écrit :
cela évite de passer par des cellules
Sub ÉcrireFichierTexte()
'il faut ajouter la référence : Microsoft Scripting Runtime.
Dim oFSO As Scripting.FileSystemObject
Dim oFl As Scripting.File
Dim oTxt As Scripting.TextStream
Dim i As Integer
Dim arrTitre, sTitre As String, t1 As String, t2 As String, t3 As String
Set oFSO = New Scripting.FileSystemObject
Set oFl = oFSO.GetFile("C:UsersisabelleDocumentstest_texte1.txt")
Set oTxt = oFl.OpenAsTextStream(ForWriting)
sTitre = " Voici le texte de mon titre"
n = Len(sTitre)
t1 = Application.Rept("-", n + 2)
t2 = "!" & sTitre & "!"
t3 = Application.Rept("-", n + 2)
arrTitre = Array(t1, t2, t3)
With oTxt
For i = 0 To 2
.WriteLine arrTitre(i) & Chr(10)
Next i
End With
End Sub
isabelle
Le fichier à été créé, mais :
1 - l'encadrement n'atteint pas la longueur du texte (Quelques tirets manqu ent encore au dessus et au dessous du texte)
2 - le texte généré n'est pas centré dans la page du fichier texte résultante.
si oui, il y aurais la possibilité de mesurer la ligne la plus large.
isabelle
Le 2015-10-21 15:23, a écrit :
et voila le code :
'------------
With oTxt
For i = 0 To 2
.WriteLine Application.Rept(vbTab, Int((138 - n - 4) / 8) / 2) & a rrTitre(i) & Chr(10)
Next i
End With
End Sub
' 138 caractères CONSOLAS par ligne
' 8 caractères par vbTab
' 138 - len (titre) - 4 (2 espaces + 2 !) = 12 vbtab
' On divise 12 par deux = 6 vbTab à gauche et 6 vbTba à droite
'------------