Supprimer caractères multiples SOH
Résolu/Fermé
Informer
-
5 sept. 2019 à 22:21
infonotaire Messages postés 8 Date d'inscription lundi 30 juillet 2018 Statut Membre Dernière intervention 7 septembre 2019 - 7 sept. 2019 à 19:48
infonotaire Messages postés 8 Date d'inscription lundi 30 juillet 2018 Statut Membre Dernière intervention 7 septembre 2019 - 7 sept. 2019 à 19:48
A voir également:
- Soh notepad++
- Telecharger notepad++ - Télécharger - Édition & Programmation
- Notepad++ android - Télécharger - Traitement de texte
- Finale notepad - Télécharger - Outils professionnels
- Supprimer saut de ligne notepad++ ✓ - Forum Bureautique
- Notepad++ en français ✓ - Forum Logiciels
2 réponses
yg_be
Messages postés
22616
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 mars 2024
1 461
6 sept. 2019 à 12:17
6 sept. 2019 à 12:17
bonjour, as-tu essayé le simple replace suggéré sur stackoverflow?
peux-tu prouver qu'il reste des SOH après le replace?
peux-tu prouver qu'il reste des SOH après le replace?
infonotaire
Messages postés
8
Date d'inscription
lundi 30 juillet 2018
Statut
Membre
Dernière intervention
7 septembre 2019
Modifié le 7 sept. 2019 à 14:06
Modifié le 7 sept. 2019 à 14:06
yb_be,
Merci pour ton aide mais si tu initialises ta variable "str" SANS caractères SOH, ça me parait normal que ta variable str2 n'est pas de caractères SOH après un Replace.
Avec le code de ton exemple, même sans Replace tu auras str2 sans SOH
Vois plutôt ce que Replace donne après avoir implémenté mon code en modifiant
sPathDefault
sFileCrit
strFilter
Et tu verras que Replace ne fonctionne pas comme montré dans l'image
Merci pour ton aide mais si tu initialises ta variable "str" SANS caractères SOH, ça me parait normal que ta variable str2 n'est pas de caractères SOH après un Replace.
Avec le code de ton exemple, même sans Replace tu auras str2 sans SOH
Vois plutôt ce que Replace donne après avoir implémenté mon code en modifiant
sPathDefault
sFileCrit
strFilter
Et tu verras que Replace ne fonctionne pas comme montré dans l'image
yg_be
Messages postés
22616
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 mars 2024
1 461
Modifié le 7 sept. 2019 à 16:33
Modifié le 7 sept. 2019 à 16:33
dans mon test, str contient des SOH, str2 est plus court parce que les SOH de str ne sont plus présents dans str2.
peux-tu tester ceci?
je testerai ton exemple avec plaisir dès que tu auras partagé le texte de ton code, et pas une image.
suggestions:
1) ajouter
2) ajouter ma sub showchar pour vérifier le contenu après le replace.
peux-tu tester ceci?
Private Sub soh() Dim str As String, str2 As String str = "V" + CStr(Chr(1)) + "W" showchar (str) str2 = Replace(str, Chr(1), "", , , vbBinaryCompare) showchar (str2) End Sub Private Sub showchar(inp As String) Dim i As Long Debug.Print Len(inp), inp For i = 1 To Len(inp) Debug.Print Asc(Mid(inp, i, 1)) Next i End Sub
je testerai ton exemple avec plaisir dès que tu auras partagé le texte de ton code, et pas une image.
suggestions:
1) ajouter
option expliciten début de code
2) ajouter ma sub showchar pour vérifier le contenu après le replace.
infonotaire
Messages postés
8
Date d'inscription
lundi 30 juillet 2018
Statut
Membre
Dernière intervention
7 septembre 2019
7 sept. 2019 à 18:25
7 sept. 2019 à 18:25
yb_be
Un lien pour copier mon code [url]https://ask.wellsr.com/906/delete-special-soh-characters-with-regexp?show=909#c909[/url]
Un lien pour copier mon code [url]https://ask.wellsr.com/906/delete-special-soh-characters-with-regexp?show=909#c909[/url]
yg_be
Messages postés
22616
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 mars 2024
1 461
>
infonotaire
Messages postés
8
Date d'inscription
lundi 30 juillet 2018
Statut
Membre
Dernière intervention
7 septembre 2019
Modifié le 7 sept. 2019 à 19:03
Modifié le 7 sept. 2019 à 19:03
j'ai testé avec ton code, et je n'ai aucun SOH. j'ai par contre des NULL, que j'élimine facilement ainsi:
as-tu testé
sFileName = _ Left(typOpenFile.lpstrFile, _ InStr(1, typOpenFile.lpstrFile, CStr(Chr(0)), vbBinaryCompare) - 1)
as-tu testé
Call showchar(typOpenFile.lpstrFile), tu aurais vite remarqué qu'il ne s'agit pas de SOH?
infonotaire
Messages postés
8
Date d'inscription
lundi 30 juillet 2018
Statut
Membre
Dernière intervention
7 septembre 2019
Modifié le 7 sept. 2019 à 19:44
Modifié le 7 sept. 2019 à 19:44
yg_be, grâce à ton aide la question 1.2 Replace est résolue car effectivement c'est du chr(0) et non du Chr(1) qui est dans la variable.
Un truc bizarre s'est passé quand j'ai copier/coller la valeur dans Notepad++.
J'ajoute à ma collection de routines sympa, ta fonction ShowChar que j'ai par ailleurs modifié pour visualiser facilement les valeurs dans la fenêtre Espions de l'éditeur VBA
On peut alors utiliser REPLACE
Un truc bizarre s'est passé quand j'ai copier/coller la valeur dans Notepad++.
J'ajoute à ma collection de routines sympa, ta fonction ShowChar que j'ai par ailleurs modifié pour visualiser facilement les valeurs dans la fenêtre Espions de l'éditeur VBA
Public Function mfShowChar(psStr As String)
Dim i As Integer
Dim arrChar() As Integer
For i = 1 To Len(psStr)
ReDim Preserve arrChar(i)
arrChar(i) = Asc(Mid(psStr, i))
Next
End Function
On peut alors utiliser REPLACE
sStr = Replace(typOpenFile.lpstrFile, Chr(0), vbNullString)
infonotaire
Messages postés
8
Date d'inscription
lundi 30 juillet 2018
Statut
Membre
Dernière intervention
7 septembre 2019
Modifié le 7 sept. 2019 à 19:44
Modifié le 7 sept. 2019 à 19:44
Je dois maintenant tester le RegExp sur le /x00... A suivre et encore merci yg_be pour ton aide
6 sept. 2019 à 21:42
Sur stackoverflow j’ai ajouté mon code de la fonction
mfOpenFileDialog
RegParse qui ne renvoie rien puisque avec ce pattern, j’ai une erreur alors que sur des testeurs internet ça fonctionne parfaitement
7 sept. 2019 à 09:48
Modifié le 7 sept. 2019 à 10:37
Copie/colle le code entier maintenant disponible sur stackoverflow et et applique la fonction replace sur sFileName et tu verras que les caractères seront toujours présent
Tu pourras le vérifier en copiant la valeur de sFileName soit par debug.print ou en plaçant sFileName dans la fenêtre espion VBA pour le coller dans Notepad++
Mais ma question initiale ne porte pas sur replace qui de toute façon est inopérant mais sur RegExp qui provoque une erreur avec sPattern = "(^.*?(?=\x01))(\x01*)" alors que fonctionne très bien sur des sites de test en ligne comme tu peux le voir sur mon poste ici [URL][[https://www.developpez.net/forums/d2002105/logiciels/microsoft-office/excel/macros-vba-excel/regexp-suppression-caracteres-soh/#post11114221[/URL]]
De plus dans ce post tu peux récupérer un fichier new1.txt avec des caractères SOH , coller son contenu dans une variable positionnée dans la fenêtre espion de l’éditeur VBA et la passer dans Replace et tu verras que rien ne se passe
7 sept. 2019 à 11:15
47 V:\result_1567413789250.csv
27 V:\result_1567413789250.csv