Suppression des espaces et des lignes vides dans Excel à l'aide de Regex

  • Partage Ça
Michael Brown

Utilisez des expressions régulières pour supprimer tous les espaces dans une cellule, remplacer plusieurs espaces par un seul caractère, couper les espaces entre les chiffres uniquement, etc.

Quelles que soient les données d'entrée que vous utilisez, vous rencontrerez difficilement un ensemble de données sans espaces. Dans la plupart des cas, les espaces blancs sont une bonne chose - vous les utilisez pour séparer visuellement différents éléments d'information afin de les rendre plus faciles à percevoir. Dans certaines situations, cependant, ils peuvent devenir un mal - les espaces supplémentaires peuvent perturber vos formules et rendre vos feuilles de calcul presque ingérables.

    Pourquoi utiliser une expression régulière pour couper les espaces dans Excel ?

    Avant de nous plonger dans les détails de l'utilisation des expressions régulières pour supprimer les espaces dans les feuilles de calcul Excel, j'aimerais répondre à la question qui me vient à l'esprit en premier lieu : pourquoi avons-nous besoin des expressions régulières alors qu'Excel dispose déjà de la fonction TRIM ?

    Pour comprendre la différence, voyons ce qui est considéré comme un espace blanc dans chaque cas :

    • La fonction TRIM intégrée ne peut dépouiller que les caractère d'espace qui a la valeur 32 dans le système ASCII à 7 bits.
    • Les expressions régulières peuvent identifier différentes formes d'espaces blancs, tels que l'espace ( ), la tabulation (\t), le retour chariot (\r), et la nouvelle ligne (\n). En outre, il existe la fonction caractère d'espacement (\s) qui correspond à tous ces types et s'avère extrêmement utile pour nettoyer les données d'entrée brutes.

    En sachant exactement ce qui se passe en coulisses, il est beaucoup plus facile de trouver une solution, n'est-ce pas ?

    Comment activer les expressions régulières dans Excel

    Il est bien connu qu'Excel ne supporte pas les expressions régulières. Pour les activer, vous devez créer une fonction VBA personnalisée. Heureusement, nous en avons déjà une, appelée RegExpReplace Attendez, pourquoi "remplacer" alors que nous parlons de supprimer ? Dans le langage Excel, "supprimer" est juste un autre mot pour "remplacer par une chaîne vide" :)

    Pour ajouter la fonction à votre Excel, il suffit de copier son code à partir de cette page, de le coller dans l'éditeur VBA et d'enregistrer votre fichier sous le nom de classeur activé par macro (.xlsm).

    Voici la syntaxe de la fonction pour votre référence :

    RegExpReplace(texte, motif, remplacement, [numéro_instance], [casse_correspondante])

    Les trois premiers arguments sont obligatoires, les deux derniers sont facultatifs.

    Où :

    • Texte - la chaîne originale à rechercher.
    • Patronage - l'expression rationnelle à rechercher.
    • Remplacement - le texte à remplacer par. Pour supprimer Espaces blancs vous devez définir cet argument sur l'un ou l'autre :
      • chaîne vide ("") pour couper absolument tous les espaces
      • espace caractère (" ") pour remplacer plusieurs espaces par un seul caractère d'espace.
    • Numéro d'instance (facultatif) - le numéro d'instance. Dans la plupart des cas, vous l'omettrez pour remplacer toutes les instances (par défaut).
    • Match_case (facultatif) - une valeur booléenne indiquant s'il faut faire correspondre (VRAI) ou ignorer (FAUX) la casse du texte. Pour les espaces blancs, elle n'est pas pertinente et donc omise.

    Pour plus d'informations, veuillez consulter la fonction RegExpReplace.

    Comment supprimer les espaces avec une expression rationnelle - exemples

    La fonction RegExpReplace ayant été ajoutée à votre classeur, abordons différents scénarios un par un.

    Suppression de tous les espaces à l'aide d'une expression rationnelle (regex)

    Pour supprimer tous les espaces d'une chaîne de caractères, il suffit de rechercher tout caractère d'espacement, y compris un espace, une tabulation, un retour chariot et un saut de ligne, et de les remplacer par une chaîne vide ("").

    Patronage : \s+

    Remplacement : ""

    En supposant que la chaîne source se trouve en A5, la formule en B5 est la suivante :

    =RegExpReplace(A5, "\s+", "")

    Pour faciliter la gestion de vos modèles, vous pouvez saisir la regex dans une cellule prédéfinie et la fournir à la formule en utilisant une référence absolue comme $A$2, de sorte que l'adresse de la cellule reste inchangée lorsque vous copiez la formule vers le bas de la colonne.

    =RegExpReplace(A5, $A$2, "")

    Supprimer plus d'un espace blanc

    Pour supprimer espaces blancs supplémentaires (c'est-à-dire plus d'un espace consécutif), utilisez la même regex \s+ mais remplacez les correspondances trouvées par un seul caractère espace.

    Patronage : \s+

    Remplacement : " "

    =RegExpReplace(A5, "\s+", " ")

    Veuillez noter que cette formule conserve un caractère d'espacement non seulement entre les mots, mais aussi au début et à la fin d'une chaîne de caractères, ce qui n'est pas bon. Pour éliminer les espaces blancs de début et de fin, imbriquez la formule ci-dessus dans une autre fonction RegExpReplace qui supprime les espaces du début et de la fin :

    =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+".

    Regex pour supprimer les espaces blancs de début et de fin de ligne

    Pour rechercher les espaces au début ou à la fin d'une ligne, utilisez les ancres de début ^ et de fin $.

    Chef de file les espaces blancs :

    Patronage : ^[\s]+

    Traînée les espaces blancs :

    Patronage : [\s]+$

    Chef de file et suivi de les espaces blancs :

    Patronage : ^[\s]+

    Quelle que soit la regex que vous choisissez, remplacez les correspondances par rien.

    Remplacement : ""

    Par exemple, pour éliminer tous les espaces au début et à la fin d'une chaîne de caractères en A5, la formule est la suivante :

    =RegExpReplace(A5, "^[\s]+

    Comme le montre la capture d'écran ci-dessous, cette opération ne supprime que les espaces avant et arrière. Les espaces entre les mots restent intacts, ce qui crée une vue agréable pour l'œil du lecteur.

    Supprimez les espaces blancs supplémentaires mais conservez les sauts de ligne

    Lorsque vous travaillez avec des chaînes de caractères à plusieurs lignes, vous pouvez souhaiter vous débarrasser des espaces supplémentaires tout en préservant les sauts de ligne. Pour ce faire, au lieu du caractère d'espacement \s, recherchez des espaces [ ] ou des espaces et des tabulations [\t ]. Ce dernier modèle est pratique lorsque vos données sources sont importées d'une autre source, par exemple d'un éditeur de texte.

    Dans l'ensemble de données ci-dessous, supposons que vous souhaitiez supprimer tous les espaces de début et de fin de ligne ainsi que tous les espaces intermédiaires sauf un, tout en conservant plusieurs lignes intactes.

    La première fonction remplace les espaces multiples par un seul caractère d'espace.

    =RegExpReplace(A5, " +", " ")

    L'autre enlève les espaces du début et de la fin d'une ligne :

    =RegExpReplace(A5, "^ +

    Il suffit d'imbriquer les deux fonctions l'une dans l'autre :

    =RegExpReplace(RegExpReplace(A5, " +", " "), "^ +

    Et vous obtiendrez un résultat parfait :

    Regex pour remplacer plusieurs espaces par un seul caractère

    Si vous souhaitez supprimer tous les espaces d'une chaîne et remplacer chaque groupe d'espaces consécutifs par un caractère spécifique, voici ce que vous devez faire :

    Tout d'abord, utilisez cette regex pour couper les espaces de début et de fin :

    =RegExpReplace(A8, "^[\s]+

    Ensuite, servez la fonction ci-dessus à l texte argument d'un autre RegExpReplace qui remplace un ou plusieurs espaces blancs consécutifs par le caractère que vous spécifiez, par exemple un trait d'union :

    Patronage : \s+

    Remplacement : -

    En supposant que la chaîne source est en A8, la formule prend cette forme :

    =RegExpReplace(RegExpReplace(A8,"^[\s]+

    Vous pouvez également saisir les motifs et les remplacements dans des cellules séparées, comme indiqué dans la capture d'écran :

    Regex pour supprimer les lignes vides

    Voici une question que les utilisateurs qui ont plusieurs lignes dans une cellule posent fréquemment : "Il y a beaucoup de lignes vides dans mes cellules. Y a-t-il un moyen de s'en débarrasser autrement qu'en passant par chaque cellule et en supprimant chaque ligne manuellement ?" La réponse : C'est facile !

    Pour correspondre aux lignes vides qui ne contiennent pas un seul caractère depuis le début ^ de la ligne actuelle jusqu'à la ligne suivante \n, la regex est :

    Patronage : ^\n

    Si vos lignes visuellement vides contiennent des espaces ou des tabulations, utilisez cette expression régulière :

    Patronage : ^[\t ]*\n

    Il suffit de remplacer l'expression rationnelle par une chaîne vide à l'aide de cette formule, et toutes les lignes vides disparaîtront d'un coup !

    =RegExpReplace(A5, $A$2, "")

    Suppression des espaces avec RegEx Tools

    Les exemples ci-dessus n'ont démontré qu'une petite partie des merveilleuses possibilités offertes par les expressions régulières. Malheureusement, toutes les fonctionnalités des expressions régulières classiques ne sont pas disponibles en VBA.

    Heureusement, les outils RegEx inclus dans notre Ultimate Suite sont exempts de ces limitations car ils sont traités par le moteur RegEx .NET de Microsoft. Cela vous permet de construire des modèles plus sophistiqués qui ne sont pas pris en charge par VBA RegExp. Vous trouverez ci-dessous un exemple d'une telle expression régulière.

    Regex pour supprimer l'espace entre les chiffres

    Dans une chaîne alphanumérique, supposons que vous souhaitiez supprimer les espaces entre les chiffres uniquement, de sorte qu'une chaîne telle que "A 1 2 B" devienne "A 12 B".

    Pour faire correspondre un espace entre deux chiffres, vous pouvez utiliser les solutions de contournement suivantes :

    Patronage : (?<=\d)\s+(?=\d)

    Pour créer une formule basée sur les regex ci-dessus, voici deux étapes simples à réaliser :

    1. Sur le Ablebits Data dans l'onglet Texte cliquez sur Outils Regex .

    2. Sur le Outils Regex sélectionnez les données sources, entrez votre expression rationnelle, choisissez l'onglet Retirer et appuyez sur Retirer .

      Pour obtenir les résultats sous forme de formules, et non de valeurs, n'oubliez pas de mettre une coche dans le champ Insérer comme une formule la case à cocher.

    Dans un instant, vous verrez le AblebitsRegexRemove insérée dans une nouvelle colonne à droite des données originales.

    Vous pouvez également saisir l'expression rationnelle dans une cellule, par exemple A5, et insérer la formule directement dans une cellule à l'aide de la commande Fonction d'insertion AblebitsRegexRemove est classé dans la catégorie AblebitsUDFs .

    Comme cette fonction est spécialement conçue pour supprimer les chaînes de caractères, elle ne requiert que deux arguments - la chaîne de caractères d'entrée et la regex :

    =AblebitsRegexRemove(A5, $A$2)

    Voilà comment supprimer les espaces dans Excel à l'aide d'expressions régulières. Je vous remercie de votre lecture et j'ai hâte de vous retrouver sur notre blog la semaine prochaine !

    Téléchargements disponibles

    Supprimer les espaces avec regex - exemples (fichier .xlsm)

    Ultimate Suite - version d'essai (fichier .exe)

    Michael Brown est un passionné de technologie passionné par la simplification de processus complexes à l'aide d'outils logiciels. Avec plus d'une décennie d'expérience dans l'industrie de la technologie, il a perfectionné ses compétences dans Microsoft Excel et Outlook, ainsi que dans Google Sheets et Docs. Le blog de Michael est dédié au partage de ses connaissances et de son expertise avec les autres, en fournissant des conseils et des tutoriels faciles à suivre pour améliorer la productivité et l'efficacité. Que vous soyez un professionnel chevronné ou un débutant, le blog de Michael offre des informations précieuses et des conseils pratiques pour tirer le meilleur parti de ces outils logiciels essentiels.