Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Y'a t'il un moyen pour découper une phrase en deux lignes avec nombres de caractères déterminé, 40 caractères en B2 et le reste en B3sans couper les mots.
Formule matricielle: Elle doit être validée par la combinaison des touches Ctrl+Maj+Entrée au lieu de la seule touche Entrée comme une formule classique.
Si la validation matricielle est correcte, alors Excel entoure la formule d'accolades {=.......}.
Chaque fois que cette formule sera modifiée, la validation devra se faire par Ctrl+Maj+Entrée. Les accolades apparaissent à la validation et ne doivent pas être saisies au clavier.
Comme il n'y en a pas encore, une fonction personnalisée :
VB:
Function coupe(s$)
Dim l%, i%, v$, w$, x
Application.Volatile 'Facultatif
If Len(s) Then
l = 40
x = Split(s)
v = x(0)
For i = 1 To UBound(x)
w = v & " " & x(i)
If Len(w) <= l Then v = w Else Exit For
Next
w = ""
For i = i To UBound(x)
w = w & " " & x(i)
Next
If Len(w) Then w = Right$(w, Len(w) - 1)
End If
coupe = Array(Array(v, w), Array(w, ""))
End Function
Mode d'emploi :
Le texte à traiter étant en A1, sélectionner deux cellules contigües (en colonne ou en ligne), saisir
Toujours sur le même sujet: comment ajouter des " * " pour compléter le nbre de caractères (40 & 80) si le nombre de caractère est inférieur a 40 dans la 1ère ligne et inférieur a 80 dans la 2eme ligne.
Bonsoir Patrick.
j'ai oublier de mentionner que si j'ai un complément de "*" sur la 1ère ligne donc la 2eme ligne sera automatiquement complétée de 80 "*" .
Merci à Roger pour l'utilisation du Array imbriqué que je ne connaissais pas.
Sur le même principe avec l'ajout d'un caractère qui complète la chaine.
Matricielle personnalisée.
Code:
Function Decoupe(r$, cr)
Application.Volatile: t = 40: c = Left(r, t)
Do While Mid(c, t, 1) <> Space(1): c = Left(c, t - 1) & cr & Mid(c, t + 1, 40 - t): t = t - 1: Loop
c = Left(c, t - 1) & cr & Mid(c, t + 1, 40 - t + 1)
Dim v(1): v(0) = c: v(1) = Left(Trim(Replace(r, Replace(c, cr, Space(0)), Space(0))) & WorksheetFunction.Rept(cr, 80), 80)
Decoupe = Array(v, Array(v(1), Space(0)))
End Function
Code:
=DECOUPE(A1;"*")
* qui peut être remplacé par n'importe quel autre caractère.
Bonsoir Patrick.
j'ai oublier de mentionner que si j'ai un complément de "*" sur la 1ère ligne donc la 2eme ligne sera automatiquement complétée de 80 "*" .
Function coupe(s$, Optional r$ = "*")
Dim l%, i%, v$, w$, x
Application.Volatile 'Facultatif
If Len(s) Then
l = 40
x = Split(s)
v = x(0)
For i = 1 To UBound(x)
w = v & " " & x(i)
If Len(w) <= l Then v = w Else Exit For
Next
w = ""
For i = i To UBound(x)
w = w & " " & x(i)
Next
If Len(w) Then w = Right$(w, Len(w) - 1)
End If
On Error Resume Next
If Len(v) Then v = v & String(40 - Len(v), r): w = w & String(80 - Len(w), r)
On Error GoTo 0
coupe = Array(Array(v, w), Array(w, ""))
End Function
Bonjour,
un essai à améliorer via une fonction utilisant une expression rationnelle :
Code:
Function ScinderChaine(chaine As String, Optional l As Double = 40, Optional c As String = "*")
Dim oRegExp As Object, Matches As Object, i As Byte, sep As Byte, T()
Set oRegExp = CreateObject("vbscript.regexp")
With oRegExp
.Global = True
.MultiLine = True
.Pattern = "\s"
If .test(chaine) = True Then
Set Matches = .Execute(chaine)
For i = 0 To Matches.Count - 1
If Matches.Item(i).firstindex > l Then
ReDim T(1)
sep = Matches.Item(i - 1).firstindex
T(0) = Left(chaine, sep)
If Len(T(0)) < l Then T(0) = T(0) & _
Application.WorksheetFunction.Rept(c, l - Len(T(0)))
T(1) = Trim(Right(chaine, Len(chaine) - sep))
If Len(T(1)) < l * 2 Then T(1) = T(1) & _
Application.WorksheetFunction.Rept(c, l * 2 - Len(T(1)))
Exit For
End If
Next i
End If
ScinderChaine = Application.Transpose(T)
End With
End Function
Chaîne de caractères en A1. Sélectionner B1:B2, rentrer la formule et valider en matriciel:
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD