1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| Option Explicit
Sub PourChaqueLibelle()
Dim Libelle As String, Ligne$
Application.ScreenUpdating = False
Libelle = "Description : La personne a des matricules Evolution différents selon l'occurrence Contrat ou Projet (POLIBASE ou POLIPROJ) que l'on regarde. (On ne lit les matricules que sur les contrats en cours s'il y en a, s'il n'y en a pas, on ne lit les matricules que sur les contrats résiliés ou expirés depuis moins de 2 ans)"
'Ce que tu peux faire est régler la longueur des lignes de manière empirique
Columns(5).ColumnWidth = 41
RéglerLongueurLibelle (Libelle)
Application.ScreenUpdating = True
End Sub
Sub RéglerLongueurLibelle(Libelle)
Dim Tableau(), Ligne$, OldChaine$, i As Integer, j As Integer
Dim NewChaine$
'On règle la longueur des chaînes au dernier espace rencontré avant le 45ème caractère
'Dans cet exemple, 45 correspond à la longueur max d'une ligne de texte
'pour une largeur de colonne de 41
'Recherche du dernier espace
'Création du tableau
OldChaine = Libelle
Do While Len(OldChaine) > 45
Ligne = Left(OldChaine, 45) '45 correspond à la longueur max désirée
For i = Len(Ligne) To 1 Step -1
If Mid(Ligne, i, 1) = Chr(32) Then Exit For
Next
j = j + 1
ReDim Preserve Tableau(j)
Tableau(j) = Left(OldChaine, i)
OldChaine = Right(OldChaine, Len(OldChaine) - i)
Loop
j = j + 1
ReDim Preserve Tableau(j)
Tableau(j) = OldChaine
For i = 1 To UBound(Tableau)
NewChaine = NewChaine & Tableau(i) & vbLf
Next
'Suppression du dernier saut de ligne
NewChaine = Left(NewChaine, Len(NewChaine) - 1)
Cells(1, 5) = NewChaine
MsgBox NewChaine
End Sub |
Partager