Rapport de message :*
 

Re: Supprimer les espaces d'une cellule

Titre du sujet : Re: Supprimer les espaces d'une cellule
par Razmo le 27/01/2023 19:12:39

[quote] Razmo a écrit :

Bonsoir MyDearFriend et le forum,

 

Oui tout a bien été déclaré au depart.

 

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):  

 

J'ai défini un errorHandler pour m'aider à trouver mon erreur : 

ErrorHandler:
    MsgBox Err.Number & vbLf & Err.Description & vbLf & "Current ShortName = " & SHORT_NAME.Text

Je me demande si ce n'est pas la boucle qui est défini au mauvais endroit.

 

Code source : 

Public Sub DiagMatrixCheck()

Dim MATRIX_WB As Workbook
Dim MATRIX_WS As Worksheet
Dim DIFF_WS As Worksheet
Dim DIFF_WB As Workbook
Dim MaCellule As Range, MaPlage As Range
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")


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

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

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