Positionner chaque phrase d'un paragraphe sur une ligne différente dans Excel

excel12

XLDnaute Nouveau
Bonjour!

J'ai plusieurs paragraphes de textes. Je souhaite que chaque phrase puisse être sur une ligne individuelle l'une à la suite de l'autre dans un classeur Excel.
Les paragraphes sont dans la première cellule d’Excel en position A1.

Si la macro rencontre l'un des 4 caractères suivants, la phrase est terminée et le retour à la ligne suivant peut être effectué:
.
?
!
]

Si la macro rencontre l'une de ces 5 suites de caractères, elle doit considérer la fin de la phrase après le dernier caractère de la suite:
. »
? »
! »
... »
...

Si la macro rencontre l'une de ces 4 suites de caractères, elle doit considérer que la phrase n'est pas encore finie et continuer l'analyse jusqu'à la rencontre d'un des critères valables:
. »,
? »,
! »,
... »

Par exemple, si j'ai ce petit paragraphe:

[Voici l'exemple] Il étudie Excel. Son ami lui répond: «Depuis quand?» Il a dit, « Depuis quelques jours », j'ai dit « As-tu besoin d'aide? » Oui!

Donc, ce paragraphe doit donner:

[Voici l'exemple]
Il étudie Excel.
Son ami lui répond: «Depuis quand?»
Il a dit, « Depuis quelques jours », j'ai dit « As-tu besoin d'aide? »
Oui!


Est-ce que vous avez quelques idées?

Merci!

Excel12
 

Staple1600

XLDnaute Barbatruc
Re : Positionner chaque phrase d'un paragraphe sur une ligne différente dans Excel

Bonjour à tous

excel12
Est-ce que vous avez quelques idées?
Oui, une.
Joins un fichier exemple.
C'est au demandeur de le fournir pas à ceux qui tentent de l'aider.
Ce qui évite de perdre du temps à recréer un fichier qui existe déjà sur le disque dur du dit-demandeur.
Surtout un dimanche matin ;)

PS: Seconde idée: qui dit paragraphe dit Word, pourquoi utiliser ici Excel et non justement Word?
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Positionner chaque phrase d'un paragraphe sur une ligne différente dans Excel

Bonjour.
sinon cette fonction perso réalise l'éclatement demandé sur l'exempla fourni.
VB:
Function SplitSpc(ByVal Z As String) As Variant()
Dim P As Long, C As String * 1
For P = 1 To 4: C = Mid$(".!]»", P, 1): Z = Replace(Z, C, C & "|"): Next P
Z = Replace(Z, "|,", ",")
Z = Replace(Z, "|»", "»")
SplitSpc = WorksheetFunction.Transpose(Split(Z, "|"))
End Function
 

excel12

XLDnaute Nouveau
Re : Positionner chaque phrase d'un paragraphe sur une ligne différente dans Excel

Bonjour Staple1600,

Dans mon message, j'ai justement ajouté un paragraphe d'exemple afin de pouvoir faire la validation des critères. C'est celui-ci:
Par exemple, si j'ai ce petit paragraphe:

[Voici l'exemple] Il étudie Excel. Son ami lui répond: «Depuis quand?» Il a dit, « Depuis quelques jours », j'ai dit « As-tu besoin d'aide? » Oui!
 

excel12

XLDnaute Nouveau
Re : Positionner chaque phrase d'un paragraphe sur une ligne différente dans Excel

Bonjour.
sinon cette fonction perso réalise l'éclatement demandé sur l'exempla fourni.
VB:
Function SplitSpc(ByVal Z As String) As Variant()
Dim P As Long, C As String * 1
For P = 1 To 4: C = Mid$(".!]»", P, 1): Z = Replace(Z, C, C & "|"): Next P
Z = Replace(Z, "|,", ",")
Z = Replace(Z, "|»", "»")
SplitSpc = WorksheetFunction.Transpose(Split(Z, "|"))
End Function

Bonjour Dranred,

Je ne savais pas qu'on pouvait créer nos propres Function dans Excel. Pour l'instant, je n'arrive pas à utiliser la Function que tu m'as écrite. Est-ce possible de modifier ce code pour qu'il fonctionne en Macro avec Sub()?

Pour l'instant, je suis en train de faire des recherches sur ce site pour apprendre comment faire fonctionner les Function:
Les fonctions personnelles dans Excel

Merci pour ton aide!
 

Dranreb

XLDnaute Barbatruc
Re : Positionner chaque phrase d'un paragraphe sur une ligne différente dans Excel

Bonjour.
Vous pouvez l'invoquer dans une Sub
VB:
Sub xxx()
Dim T() As Variant
T = SplitSpc(Activesheet.[A1].Value)
ActiveSheet.[A2].Resize(Ubound(T)).value = T
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 325
Membres
103 179
dernier inscrit
BERSEB50