Fractionnement des phrases en cellules (Microsoft Excel)
Pieter a beaucoup de cellules dans la colonne A qui contiennent du texte. Plus précisément, les cellules contiennent chacune plusieurs phrases de texte. Il aimerait diviser les phrases en cellules individuelles. Il sait qu’il peut utiliser l’outil Text to Columns, mais ce n’est pas entièrement utile, car les phrases peuvent se terminer par une ponctuation différente et une certaine ponctuation peut être utilisée au milieu d’une phrase. (Par exemple, un point après un titre comme M. ou Mme) Pieter se demande s’il existe une meilleure façon de diviser les phrases en différentes cellules.
Pour accomplir cette tâche manuellement, vous pouvez procéder de plusieurs manières.
Tout d’abord, vous pouvez utiliser une colonne d’aide pour travailler avec vos données. Par exemple, vous pouvez mettre cette formule dans la cellule B1:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"Mr.", "Mr#"), "Mrs.", "Mrs#"), "Ms.", "Ms#")
Ensuite, copiez la formule dans le nombre de cellules nécessaires. Vous vous retrouvez avec vos titres communs (M., Mme et Mme) remplacés par une séquence unique de caractères (M. #, Mme # et Mme #). Copiez les résultats de la colonne B dans la colonne B en tant que valeurs (afin que la formule soit supprimée), puis utilisez Texte vers colonnes sur la colonne B. Enfin, utilisez Rechercher et remplacer pour remplacer toutes les instances du caractère # par un point.
L’inconvénient est que la formule ne tient compte que de trois utilisations courantes de la période, où vous devrez peut-être en gérer un certain nombre de plus. Par exemple, vos phrases peuvent avoir des titres tels que Dr. ou des indicateurs de références tels que Ph.D. ou Esq. La liste de ces abréviations chargées de périodes pourrait devenir assez longue. Dans ces cas, vous pouvez effectuer manuellement les modifications de cette manière:
-
Utilisez Rechercher et remplacer pour rechercher tous les points de votre texte, en remplaçant les points sans fin de phrase par le caractère marqueur (# dans la technique ci-dessus).
-
Utilisez l’outil Texte en colonnes pour séparer les phrases.
-
Utilisez Rechercher et remplacer pour ramener toutes les occurrences du caractère marqueur à une période.
Encore une fois, si vous avez beaucoup de périodes sans fin de phrase, ce processus peut prendre un certain temps.
Bien entendu, ces approches traitent de ce qui est en fait un sujet complexe.
La vraie question est de savoir comment définir une phrase? En anglais, il n’y a que trois signes de ponctuation qui terminent une phrase: un point, un point d’exclamation et un point d’interrogation. Il existe cependant des variantes et des exceptions. Par exemple, une phrase peut se terminer par un guillemet, mais ce guillemet aura toujours l’un des trois signes de ponctuation de fin devant lui. De plus, un point pourrait être utilisé pour marquer une abréviation, comme déjà indiqué.
Si vous commencez à utiliser Rechercher et remplacer pour gérer tous ces signes de ponctuation et exceptions, vous pouvez rapidement vous lancer dans une série d’étapes compliquées. Il est préférable d’essayer de faire le fractionnement à l’aide d’une macro. En voici une qui gérera correctement la plupart des phrases et des abréviations:
Sub SplitSentences() Dim c As Range Dim sException(8) As String Dim sReplacement(8) As String Dim sTerm(6) As String Dim sTemp As String Dim J As Integer Dim sExp As Variant ' These are the valid ways for a sentence to end sTerm(1) = ". " sTerm(2) = "! " sTerm(3) = "? " sTerm(4) = "." & Chr(34) sTerm(5) = "!" & Chr(34) sTerm(6) = "?" & Chr(34) ' These are the exceptions to the rule ' of a period ending a sentence sException(1) = "Mr." sException(2) = "Mrs." sException(3) = "Ms." sException(4) = "Dr." sException(5) = "Esq." sException(6) = "Ph.D." sException(7) = "a.m." sException(8) = "p.m." ' Set up the replacements for the exceptions For J = 1 To 8 sReplacement(J) = Replace(sException(J), ".", "[{}]") Next J For Each c In Selection sTemp = c.Value ' Convert all the exceptions For J = 1 To 8 sTemp = Replace(sTemp, sException(J), sReplacement(J)) Next J ' Demarcate sentences with a tab For J = 1 To 6 sTemp = Replace(sTemp, sTerm(J), Trim(sTerm(J)) & Chr(9)) Next J ' Split sentences into an array sExp = Split(sTemp, Chr(9)) For J = 0 To UBound(sExp) ' Replace the code for valid periods sExp(J) = Replace(sExp(J), "[{}]", ".") ' Place sentences into adjacent cells on row c.Offset(0, J).Value = Trim(sExp(J)) Next J Next c End Sub
Notez que les terminaisons de phrases acceptables sont notées dans le tableau sTerm et les abréviations acceptables sont dans le tableau sException. Si votre texte peut avoir d’autres abréviations, vous voudrez développer le tableau sException pour les inclure.
La macro parcourt les cellules que vous avez sélectionnées et remplace toutes les exceptions acceptables. Il remplace ensuite toutes les terminaisons de phrases acceptables par cette terminaison suivie d’un caractère de tabulation.
Il sépare ensuite les phrases en fonction de l’emplacement du caractère de tabulation. Enfin, il restaure toutes les périodes valides qui étaient dans les abréviations et place les phrases sur les cellules adjacentes dans la même ligne.
Notez que la macro remplace tout ce qui était dans les cellules sélectionnées et dans le nombre de cellules nécessaires à la droite de la sélection pour stocker les phrases. Pour cette raison, vous souhaiterez peut-être vous assurer que vous enregistrez votre feuille de calcul d’origine avant de sélectionner une plage de cellules et d’exécuter la macro.
Enfin, vous voudrez peut-être noter que la macro n’est pas parfaite. Il est parfaitement acceptable du point de vue d’un grammairien qu’une abréviation termine une phrase. Lorsque cela se produit, la ponctuation appropriée dicte que le point final de l’abréviation sert également de période de fin pour la phrase, comme dans ces deux phrases courtes:
Sheila earned her Ph.D. She was very happy.
Maintenant, considérons la seule phrase suivante:
Sheila earned her Ph.D. from an Ivy League school.
Lorsque vous comparez les deux exemples (les deux phrases par rapport à la phrase unique), il n’y a aucun moyen de discerner, par programmation, entre si Ph.D. termine une phrase ou si elle apparaît au milieu de la phrase sans vérifier si le mot suivant commence par une majuscule ou un guillemet suivi d’une majuscule. Cela peut devenir assez complexe très rapidement. De plus, cela s’applique à toutes les abréviations, pas seulement au doctorat. Plutôt que d’essayer d’anticiper et de gérer toutes ces occurrences, la macro mentionnée ci-dessus n’essaie même pas de discerner si une abréviation termine une phrase ou non – elle traite simplement toutes les abréviations comme si elles se trouvaient au milieu d’une phrase.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (12549) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.