Fractionnement de texte avec tableurs
Il peut être utile de savoir scinder une chaîne de caractères en deux avec un tableur. Typiquement, le nom et le prénom sont sur une même colonne et nous voulons que ces deux éléments apparaissent sur deux colonnes distinctes. Il ne s’agit donc pas de créer une variable à partir d’une autre, par exemple extraire l’année de naissance à partir d’un code de sécurité sociale, mais bien d’obtenir deux nouvelles variables.
Comment faire ? Nous étudierons un exemple simple avec Excel et Google Sheets avant d’aborder une situation plus difficile.
Problème simple
Soit une liste de matricules dont les chiffres sont séparés d’une lettre par une espace.
Nous souhaitons que cette liste apparaisse sur deux colonnes, l’une pour les chiffres et l’autre pour les lettres. Remarquez que le nombre de chiffres n’est pas toujours le même. En revanche, il n’y a toujours qu’une seule lettre.
Pour isoler les lettres, une solution est de créer une colonne avec la fonction qui extrait le caractère de droite (voir le nettoyage de texte).
Pour les chiffres, la formule suivante fait l’affaire :
Cette solution s’applique aux cas simples comme celui-ci où une partie à extraire est de longueur fixe. Il n’est pas possible d’extrapoler cette technique aux noms et prénoms.
Excel
Comment faire autrement avec Excel ?
Nous supposerons dans un premier temps qu’il n’y a pas d’espaces en trop.
Sur une autre colonne, employez la fonction FRACTIONNER.TEXTE. Assurez-vous d’en avoir une vierge à sa droite (ci-dessous, colonnes B et C).
Pour cette fonction, vous devez préciser la référence de la cellule et le délimiteur (en l’occurrence l’espace, à placer entre guillemets). Résultat :
Notez que la colonne C est remplie automatiquement alors qu’elle ne contient aucune formule.
Nous vous recommandons de nettoyer préalablement la table des espaces en trop. Mais supposons que cette étape n’a pas été réalisée et modifions notre exemple. Cette fois-ci, un matricule est précédé d’un blanc et un autre contient deux espaces entre les chiffres et la lettre. Avec la procédure décrite, le résultat est le suivant :
Toutefois, vous obtiendrez le résultat recherché sans nettoyage préalable avec la formule suivante :
=FRACTIONNER.TEXTE(A2 ; " ";;VRAI)
Google Sheets
Sélection de la colonne. Onglet Données, puis Scinder le texte en colonnes. Un petit menu contextuel vous propose un choix de séparateurs.
Les matricules tels qu’ils apparaissaient au départ ont disparu, remplacés par les nouveaux. Pour conserver la colonne d’origine comme ci-dessus avec Excel, on recourt à la fonction SPLIT. Par défaut, elle gère les espaces en trop.
Exemple plus complexe (Excel)
Partons du tableau suivant, qui illustre la page sur les modifications de textes.
Nous souhaitons scinder la colonne Individus en deux : une pour les prénoms et une pour les noms. Nous l’avons vu, en théorie la procédure ne pose guère de difficultés. Mais un léger problème nous contraint à une opération manuelle qui peut être longue si les données sont très nombreuses.
En effet, la procédure s’appuie sur l’espace qui sépare le nom et le prénom. Hélas pour notre analyse, il existe des noms et des prénoms composés. En français, des tirets nous aident à y voir clair mais ce n’est pas le cas dans toutes les langues. En l’occurrence, notre exemple contient la chaîne de caractères Edgar Allan Poe. Or, le tableur ne peut pas savoir si Allan fait partie du nom ou du prénom !
À moins de pouvoir modifier les données en amont, nous n’avons pas d’autre choix que de de remplacer des espaces par autre chose, par exemple un point. Si l’intitulé est Edgar.Allan Poe, Excel sait que Allan est une partie du prénom.
Pour nous aider dans cette fastidieuse tâche, nous pouvons compter les espaces des chaînes de caractères dans une nouvelle colonne.
Il n’a pas de fonction pour cela et nous devons écrire une formule. Elle consiste à compter d’une part le nombre de caractères de la chaîne de texte et d’autre part cette dernière à laquelle on a substitué les espaces par du vide (voir les modifications de textes). La différence entre les deux est le nombre d’espaces.
Vous pouvez ensuite filtrer ou trier la colonne nouvellement créée. Les noms à espaces multiples étant désormais ensemble, il est plus facile de les traiter un par un. Il est aussi possible de modifier en une seule opération tous les noms dont une partie est identique (Mac Mahon, Mac Orlan…) avec la fonction REMPLACER.
Ensuite, vous embrayez sur la fonction FRACTIONNER.TEXTE comme nous l'avons vu.