Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :
Purger les espaces de début et de fin
Lorsque des données sont importées dans un classeur de façon automatisée, il n'est pas rare que des défauts et irrégularités existent.
Sur l'exemple illustré par la capture, des noms de commerciaux sont inscrits en première colonne d'un tableau. Et comme vous le remarquez, des irrégularités d'alignement existent du fait de la présence d'espaces résiduels et variables en nombres en préfixes des textes. De même, en cliquant dans la barre de formule de l'une ou l'autre cellule, vous pouvez constater que ces espaces résiduels existent aussi en suffixes des textes.
Mais si l'utilisateur clique sur le bouton Purger, placé sur la droite du tableau, tout rentre dans l'ordre. Tous les espaces non désirés sont supprimés sans toucher aux espaces de séparation des mots. Et pour un tel travail, c'est un traitement automatisé qui est entrepris par le code VBA. Il consiste premièrement à parcourir toutes les cellules sélectionnées, grâce à une boucle For Each, comme nous l'avons démontré à l'occasion d'une précédente astuce.
Classeur Excel à télécharger
Pour la démonstration de la technique, nous suggérons d'appuyer l'étude sur un classeur abritant ces défauts à corriger.
Double cliquer sur le fichier réceptionné pour l'ouvrir dans Excel,
Puis, cliquer sur les boutons des bandeaux de sécurité pour libérer les ressources,
Nous découvrons bien le tableau avec ses défauts d'alignement en première colonne. Le bouton intitulé Purger est d'ores et déjà associé à une procédure VBA qu'il est question d'implémenter.
Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Excel,
Nous découvrons effectivement la procédure du même nom que le bouton.
Sub purger()
End Sub
La variable de cellule
Comme nous devons analyser chaque cellule sélectionnée à la recherche d'espaces résiduels, nous devons commencer par déclarer une variable capable de représenter ces cellules.
Dans les bornes de la procédure, ajouter la déclaration de variable suivante :
Sub purger()
Dim cellule As Range
End Sub
Comme nous l'avons déjà évoqué par le passé, une variable de type Range représente une plage de cellules et à défaut une cellule unique. C'est cette variable que nous allons utiliser pour parcourir toutes les cellules de la sélection.
Les cellules de la sélection
C'est une boucle For Each impliquant cette variable qui va nous permettre d'analyser tour à tour les cellules sélectionnées par l'utilisateur.
A la suite du code, créer la boucle For Each suivante :
...
For Each cellule In Selection
Next cellule
...
L'objet Selection est aussi un objet de type Range. Il désigne la plage de cellules sélectionnées sur la feuille. C'est ainsi que nous pouvons la parcourir en exploitant notre objet nommé cellule.
Supprimer les espaces dans les cellules
A chaque passage dans cette boucle, il ne nous reste plus qu'à appliquer la fonction Trim sur le contenu de la cellule en cours d'analyse.
Dans les bornes de la boucle, ajouter l'instruction VBA suivante :
...
cellule.Value = Trim(cellule.Value)
...
Trim est une fonction qui supprime tout simplement tous les espaces situés en préfixes et suffixes des chaînes de texte tout en préservant ceux séparant les mots.
Enregistrer les modifications (CTRL + S) et basculer sur la feuille Excel (ALT + Tab),
Sélectionner toutes les cellules de la première colonne du tableau, soit la plage B3:B18,
Puis, cliquer sur le bouton Purger,
En un clin d'oeil et comme vous pouvez l'apprécier, tous les défauts d'alignement sont corrigés et ce, pour toutes les cellules de la sélection. C'est le résultat opéré par le traitement de la fonction Trim sur chaque contenu analysé, afin d'éliminer les espaces résiduels placés avant et après les chaînes de caractères. Et pour cela, c'est un code VBA trivial qui est capable d'opérer sur de très grandes quantités d'informations de bases de données :
Sub purger()
Dim cellule As Range
For Each cellule In Selection
cellule.Value = Trim(cellule.Value)
Next cellule