(basée sur la fonction du superbe logiciel UltraEdit)
Utilisez cette fonction pour formater un texte donné à la limite des
numéros de colonne spécifiés. Un paragraphe est déterminé par deux fins
de lignes existantes en dur dans le texte (par ex. une ligne vide).
Cette fonction demande la présence de la fonction VBA6 : Replace(), que j'ai également mis sur ce site.
Source / Exemple :
' ----------------------------------------------------------------------------
' Description
' Utilisez cette fonction pour formater un texte donné à la limite des
' numéros de colonne spécifiés. Un paragraphe est déterminé par deux fins
' de lignes existantes en dur dans le texte (par ex. une ligne vide).
'
' Syntaxe
' Formater_Paragraphe(Expression [, MarginRight[, MarginLeft]])
'
' Expression
' Expression de chaîne contenant des paragraphes à formater.
' MarginLeft (Facultatif)
' Cette option spécifie la marge de gauche qui doit être utilisée lorsque
' le paragraphe est reformaté. Elle représente le premier numéro de
' colonne (les numéros de colonne commencent à 1) où un texte peut
' commencer. La position 1 est prise par défaut.
' MarginRight (Facultatif)
' Cette option spécifie la marge de droite qui doit être utilisée lorsque
' le paragraphe est reformaté. Elle représente le dernier numéro de
' colonne (les numéros de colonne commencent à 1) où un texte peut encore
' être placé. La position 80 est prise par défaut.
'
' Version: 1.0 - 30/07/2002
' Auteur : Bigane@tiscalinet.ch
' ----------------------------------------------------------------------------
Public Function Formater_Paragraphe( _
ByVal Expression As String, _
Optional ByVal MarginLeft As Long = 1, _
Optional ByVal MarginRight As Long = 80) As String
Dim lngLastSpace As Long
Dim lngNextSpace As Long
Dim lngLastCr As Long
Dim lngNextCr As Long
Dim lngLength As Long
Dim strMargin As String
Dim strCrLf As String
Dim lngLenCrLf As Long
Const vbSpace As String = " "
If (MarginLeft > 0) And (MarginRight > MarginLeft) Then
lngLength = MarginRight - MarginLeft + 3
strMargin = Space$(MarginLeft - 1)
strCrLf = vbSpace & vbCrLf & strMargin
lngLenCrLf = Len(strCrLf)
Expression = strMargin & LTrim$(Expression)
Expression = Replace(Expression, vbCrLf & vbCrLf, vbLf & vbCr)
Expression = Replace(Expression, vbCrLf, vbSpace)
Expression = Replace(Expression, vbLf & vbCr, vbCrLf & strMargin)
lngNextSpace = InStr(1, Expression, vbSpace)
If lngNextSpace Then
lngLastCr = 1
lngNextCr = InStr(1, Expression, vbCr)
Do
lngLastSpace = lngNextSpace
lngNextSpace = InStr(lngNextSpace + 1, Expression, vbSpace)
Do While (lngNextCr <> 0) And (lngNextCr < lngNextSpace)
lngLastCr = lngNextCr
lngNextCr = InStr(lngNextCr + 1, Expression, vbCr)
Loop
If lngNextSpace = 0 Then
lngNextSpace = lngLastSpace
End If
' Si dépassement, insertion d'un crlf au dernier espace valide
If lngNextSpace - lngLastCr > lngLength Then
Expression = Replace(Expression, vbSpace, strCrLf, lngLastSpace, 1)
lngNextSpace = lngNextSpace + lngLenCrLf
lngLastCr = lngLastSpace + lngLenCrLf
End If
'Poursuivre la recherche
lngNextCr = InStr(lngLastSpace, Expression, vbCr)
Loop While lngNextSpace > lngLastSpace
End If
End If
Formater_Paragraphe = Expression
End Function
Conclusion :
Historiques :
30/07/2002: ajout du type de la fonction : As String
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.