Diviser le texte en plusieurs cellules (Microsoft Excel)
Phil a une série de cellules contenant du texte. Une partie du texte est trop longue, il doit donc la diviser en plusieurs cellules. Par exemple, si une cellule contient « le renard brun rapide » et qu’il a besoin de diviser le texte pour qu’aucune partie ne dépasse 12 caractères, Phil peut facilement le faire. Mais il veut s’assurer que la séparation est faite à l’espace avant le 12ème caractère, plutôt qu’au 12ème caractère exact. Phil ne sait pas comment procéder.
Vous pensez peut-être que vous pouvez utiliser l’outil Texte en colonnes dans Excel, mais il ne convient pas bien au travail. Si vous définissez l’outil pour diviser le texte en fonction de délimiteurs tels qu’un espace, vous vous retrouvez avec un seul mot dans chaque cellule. Si vous définissez l’outil pour diviser le texte en «largeur fixe», il ne divise pas les mots en espaces; il s’assure simplement que chaque morceau est de la taille que vous spécifiez.
Vous pouvez utiliser une formule pour obtenir les résultats souhaités, mais cela aboutirait à des formules incroyablement longues. Par exemple, si le texte trop long se trouve dans la cellule A3, la formule suivante pourrait être utilisée pour séparer le premier morceau de ce texte, à l’espace avant le 12e caractère:
=IF(LEN($A3)>12,IF(ISERROR(FIND(" ",MID($A3,12,1) &MID($A3,11,1)&MID($A3,10,1)&MID($A3,9,1)&MID($A3,8,1) &MID($A3,7,1)&MID($A3,6,1)&MID($A3,5,1)&MID($A3,4,1) &MID($A3,3,1)&MID($A3,2,1))),MID($A3,1,1),MID($A3,1, 13-FIND(" ",MID($A3,12,1)&MID($A3,11,1)&MID($A3,10,1) &MID($A3,9,1)&MID($A3,8,1)&MID($A3,7,1)&MID($A3,6,1) &MID($A3,5,1)&MID($A3,4,1)&MID($A3,3,1)&MID($A3,2,1)))) ,RIGHT($A3,LEN($A3)))
N’oubliez pas que tout cela est une formule unique, juste pour obtenir le premier morceau. Les formules pour obtenir les deuxième, troisième, quatrième et derniers morceaux sont encore plus longues. De toute évidence, l’utilisation d’une formule n’est peut-être pas la meilleure approche.
Cela laisse en utilisant une macro. Une macro peut examiner la chaîne de texte et la découper facilement en morceaux de la longueur souhaitée. Considérez la fonction définie par l’utilisateur suivante:
Function SplitMe(sSentence As String, iPos As Integer, Optional iLen = 12) Dim sSegments() As String Dim iSegments As Integer Dim sRest As String Dim sTemp As String Dim iSpace As Integer Dim J As Integer iSegments = 0 sRest = sSentence sTemp = Left(sRest, iLen + 1) Do Until Len(sTemp) <= iLen iSpace = 0 For J = Len(sTemp) To 1 Step -1 If Mid(sTemp, J, 1) = " " And iSpace = 0 Then iSpace = J Next J If iSpace > 0 Then sTemp = Left(sRest, iSpace - 1) sRest = Mid(sRest, iSpace + 1) Else sRest = Mid(sRest, Len(sTemp) + 1) End If iSegments = iSegments + 1 ReDim Preserve sSegments(1 To iSegments) sSegments(iSegments) = sTemp sTemp = Left(sRest, iLen + 1) Loop iSegments = iSegments + 1 ReDim Preserve sSegments(1 To iSegments) sSegments(iSegments) = sTemp If iPos <= iSegments Then SplitMe = sSegments(iPos) Else SplitMe = "" End If End Function
La fonction prend deux ou trois paramètres. Le premier paramètre est la chaîne à séparer, le second est le morceau que vous voulez dans la chaîne et le troisième paramètre (facultatif) est la longueur souhaitée de chaque morceau. Si vous omettez le troisième paramètre, la fonction suppose que vous voulez que chaque bloc soit un maximum de 12 caractères. À titre d’exemple, en supposant que le texte est dans la cellule A5, ce qui suit renverra le deuxième morceau du texte où chaque morceau comporte jusqu’à 12 caractères:
=SplitMe(A5,2)
La fonction renvoie de bons résultats, à condition que chaque mot de la chaîne de texte ne dépasse pas la longueur cible spécifiée pour chaque bloc. Si c’est le cas, vous obtiendrez des résultats étranges, y compris des morceaux qui ne contiennent pas de mots complets.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (3899) s’applique à Microsoft Excel 97, 2000, 2002 et 2003.