Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

FORMATER UN PARAGRAPHE ENTRE DEUX MARGES (DROITE ET GAUCHE).


Information sur la source

Catégorie :Texte Niveau : Initié Date de création : 30/07/2002 Date de mise à jour : 31/07/2002 17:43:51 Vu : 1 729

Note :
Aucune note

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

Description

(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

  • ' ----------------------------------------------------------------------------
  • ' 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
' ----------------------------------------------------------------------------
' 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
 

Commentaires et avis

signaler à un administrateur
Commentaire de PROGRAMMIX le 07/11/2002 14:15:31

J'aurais aimé un ZIP et une capture...

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.