Re: Supprimer les espaces d'une cellule
#11
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 19h12

[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"

 

Hors Ligne
Rapport   Haut 

Re: Supprimer les espaces d'une cellule
#12
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 20h48

Re,

 

Si le problème venait de la boucle mal placée, il n'y aurait aucune raison pour que l'erreur apparaisse une trentaine de lignes plus haut

 

Je ne vais pas mettre en doute ta façon de me présenter les choses, mais es-tu vraiment sûr que la ligne surlignée en jaune dans ton image précédente est réellement la ligne mise en évidence automatiquement par VBA lorsque l'erreur survient ?

 

Perso, j'ai un doute... car ton ErrorHandler est normalement fait - justement - pour empêcher les erreurs d'interrompre le code. Et c'est plutôt un handicap dans ta situation, car ici, on souhaiterais plutôt voir où le code plante !

 

Tu trouveras ci-joint, ton classeur d'origine "DiffClasseur.xlsm" dans lequel j'ai recopié tout le nouveau code que tu viens de fournir plus haut (et pour moi, la boucle est au bon endroit).

Pour simplifier, j'ai seulement désactivé toute la partie du code concernant le traitement XML qui n'a visiblement rien à voir avec le problème en cours d'analyse ici.

 

Je te laisse tester et voir... mais chez moi, ça fonctionne très bien. En traitant l'autre fichier que tu avais fourni "MatrixDiag.xlsm", je n'ai aucune erreur et le résultat me semble celui attendu.

 

Je te souhaite bon courage pour la suite.

Bien cordialement,

 

Pièce jointe:
xlsm PourRazmo_DiffClasseur.xlsm   [ Taille: 32.29 Ko - Téléchargements: 53 ]

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
#13
Débutant XLPages

Inscription: 23/12/2022
De Paris

Messages: 16

Système d'exploitation:
pc
Version Excel utilisée:
365fr
Posté le : 29-01 14h58

Bonjour MyDearFriend et le forum !

 

Merci à toi d'avoirs pris le temps de me répondre, concernant mon problème de départ qui sont les espaces je te remercie car ils ont disparu (tu avais raison le problème ne venait pas de la boucle).

 

Le problème vient d'ailleurs, lorsque je run j'ai cette erreur : 

 

Je vais essayer de voir si c'est pas en rapport avec la partie XML (car j'ai fait des modifications entre temps).

En tout cas merci à toi le problème de base etait les espaces et ça fonctionne maintenant, pour le reste je vais chercher ^^

 

Bonne journée !

Hors Ligne
Rapport   Haut 

Re: Supprimer les espaces d'une cellule
#14
Régulier XLPages

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 07-03 17h01

Et simplement avec controle H?
Tu mets dans la première cellule un espace et dans la seconde tu remplaces par rien.
Tu fais remplacer tout et terminé non?

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