Re: Supprimer les espaces d'une cellule | ||
---|---|---|
Inscription: 23/12/2022
De Paris
Messages:
16
Système d'exploitation: pc Version Excel utilisée: 365fr |
Posté le : 27-01-2023 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"
|
|
|
Re: Supprimer les espaces d'une cellule | ||
---|---|---|
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 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,
Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Supprimer les espaces d'une cellule | ||
---|---|---|
Inscription: 23/12/2022
De Paris
Messages:
16
Système d'exploitation: pc Version Excel utilisée: 365fr |
Posté le : 29-01-2023 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 ! |
|
|
Re: Supprimer les espaces d'une cellule | ||
---|---|---|
Inscription: 02/10/2008
Messages:
56
Système d'exploitation: PC Version Excel utilisée: 365 |
Posté le : 07-03-2023 17h01
Et simplement avec controle H? |
|
|