Découpage de tous les espaces (Microsoft Excel)
Sudhakar a des données dans la colonne A qui ont des espaces de fin. S’il utilise la fonction TRIM sur les données, il supprime certains espaces de fin, mais pas tous. Il se demande pourquoi certains espaces seraient ignorés et comment il peut tous les supprimer.
Il existe en fait plusieurs façons d’aborder ce problème.
La bonne méthode pour vos besoins dépendra, invariablement, de la nature des données que vous utilisez.
Tout d’abord, si vous utilisez TRIM sur une cellule, n’oubliez pas qu’il supprime uniquement les espaces. Ceci, par définition, signifie qu’il ne supprime que les caractères qui ont le code ASCII de 32. Malheureusement, il existe d’autres caractères ASCII qui apparaissent comme des «espaces», mais ne sont pas vraiment des espaces. Ceux-ci ne seront pas supprimés par TRIM.
Cela vous aiderait si vous pouviez comprendre ce que sont ces personnages embêtants, non? Eh bien, si le texte de la cellule n’est pas si long, voici une petite macro pratique qui examinera le contenu de la cellule et affichera chaque caractère, à son tour, avec sa valeur ASCII:
Sub StringContents() Dim sTemp As String Dim sMsg As String Dim J As Integer If Selection.Cells.Count > 1 Then sMsg = "Please select only one cell" Else sMsg = "Full string: >" & ActiveCell.Value & "<" & vbCrLf For J = 1 To Len(ActiveCell.Value) sTemp = Mid(ActiveCell.Value, J, 1) sMsg = sMsg & ">" & sTemp & "< " & Asc(sTemp) & vbCrLf Next J End If MsgBox sMsg End Sub
Pour utiliser la macro, sélectionnez simplement la cellule unique que vous souhaitez tester, puis exécutez-la. Vous vous retrouvez avec une boîte de message qui affiche la chaîne complète avec chaque caractère individuel dans la chaîne.
Une fois que vous connaissez la valeur ASCII du caractère incriminé que TRIM ne supprimera pas, vous pouvez effectuer une substitution pour ce caractère. Par exemple, si l’espace non-espace affiche une valeur ASCII de 160, vous pouvez effectuer la substitution de cette manière:
=SUBSTITUTE(A1,CHAR(160)," ")
Cela remplace le caractère d’espace réel pour tous les 160 caractères ASCII de la chaîne. Vous pouvez également supprimer d’autres faux espaces similaires.
Bien sûr, vous pouvez essayer d’utiliser une fonction Excel différente pour vous débarrasser de certains caractères ASCII non imprimables, comme ceci:
=CLEAN(A1)
Cela ne se débarrassera pas de tout, mais cela nettoie bien de nombreux personnages incriminés.
Vous pouvez même commencer à combiner des fonctions dans votre formule de nettoyage, de cette manière:
=TRIM(CLEAN(A1))
Vous pourriez aller plus loin, de cette manière:
=TRIM(SUBSTITUTE(CLEAN(A2),CHAR(160)," "))
Cette formule supprime les caractères ASCII 160 ainsi que les éléments capturés par CLEAN, puis effectue un TRIM sur ce résultat.
Si vous devez nettoyer un certain nombre de cellules ou si vous devez nettoyer les cellules régulièrement, vous pouvez envisager d’utiliser une macro pour faire le gros du travail. La macro suivante éliminera de nombreux caractères non imprimables, ne laissant que les caractères visibles et la ponctuation.
Sub CleanCells() Dim rTarget As Range Dim c As Range Dim sTemp As String Dim J As Integer Set rTarget = Selection.SpecialCells(xlCellTypeConstants, 2) For Each c In rTarget sTemp = c.Value For J = 1 To 31 sTemp = Replace(sTemp, Chr(J), " ") Next J For J = 127 To 255 sTemp = Replace(sTemp, Chr(J), " ") Next J c.Value = sTemp Next c End Sub
La macro ne fonctionne que sur les cellules de la sélection actuelle qui contiennent des valeurs constantes. En d’autres termes, les cellules qui ne contiennent pas de formules.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (5132) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.