Formater un paragraphe entre deux marges (droite et gauche).

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 260 fois - Téléchargée 39 fois

Contenu du snippet

(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

A voir également

Ajouter un commentaire

Commentaire

cs_PROGRAMMIX
Messages postés
1134
Date d'inscription
mercredi 2 octobre 2002
Statut
Membre
Dernière intervention
24 juillet 2011
-
J'aurais aimé un ZIP et une capture...

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.