Découper un texte en phrase

  • Initiateur de la discussion Initiateur de la discussion Babe
  • Date de début Date de début

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 !

B

Babe

Guest
Bonsoir le forum,

Je voudrais pouvoir insérer un texte dans la cellule A1 et à l'aide d'une macro, "désintégrer" ce texte en fonction de la présence de ':' ou de '.' dans le texte. Le format final serait d'avoir une phrase (si '.') ou bout de phrase (si ':') par ligne dans la colonne A.

J'espère arriver de me faire comprendre.

Merci d'avance.

BABE
 
Bonsoir Babe,

Je pense que tu peux tout à fait te dispenser d'une macro dans le cas présent.
En fait le sous menu "convertir " du menu "données", doit tout à fait satisfaire à ta demande.
Petite précision , sur le premier masque de l'assistant, choisir l'option "délimité" afin de renseigner sur le second masque ce que sera ton séparateur de texte 🙂 ou , ou ; ou autres...)

Principe : selectionner tout le texte à désintégrer (c'est ton terme), activer le menu précité, puis suivre les instructions de l'assistant.

Bonne continuation

A+

Rénato
 
Bonjour Renato, bonjour le forum,

Je te remercie de ta réponse. J'ai essayé mais le texte se retrouve à être "désintégrer" sur une même ligne.
Or je souhaiterais que mon texte contenu dans la cellule A1 se retrouve divisé dans les cellules A2 jusqu'à A .... et de sorte à ce que dans chaque cellule, je n'ai qu'une phrase.

Peut être n'y a t il pas de solution.

Babe
 
bonjour Babe , bonjour Rénato

tu peux tester cette macro qui extrait les phrases en fonction de la ponctuation "." et ":" .
le texte initial est dans la Cellule A1 et les phrases s'affichent dans la premiere colonne , à partir de la Cellule A2


Sub extractionPhrases()
Dim j As Integer
Dim i As Long, Valeur1 As Long, Valeur2 As Long
Dim Cible As Long
Dim Texte As String

j = 1
Texte = Range("A1")

For i = 1 To Len(Texte)
Valeur1 = InStr(i, Texte, ".")
Valeur2 = InStr(i, Texte, ":")

If Valeur1 < Valeur2 Then Cible = Valeur1 Else Cible = Valeur2
If Valeur2 = 0 And InStr(1, Texte, ":") > 0 Then Cible = Valeur1

j = j + 1
Cells(j, 1) = Mid(Texte, i, Cible - i + 1)
i = Cible
Next i

End Sub


il existe sans doute d'autres solutions mieux adaptées


bon après midi
MichelXld
 
bonjour Babe, Salut Michel,

En fait je persiste qu'avec l'assistant on arrive au bout, il est vrai que je n'avais pas saisi dans ton premier topic que tu souhaitais un saut de ligne Babe.

Une fois l'opération réalisée avec l'assistant, tes données se trouveront "désintégrées" (j'adore) sur la ligne ou elles ont été traitées.
Si tu selectionnes l'ensemble des cellules en question, puis que tu fais un copier, puis collage spécial "transposé" à partir de la première cellule adjacente en dessous, tu dois obtenir ton résultat.

Ceci sans VBA, cependant coup de chapeau à Michel pour son script.

cordialement

Rénato
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
109
Réponses
20
Affichages
766
Retour