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 : 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)
Si y'a besoin de tout le code hésitez pas à me le dire :) Merci par avance !
|
|
|
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 : 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… |
|
|
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 : 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)
|
|
|
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 : 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
|
|
|
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 : 26-01-2023 18h04
Bonjour Razmo, ,le Forum,
Encore une fois, tu y étais presque !
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 :
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
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 : 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 ? |
|
|
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 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 :
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
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 : 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):
|
|
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 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):
|
|
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 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é. |
|
|