Supprimer les espaces à gauche de toutes les cellules de ma colonne

Bonjour tout le monde !

J’ai un petit problème et j’aurais besoin d’aide s’il vous plait ^^
Ma macro fait certaines choses et dans ces certaines choses elle copie toutes les données de la colonne « Data Trouble Code (DTC) » qui est la colonne E de mon fichier Excel Matrix pour ensuite coller les informations de cette colonne dans le fichier DiffClasseur_Test dans la colonne « DTC code » qui est la colonne D de mon fichier Excel.

Pour cela j’ai implémenté un bout de code qui devrait faire ça

Set MaPlage = DIFF_WS.UsedRange.Columns(DIFF_DTC_H.Column)

For Each MaCellule In MaPlage.Cells
    'supprimer les espaces
    MaCellule.Value = Trim(MaCellule.Value)
Next MaCellule

Le problème c’est que ça ne fonctionne pas… sans le bout de code que j’ai mis juste au-dessus la macro fonctionne très bien sauf que dans la colonne « DTC code » de mon fichier DiffClasseur_Test il y’a toujours des espaces à gauche dans plusieurs cellules de la colonne.

image Vous allez me dire pourquoi tu supprimes pas manuellement les espaces directement dans le fichier principal Matrix ou l’on copie les informations de la colonne ? tout simplement car je n’ai pas le droit d’y toucher
Ce problème parait simple mais je bloque quand même dessus

Je vous laisse les fichiers ci-dessous pour tester si vous le souhaitez et pour regarder le code, le run prend du temps lorsqu’on lance la macro car il y’a beaucoup de donné dans le fichier XML.
Au lancement de la macro le 1er fichier à ouvrir est : Matrix.xlsm ensuite le 2ème à ouvrir est FichierXML.xml
Merci par avance !

Bonjour Abderrahmane,

J'ai testé les fichiers mais au lancement de la macro j'ai une erreur "13 - Incompatibilité de type" lié à la présence de valeurs d'erreur "#N/A" dans la colonne "DTC code". Je ne sais pas si c'est normal ou si cela provient du jeu d'essai.

Néanmoins, j'ai modifié la ligne de code MaCellule.Value = Trim(MaCellule.Value)
par If IsError(MaCellule.value) = False Then MaCellule.Value = Trim(MaCellule.Value) de manière à ne plus avoir d'erreur et tous les codes sont épurés des espaces début et fin.

Je ne sais pas si cela répond à ta problématique

Bonsoir Abderrahmane BENALI, Cylfo,

C'est que ce caractère n'est pas un espace mais le caractère espace insécable, sans doute.

Le nombre de caractères de Macellule est donc d'un caractère supplémentaire que le texte en lettres de l'alphabet

Donc il faut supprimer cet espace insécable par

For Each MaCellule In MaPlage.Cells
    'supprimer l'espace insécable
    MaCellule.Value = WorksheetFunction.Substitute(MaCellule.Value, Chr(160), "", 1)  
Next MaCellule

Sinon on peut aussi compter le nombre de caractères de Macellule. Puis de ne garder que Macellule -1. Dans le cas ou ce ne serait pas l'espace insécable.

For Each MaCellule In MaPlage.Cells
    'supprimer le premier caractère
    MaCellule.Value = Right(Macellule,len(MaCellule.Value)-1)
Next MaCellule

Bonjour XCellus,

Entre autre dans l'exemple donné par Abderrahmane il y a bien un espace au début du code et pas un espace insécable. Après la modif indiquée le code est épuré de l'espace début, voir copie d'écran ci-dessous.

- Dans le fichier Matrix.xlsm, il y a bien un caractère espace en début

- Dans le fichier DiffClasseur_Test.xlsm, après exécution de la macro modifiée, le caractère espace n'est plus présent.

capture d ecran 2023 02 23 084453

Bonjour Cylfo et X Cellus,

D'abord merci à vous deux d'avoir participer à la résolution de mon problème.

Pour répondre à ta question Cylfo les valeurs "#N/A" dans la colonne "DTC code" sont tout à fait normal, il y'a bien un espace de trop dans certaines cellules de la colonne DTC code. Après avoir tester avec ta ligne de code Cylfo ça fonctionne bien je te remercie pour ça !

Merci à vous deux pour vos propositions !

Rechercher des sujets similaires à "supprimer espaces gauche toutes colonne"