Supprimer les espaces d'une cellule
#1
Débutant XLPages

Inscription: 23/12/2022
De Paris

Messages: 16

Système d'exploitation:
pc
Version Excel utilisée:
365fr
Posté le : 26-01-2023 15h21

Bonjour à tous !

 

Mon problème est le suivant lorsque je copie la colonne d'un fichier (ou des espaces à gauche non voulu s'affiche) et que je colle cette colonne dans mon autre fichier je souhaite que ces espaces disparaissent.

Vous allez me dire pourquoi je n'efface tout simplement pas les espaces dans le fichier ou je copie la colonne car je ne peux pas XD (plus serieusement je n'ai pas le droit).

 

Je souhaite effacer les espaces à gauche et à droite aussi (on sait jamais) dans la colonne DTC code :

 

Le souci c'est que j'ai trouvé comment faire mais ça me le fait pas pour toutes les cellules... et je ne sais pas pourquoi comme vous pouvez le voir avec le screen du dessus.

 

J'ai déclaré deux variables : Dim counter As Long et Dim column As Integer.

Ensuite je leur attribut ça : counter = ActiveCell.Row et column = ActiveCell.column

Et j'ai rajouté ce bout de code lorsque je souhaite copier et coller ma colonne en supprimant les espaces : 

MATRIX_DTC_H_Datas.Copy 'Destination:=DIFF_DTC_H.Offset(1, 0)
DIFF_DTC_H.Offset(1, 0).Value = RTrim(Cells(counter, column).Value)
DIFF_DTC_H.Offset(1, 0).Value = LTrim(Cells(counter, column).Value)
DIFF_DTC_H.Offset(1, 0).PasteSpecial Paste:=xlPasteValues

 

Si y'a besoin de tout le code hésitez pas à me le dire :)

Merci par avance !

 

 

Hors Ligne
Rapport   Haut 

Re: Supprimer les espaces d'une cellule
#2
Débutant XLPages

Inscription: 23/12/2022
De Paris

Messages: 16

Système d'exploitation:
pc
Version Excel utilisée:
365fr
Posté le : 26-01-2023 15h34

J’ai re testé enfaite ça fonctionne pour aucune cellule, dans l’autre fichier certaines cellules ont des espaces et d’autres non…

Hors Ligne
Rapport   Haut 

Re: Supprimer les espaces d'une cellule
#3
Débutant XLPages

Inscription: 23/12/2022
De Paris

Messages: 16

Système d'exploitation:
pc
Version Excel utilisée:
365fr
Posté le : 26-01-2023 16h02

Re,

 

J'ai essayé d'utiliser la fonction Trim seulement mais ça ne fonctionne pas, peut-être que je l'utilise mal :

MATRIX_DTC_H_Datas.Copy 'Destination:=DIFF_DTC_H.Offset(1, 0)
DIFF_DTC_H.Offset(1, 0).PasteSpecial Paste:=xlPasteValues
DIFF_DTC_H.Offset(1, 0).Value = Trim(DIFF_DTC_H)
'DIFF_DTC_H.Offset(1, 0).Value = LTrim(Cells(counter, column).Value)

 

Hors Ligne
Rapport   Haut 

Re: Supprimer les espaces d'une cellule
#4
Débutant XLPages

Inscription: 23/12/2022
De Paris

Messages: 16

Système d'exploitation:
pc
Version Excel utilisée:
365fr
Posté le : 26-01-2023 17h14

Re,

 

J'ai pensé à faire une boucle de ce type : 

For Each MesCellules In MaPlage
'Étape 5: supprimer les espaces
If Not IsEmpty(MesCellules) Then
MesCellules = Trim(MesCellules)
End If

Mais si c'est ça ici "MesCellules" sont DIFF_DTC_H.Offset(1, 0) et "MaPlage" serait quoi ?

 

Mon code source si besoin : 

Public Sub DiagMatrixCheck()

Dim MATRIX_WB As Workbook
Dim MATRIX_WS As Worksheet
Dim DIFF_WS As Worksheet
Dim DIFF_WB As Workbook
Dim counter As Long
Dim column As Integer
Dim MATRIX_LABEL_H As Range, MATRIX_DETECT_H As Range, MATRIX_STATE_H As Range, MATRIX_DTC_H As Range
Dim MATRIX_LABEL As Range, MATRIX_DETECT As Range, MATRIX_STATE As Range, MATRIX_DTC As Range
Dim DIFF_DETECT_H As Range, DIFF_DETECT As Range, PREV_DIAG As Range, DIFF_LABEL_H As Range, DIFF_DTC_H As Range, DIFF_STATE_H As Range
Dim XML_FILE As String, XML_LABEL As String, XML_DETECT As String, PCODE As String, MATRIX_FILE As String
Dim XDOC As DOMDocument60
Dim SHORT_NAME, LONG_NAME, V_NAME, INSTANCE As Object
Dim i As Integer
Dim DebugText As String

Dim MATRIX_LABEL_H_Datas As Range, MATRIX_DETECT_H_Datas As Range, MATRIX_STATE_H_Datas As Range, MATRIX_DTC_H_Datas As Range
Dim nbLignDatas&


On Error GoTo ErrorHandler
'Application.ScreenUpdating = False

Sheets("Diff").UsedRange.Offset(2, 0).ClearContents

'Delete all comments
'Cells.ClearComments


'Open Excel Diag Matrix file
MATRIX_FILE = Application.GetOpenFilename(FileFilter:="Excel File (*.xls*), *.xls*", Title:="Open Excel File")
Set MATRIX_WB = Workbooks.Open(Filename:=MATRIX_FILE, ReadOnly:=False)
Set MATRIX_WS = MATRIX_WB.Sheets("Matrix")

Set DIFF_WB = ThisWorkbook
Set DIFF_WS = DIFF_WB.Sheets("Diff")

'Set the header for every used column of the matrix
With MATRIX_WS
    Set MATRIX_LABEL_H = .Range("A6").EntireRow.Find("Supplier Label")
    Set MATRIX_DETECT_H = .Range("A6").EntireRow.Find("Detection Class")
    Set MATRIX_STATE_H = .Range("A6").EntireRow.Find("State of the activation of the strategy")
    Set MATRIX_DTC_H = .Range("A6").EntireRow.Find("Data Trouble Code (DTC)")
    
    'set Datas range for these columns
    nbLignDatas = .Cells(.Rows.Count, MATRIX_LABEL_H.column).End(xlUp).Row - 6          'because header online 6
    Set MATRIX_LABEL_H_Datas = MATRIX_LABEL_H.Resize(nbLignDatas, 1).Offset(1, 0)
    nbLignDatas = .Cells(.Rows.Count, MATRIX_DETECT_H.column).End(xlUp).Row - 6         'because header online 6
    Set MATRIX_DETECT_H_Datas = MATRIX_DETECT_H.Resize(nbLignDatas, 1).Offset(1, 0)
    nbLignDatas = .Cells(.Rows.Count, MATRIX_STATE_H.column).End(xlUp).Row - 6          'because header online 6
    Set MATRIX_STATE_H_Datas = MATRIX_STATE_H.Resize(nbLignDatas, 1).Offset(1, 0)
    nbLignDatas = .Cells(.Rows.Count, MATRIX_DTC_H.column).End(xlUp).Row - 6            'because header online 6
    Set MATRIX_DTC_H_Datas = MATRIX_DTC_H.Resize(nbLignDatas, 1).Offset(1, 0)
End With

'Define variables for Diff tab
Set DIFF_DETECT_H = DIFF_WS.Range("A2").EntireRow.Find("Detection Class")
Set DIFF_LABEL_H = DIFF_WS.Range("A2").EntireRow.Find("Supplier Label")
Set DIFF_DTC_H = DIFF_WS.Range("A2").EntireRow.Find("DTC code")
Set DIFF_STATE_H = DIFF_WS.Range("A2").EntireRow.Find("Activation state")

counter = ActiveCell.Row
column = ActiveCell.column

'Copy and paste column Matrix to Diff
'Copy that cell values without comments
MATRIX_LABEL_H_Datas.Copy 'Destination:=DIFF_LABEL_H.Offset(1, 0)
DIFF_LABEL_H.Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_DETECT_H_Datas.Copy 'Destination:=DIFF_DETECT_H.Offset(1, 0)
DIFF_DETECT_H.Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_STATE_H_Datas.Copy 'Destination:=DIFF_STATE_H.Offset(1, 0)
DIFF_STATE_H.Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_DTC_H_Datas.Copy 'Destination:=DIFF_DTC_H.Offset(1, 0)
DIFF_DTC_H.Offset(1, 0).PasteSpecial Paste:=xlPasteValues
'DIFF_DTC_H.Offset(1, 0).Value = Trim(DIFF_DTC_H.Offset(0, 3))
'DIFF_DTC_H.Offset(1, 0).Value = LTrim(Cells(counter, column).Value)

DIFF_DETECT_H.Resize(nbLignDatas, 1).Offset(1, 1).Value = "Missing item in XML"

 

Edité par Razmo le 26/01/2023 17:57:39
Hors Ligne
Rapport   Haut 

Re: Supprimer les espaces d'une cellule
#5
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 26-01-2023 18h04

Bonjour Razmo, ,le Forum,

 

Encore une fois, tu y étais presque ! wink

 

Tu as visiblement effectué des recherches et tester certaines solutions par toi-même, et moi j'apprécie tes efforts, ça donne envie de te donner un coup de main.

 

Ta réflexion est tout à fait bonne au final :
 

  • C'est bien la fonction Trim() qu'il faut privilégier car, à elle seule, elle réalise ce que fait LTrim() et RTrim() réunies.
  • Il faut bien utiliser une boucle sur chaque cellule car cette fonction Trim() ne peut pas traiter une plage de cellules entière.

 

Quant à la définition de "MaPlage", je te propose ceci (en tenant compte du code présenté dans tes précédents fils de discussion) :

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

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

Nb: j'ai supprimé ton test sur cellule vide IsEmpty() car il me semble inutile ici : la fonction Trim() tolère les chaines vides sans générer d'erreur.

 

Bien cordialement,


Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Supprimer les espaces d'une cellule
#6
Débutant XLPages

Inscription: 23/12/2022
De Paris

Messages: 16

Système d'exploitation:
pc
Version Excel utilisée:
365fr
Posté le : 27-01-2023 10h04

Bonjour MyDearFriend et le forum !

 

Merci pour ton retour, lorsque je test ça me met cette erreur : 

J'ai défini mes deux variables MaPlace et MaCellule comme Range.

Et ensuite j'ai set les deux variables comme ceci :

Set MaPlage = DIFF_WS.UsedRange.Columns(DIFF_DTC_H.column)
Set MaCellule = DIFF_DTC_H.Offset(1, 0)

Ca donne ça niveau code : 

'Copy and paste column Matrix to Diff
'Copy that cell values without comments
MATRIX_LABEL_H_Datas.Copy 'Destination:=DIFF_LABEL_H.Offset(1, 0)
DIFF_LABEL_H.Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_DETECT_H_Datas.Copy 'Destination:=DIFF_DETECT_H.Offset(1, 0)
DIFF_DETECT_H.Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_STATE_H_Datas.Copy 'Destination:=DIFF_STATE_H.Offset(1, 0)
DIFF_STATE_H.Offset(1, 0).PasteSpecial Paste:=xlPasteValues
MATRIX_DTC_H_Datas.Copy 'Destination:=DIFF_DTC_H.Offset(1, 0)
DIFF_DTC_H.Offset(1, 0).PasteSpecial Paste:=xlPasteValues

Set MaPlage = DIFF_WS.UsedRange.Columns(DIFF_DTC_H.column)
Set MaCellule = DIFF_DTC_H.Offset(1, 0)


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

DIFF_DETECT_H.Resize(nbLignDatas, 1).Offset(1, 1).Value = "Missing item in XML"

Mais je me demande si je dois pas mettre mes deux lignes de code qui permet de copier et coller la colonne DTC dans ma boucle for ? 

Hors Ligne
Rapport   Haut 

Re: Supprimer les espaces d'une cellule
#7
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 27-01-2023 18h17

Bonjour Razmo, le Forum,

 

En principe, lorsque qu'une erreur apparait, la ligne de code générant cette erreur bloquante est surlignée en jaune dans l'éditeur VBA. A quel endroit le code s'est-il arrêté et quelle est la ligne concernée ?

Selon moi, l'erreur n'est pas liée aux lignes que tu as écrite ici...

 

Pour tenter d'éclaircir tout ça, je résume la situation :

  1.  Tu as déclaré correctement les objets ranges suivants :
    Dim MaCellule As Range, MaPlage As Range
  2.  L'extrait de code ressemble à ceci :
    'Copy and paste column Matrix to Diff
    'Copy that cell values without comments
    MATRIX_LABEL_H_Datas.Copy 'Destination:=DIFF_LABEL_H.Offset(1, 0)
    DIFF_LABEL_H.Offset(1, 0).PasteSpecial Paste:=xlPasteValues
    MATRIX_DETECT_H_Datas.Copy 'Destination:=DIFF_DETECT_H.Offset(1, 0)
    DIFF_DETECT_H.Offset(1, 0).PasteSpecial Paste:=xlPasteValues
    MATRIX_STATE_H_Datas.Copy 'Destination:=DIFF_STATE_H.Offset(1, 0)
    DIFF_STATE_H.Offset(1, 0).PasteSpecial Paste:=xlPasteValues
    MATRIX_DTC_H_Datas.Copy 'Destination:=DIFF_DTC_H.Offset(1, 0)
    DIFF_DTC_H.Offset(1, 0).PasteSpecial Paste:=xlPasteValues
    
    
    Set MaPlage = DIFF_WS.UsedRange.Columns(DIFF_DTC_H.Column)
    Set MaCellule = DIFF_DTC_H.Offset(1, 0)
    
    For Each MaCellule In MaPlage.Cells
        'Étape 5: supprimer les espaces
        MaCellule.Value = Trim(MaCellule.Value)
    Next MaCellule
    Remarque : les expressions barrées sont à supprimer car inutiles. Par ailleurs, l'objet MaCellule est défini directement dans la boucle For Each et n'a donc pas lieu d'être défini par un Set en amont. 
     

Mais, selon moi, ces expressions inutiles ne sont pas à l'origine de ton message d'erreur... Pour moi, ce code doit fonctionner correctement et ton erreur est certainement ailleurs...

 

Bien cordialement,


Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Supprimer les espaces d'une cellule
#8
Débutant XLPages

Inscription: 23/12/2022
De Paris

Messages: 16

Système d'exploitation:
pc
Version Excel utilisée:
365fr
Posté le : 27-01-2023 18h45

Bonsoir MyDearFriend et le forum,

 

Lorsque je met en commentaire cette partie de code (qui permet d'enlever les espaces) :

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 programme fonctionne bien (malgré que les espaces soient toujours présent).

En faisant un debogage "pas à pas détaillé" j'ai remarqué que le programme s'arrete juste apres cette ligne (ligne de code en jaune):  

Hors Ligne
Rapport   Haut 

Re: Supprimer les espaces d'une cellule
#9
Débutant XLPages

Inscription: 23/12/2022
De Paris

Messages: 16

Système d'exploitation:
pc
Version Excel utilisée:
365fr
Posté le : 27-01-2023 18h55

Bonsoir MyDearFriend et le forum,

 

Lorsque je met en commentaire cette partie de code (qui permet d'enlever les espaces) :

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 programme fonctionne bien (malgré que les espaces soient toujours présent).

En faisant un debogage "pas à pas détaillé" j'ai remarqué que le programme s'arrete juste apres cette ligne (ligne de code en jaune):

Hors Ligne
Rapport   Haut 

Re: Supprimer les espaces d'une cellule
#10
Débutant XLPages

Inscription: 23/12/2022
De Paris

Messages: 16

Système d'exploitation:
pc
Version Excel utilisée:
365fr
Posté le : 27-01-2023 18h56

Peux-tu me dire si tu vois bien ce que j'ai ecris car on dirait qu'une partie du message ne s'est pas envoyé.

Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes