Table des matières
Dans les deux derniers articles, nous avons examiné les différentes façons de supprimer des caractères des chaînes de caractères dans Excel. Aujourd'hui, nous allons étudier un autre cas d'utilisation - comment supprimer tout ce qui se trouve avant ou après un caractère spécifique.
Supprimez le texte avant, après ou entre 2 caractères avec Rechercher & Remplacer
Pour manipuler des données dans plusieurs cellules, la fonction Rechercher et remplacer est l'outil idéal. Pour supprimer une partie d'une chaîne de caractères précédant ou suivant un caractère spécifique, voici les étapes à suivre :
- Sélectionnez toutes les cellules où vous voulez supprimer du texte.
- Appuyez sur Ctrl + H pour ouvrir le Rechercher et remplacer dialogue.
- Dans le Trouvez ce que saisissez l'une des combinaisons suivantes :
- Pour éliminer le texte avant un caractère donné tapez le caractère précédé d'un astérisque (*char).
- Pour supprimer le texte après un certain caractère tapez le caractère suivi d'un astérisque (char*).
- Pour supprimer une sous-chaîne entre deux personnages tapez un astérisque entouré de 2 caractères (char*char).
- Laissez le Remplacer avec boîte vide.
- Cliquez sur Remplacer tous les .
Par exemple, pour supprimer tout ce qui se trouve après une virgule y compris la virgule elle-même, mettez une virgule et un signe astérisque (,*) dans le champ Trouvez ce que et vous obtiendrez le résultat suivant :
Pour supprimer une sous-chaîne avant une virgule Dans le champ de saisie, tapez un astérisque, une virgule et un espace (*, ). Trouvez ce que boîte.
Veuillez noter que nous ne remplaçons pas seulement une virgule mais aussi une virgule et un espace Si vos données sont séparées par des virgules sans espace, utilisez un astérisque suivi d'une virgule (*,).
Pour supprimer du texte entre deux virgules utilisez un astérisque entouré de virgules (,*,).
Conseil : si vous préférez que les noms et les numéros de téléphone soient séparés par une virgule, tapez une virgule (,) dans le champ Remplacer par champ.
Supprimer une partie du texte à l'aide de Flash Fill
Dans les versions modernes d'Excel (2013 et suivantes), il existe un autre moyen facile d'éradiquer le texte qui précède ou suit un caractère spécifique : la fonction de remplissage flash. Voici comment elle fonctionne :
- Dans une cellule située à côté de la première cellule contenant vos données, tapez le résultat attendu et appuyez sur Entrée .
- Commencez à taper une valeur appropriée dans la cellule suivante. Dès qu'Excel sent le modèle dans les valeurs que vous saisissez, il affiche un aperçu des cellules restantes qui suivent le même modèle.
- Appuyez sur la touche Entrée pour accepter la suggestion.
C'est fait !
Supprimer du texte à l'aide de formules
Dans Microsoft Excel, de nombreuses manipulations de données effectuées à l'aide de fonctions intégrées peuvent également être réalisées à l'aide d'une formule. Contrairement aux méthodes précédentes, les formules n'apportent aucune modification aux données d'origine et vous permettent de mieux contrôler les résultats.
Comment supprimer tout ce qui suit un caractère spécifique
Pour supprimer le texte après un caractère particulier, la formule générique est la suivante :
GAUCHE( cellule , SEARCH(" char ", cellule ) -1)Ici, nous utilisons la fonction SEARCH pour obtenir la position du caractère et la transmettre à la fonction LEFT, afin qu'elle extraie le nombre correspondant de caractères du début de la chaîne. Un caractère est soustrait du nombre retourné par SEARCH pour exclure le délimiteur des résultats.
Par exemple, pour supprimer une partie d'une chaîne de caractères après une virgule, vous entrez la formule suivante dans B2 et la faites glisser vers le bas jusqu'à B7 :
=GAUCHE(A2, SEARCH(",", A2) -1)
Comment supprimer tout ce qui précède un caractère spécifique
Pour supprimer une partie d'une chaîne de texte avant un certain caractère, la formule générique est la suivante :
DROIT( cellule , LEN( cellule ) - SEARCH(" char ", cellule ))Ici, nous calculons à nouveau la position du caractère cible à l'aide de SEARCH, nous la soustrayons de la longueur totale de la chaîne renvoyée par LEN, et nous transmettons la différence à la fonction RIGHT, afin qu'elle retire ce nombre de caractères de la fin de la chaîne.
Par exemple, pour supprimer le texte avant une virgule, la formule est la suivante :
=RIGHT(A2, LEN(A2) - SEARCH(",", A2))
Dans notre cas, la virgule est suivie d'un caractère d'espacement. Pour éviter que les résultats ne contiennent des espaces en tête, nous enveloppons la formule de base dans la fonction TRIM :
=TRIM(RIGHT(A2, LEN(A2) - SEARCH(",", A2)))
Notes :
- Les deux exemples ci-dessus supposent qu'il y a seulement une seule fois du délimiteur dans la chaîne originale. S'il y a plusieurs occurrences, le texte sera supprimé avant/après le délimiteur. premier cas .
- La fonction SEARCH est non sensible à la casse Si votre caractère spécifique est une lettre et que vous voulez distinguer la casse de la lettre, utilisez l'attribut sensible à la casse Fonction FIND au lieu de SEARCH.
Comment supprimer le texte après la Nième occurrence d'un caractère ?
Lorsqu'une chaîne source contient plusieurs occurrences du délimiteur, vous pouvez avoir besoin de supprimer le texte après une instance spécifique. Pour cela, utilisez la formule suivante :
GAUCHE( cellule , FIND("#", SUBSTITUTE( cellule , " char ", "#", n )) -1)Où n est l'occurrence du caractère après lequel il faut supprimer le texte.
La logique interne de cette formule exige l'utilisation d'un caractère qui n'est présent nulle part dans les données sources, un symbole de dièse (#) dans notre cas. Si ce caractère est présent dans votre ensemble de données, utilisez autre chose à la place de "#".
Par exemple, pour supprimer tout ce qui suit la deuxième virgule dans A2 (et la virgule elle-même), la formule est la suivante :
=GAUCHE(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Comment fonctionne cette formule :
La partie clé de la formule est la fonction FIND qui calcule la position du nième délimiteur (virgule dans notre cas). Voici comment procéder :
Nous remplaçons la 2ème virgule de A2 par un symbole dièse (ou tout autre caractère qui n'existe pas dans vos données) à l'aide de SUBSTITUTE :
SUBSTITUTE(A2, ",", "#", 2)
La chaîne de caractères résultante va au 2ème argument de FIND, qui trouve donc la position de "#" dans cette chaîne :
FIND("#", "Emma, Design# (102) 123-4568")
FIND nous indique que "#" est le 13ème caractère de la chaîne. Pour connaître le nombre de caractères qui le précèdent, il suffit de soustraire 1, et vous obtiendrez 12 comme résultat :
FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1
Ce numéro va directement à la nombre_de_chars de LEFT en lui demandant d'extraire les 12 premiers caractères de A2 :
=LEFT(A2, 12)
C'est ça !
Comment supprimer le texte avant la Nième occurrence d'un caractère ?
La formule générique pour supprimer une sous-chaîne avant un certain caractère est la suivante :
Par exemple, pour supprimer le texte avant la deuxième virgule dans A2, la formule est la suivante :
=RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Pour éliminer un espace de tête, nous utilisons à nouveau la fonction TRIM comme enveloppe :
=TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))
Comment fonctionne cette formule :
En résumé, nous déterminons combien de caractères se trouvent après le nième délimiteur et extrayons une sous-chaîne de la longueur correspondante à droite. La formule est décomposée ci-dessous :
Tout d'abord, nous remplaçons la deuxième virgule de A2 par un symbole de hachage :
SUBSTITUTE(A2, ",", "#", 2)
La chaîne de caractères qui en résulte va dans le texte argument du DROIT :
RIGHT("Emma, Design# (102) 123-4568", ...
Ensuite, nous devons définir le nombre de caractères à extraire de la fin de la chaîne. Pour cela, nous trouvons la position du symbole de hachage dans la chaîne ci-dessus (qui est 13) :
FIND("#", SUBSTITUTE(A2, ",", "#", 2))
Et la soustraire de la longueur totale de la chaîne (qui est égale à 28) :
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))
La différence (15) est envoyée au deuxième argument de RIGHT pour lui demander d'extraire les 15 derniers caractères de la chaîne de caractères du premier argument :
RIGHT("Emma, Design# (102) 123-4568", 15)
La sortie est une sous-chaîne " (102) 123-4568", qui est très proche du résultat souhaité, à l'exception d'un espace en tête. Nous utilisons donc la fonction TRIM pour nous en débarrasser.
Comment supprimer le texte après la dernière occurrence d'un caractère ?
Si vos valeurs sont séparées par un nombre variable de délimiteurs, vous pouvez supprimer tout ce qui se trouve après la dernière instance de ce délimiteur, en utilisant la formule suivante :
GAUCHE( cellule , FIND("#", SUBSTITUTE( cellule , " char ", "#", LEN( cellule ) - LEN(SUBSTITUTE( cellule , " char ", "")))) -1)Supposons que la colonne A contienne diverses informations sur les employés, mais que la valeur après la dernière virgule soit toujours un numéro de téléphone. Votre objectif est de supprimer les numéros de téléphone et de conserver tous les autres détails.
Pour atteindre l'objectif, vous pouvez supprimer le texte après la dernière virgule dans A2 avec cette formule :
=GAUCHE(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)
Copiez la formule vers le bas de la colonne, et vous obtiendrez ce résultat :
Comment fonctionne cette formule :
L'essentiel de la formule consiste à déterminer la position du dernier délimiteur (virgule) dans la chaîne et à tirer une sous-chaîne de gauche à droite jusqu'au délimiteur. Obtenir la position du délimiteur est la partie la plus délicate, et voici comment nous la gérons :
Pour ce faire, nous remplaçons chaque virgule par un rien ("") et nous soumettons la chaîne résultante à la fonction LEN :
LEN(SUBSTITUTE(A2, ",",""))
Pour A2, le résultat est 35, qui est le nombre de caractères de A2 sans virgule.
Soustrayez le nombre ci-dessus de la longueur totale de la chaîne (38 caractères) :
LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))
... et vous obtiendrez 3, qui est le nombre total de virgules dans A2 (et aussi le numéro ordinal de la dernière virgule).
Ensuite, vous utilisez la combinaison déjà connue des fonctions FIND et SUBSTITUTE pour obtenir la position de la dernière virgule dans la chaîne de caractères. Le numéro d'instance (3e virgule dans notre cas) est fourni par la formule LEN SUBSTITUTE mentionnée ci-dessus :
FIND("#", SUBSTITUTE(A2, ",", "#", 3))
Il apparaît que la 3e virgule est le 23e caractère de A2, ce qui signifie que nous devons extraire les 22 caractères qui la précèdent. Nous mettons donc la formule ci-dessus moins 1 dans le fichier nombre_de_chars argument de GAUCHE :
GAUCHE(A2, 23-1)
Comment supprimer le texte avant la dernière occurrence d'un caractère ?
Pour supprimer tout ce qui précède la dernière instance d'un caractère spécifique, la formule générique est la suivante :
DROIT( cellule , LEN( cellule ) - FIND("#", SUBSTITUTE( cellule , " char ", "#", LEN( cellule ) - LEN(SUBSTITUTE( cellule , " char ", "")))))Dans notre exemple de tableau, pour éradiquer le texte avant la dernière virgule, la formule prend cette forme :
=RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))))
Comme touche finale, nous l'imbriquons dans la fonction TRIM pour éliminer les espaces de tête :
=TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))))
Comment fonctionne cette formule :
En résumé, nous obtenons la position de la dernière virgule comme expliqué dans l'exemple précédent et la soustrayons de la longueur totale de la chaîne :
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))
En conséquence, nous obtenons le nombre de caractères après la dernière virgule et le passons à la fonction DROIT, afin qu'elle ramène ce nombre de caractères de la fin de la chaîne.
Fonction personnalisée pour supprimer le texte de part et d'autre d'un caractère
Comme vous l'avez vu dans les exemples ci-dessus, vous pouvez résoudre presque tous les cas d'utilisation en utilisant les fonctions natives d'Excel dans différentes combinaisons. Le problème est que vous devez vous souvenir d'une poignée de formules délicates. Hmm, et si nous écrivions notre propre fonction pour couvrir tous les scénarios ? Cela semble être une bonne idée. Donc, ajoutez le code VBA suivant à votre classeur (les étapes détaillées pour insérer le VBA dans Excel sont les suivantesici) :
Function RemoveText(str As String, delimiter As String, occurrence As Integer, is_after As Boolean ) Dim delimiter_num, start_num, delimiter_len As Integer Dim str_result As String delimiter_num = 0 start_num = 1 str_result = "" delimiter_len = Len(delimiter) For i = 1 To occurrence delimiter_num = InStr(start_num, str, delimiter, vbTextCompare) If 0 <; delimiter_num Then start_num =delimiter_num + delimiter_len End If Next i If 0 <; delimiter_num Then If True = is_after Then str_result = Mid(str, 1, start_num - delimiter_len - 1) Else str_result = Mid(str, start_num) End If End If RemoveText = str_result End FunctionNotre fonction s'appelle RemoveText et il a la syntaxe suivante :
RemoveText(string, delimiter, occurrence, is_after)Où :
Chaîne de caractères - est la chaîne de texte originale, qui peut être représentée par une référence de cellule.
Délimiteur - le caractère avant/après lequel il faut supprimer le texte.
Occurrence - l'instance du délimiteur.
Est_après - une valeur booléenne qui indique de quel côté du délimiteur il faut supprimer le texte. Il peut s'agir d'un seul caractère ou d'une séquence de caractères.
- TRUE - supprime tout ce qui suit le délimiteur (y compris le délimiteur lui-même).
- FAUX - supprime tout ce qui précède le délimiteur (y compris le délimiteur lui-même).
Une fois le code de la fonction inséré dans votre classeur, vous pouvez supprimer les sous-chaînes des cellules à l'aide de formules compactes et élégantes.
Par exemple, pour effacer tout ce qui se trouve après la 1ère virgule dans A2, la formule dans B2 est :
=RemoveText(A3, ", ", 1, TRUE)
Pour supprimer tout ce qui se trouve avant la 1ère virgule dans A2, la formule dans C2 est :
=RemoveText(A3, ", ", 1, FALSE)
Puisque notre fonction personnalisée accepte un chaîne de caractères pour le délimiteur nous mettons une virgule et un espace (", ") dans le deuxième argument pour éviter d'avoir à couper les espaces de tête par la suite.
Notre fonction personnalisée fonctionne à merveille, n'est-ce pas ? Mais si vous pensez qu'il s'agit d'une solution complète, vous n'avez pas encore vu l'exemple suivant :)
Supprimez tout ce qui se trouve avant, après ou entre les caractères
Pour obtenir encore plus d'options pour supprimer des caractères individuels ou du texte dans plusieurs cellules, par correspondance ou par position, ajoutez notre Suite Ultime à votre boîte à outils Excel.
Ici, nous allons examiner de plus près les éléments suivants Supprimer par poste situé sur le Ablebits Data tab> ; Texte groupe> ; Retirer .
Nous aborderons ci-dessous les deux scénarios les plus courants.
Supprimez tout ce qui précède ou suit un certain texte
Supposons que toutes vos chaînes sources contiennent un mot ou un texte commun et que vous souhaitiez supprimer tout ce qui précède ou suit ce texte. Pour ce faire, sélectionnez vos données sources, exécutez la commande Supprimer par poste et configurez-le comme indiqué ci-dessous :
- Sélectionnez le Tous les caractères avant le texte ou Tous les caractères après le texte et tapez le texte (ou le caractère) clé dans la case qui lui correspond.
- Selon que les lettres majuscules et minuscules doivent être traitées comme des caractères différents ou identiques, cochez ou décochez l'option Sensible à la casse boîte.
- Hit Retirer .
Dans cet exemple, nous supprimons tous les caractères précédant le mot "erreur" dans les cellules A2:A8 :
Et obtenir exactement le résultat que nous recherchons :
Supprimer le texte entre deux caractères
Dans le cas où une information non pertinente se trouve entre deux caractères spécifiques, voici comment la supprimer rapidement :
- Choisissez Supprimer toutes les sous-chaînes et tapez deux caractères dans les cases ci-dessous.
- Si les caractères "entre" doivent également être supprimés, vérifiez l'option Incluant les délimiteurs boîte.
- Cliquez sur Retirer .
À titre d'exemple, nous supprimons tout ce qui se trouve entre deux caractères tilde (~), et obtenons comme résultat des chaînes de caractères parfaitement nettoyées :
Pour essayer d'autres fonctions utiles incluses dans cet outil multifonctionnel, je vous encourage à télécharger une version d'évaluation à la fin de cet article. Merci de votre lecture et j'espère vous voir sur notre blog la semaine prochaine !
Téléchargements disponibles
Suppression des premiers ou derniers caractères - exemples (fichier .xlsm)
Ultimate Suite - version d'essai (fichier .exe)