Regex : trouver un ; non précédé par un \

Misange

XLDnaute Barbatruc
Hello joyeux vivants de la nouvelle ère,

Si un spécialiste des regex passe par là, peut-il (elle !) m'indiquer comment rechercher un point virgule qui ne soit pas précédé par un antislash ? Les regex je dis toujours que je m'y mets mais force est de constater que je ne suis vraiment pas au point.
Merci++ !
 

Misange

XLDnaute Barbatruc
Re : Regex : trouver un ; non précédé par un \

Hello,
Je peux plus tester, le fichier a subi entretemps 12 modifs...
Là j'en suis à me battre avec les " qui se doublent triplent, quadruplent quand je les passe dans notepad++ pour convertir le csv d'excel qui est en ansi en utf8 vu que crosoft n'a toujours pas compris que l'option du coide de sortie serait fort utile.
C'est un cauchemar : entre les \t qui se convertissent en tabulation les ;, les ", les \, je passe un temps pas possible. Mais je tiens peut être enfin le bon bout : je viens enfin d'uploader 2147 pages dans la base de données...
 

MichD

XLDnaute Impliqué
Re : Regex : trouver un ; non précédé par un \

Bonjour Misange,

Pour débuter : Regular expressions - An introduction

Tu peux télécharger le fichier joint (.zip) pour plus d'explications si tu tiens à ces chinoiseries! ;-)

Si tu as besoin d'une petite fonction VBA traditionnelle pour faire le boulot :

VB:
Function ARemplacer(Cellule As Range, _
    Cherche As String, Remplace As String)
Dim T As String, A As Integer
T = Cellule
A = 1
Do
     A = InStr(A, T, Cherche, vbTextCompare)
     If Mid(T, A - 1, 1) <> "\" Then
        T = T & " "
        Mid(T, A, Len(T)) = Remplace & Mid(T, A + 1, Len(T))
     End If
     A = A + 2
Loop Until InStr(A, T, Cherche, vbTextCompare) = 0
ARemplacer = T
End Function


Et dans la cellule, tu inscris ceci :
=ARemplacer(A1;";";"\;")

La fonction peut-être utilisée pour d'autres substitutions du même genre!


Et pour utiliser cette fonction en VBA,

VB:
Sub test()
Dim C As Range
With Application
    .EnableEvents = False
    .ScreenUpdating = False
    With Worksheets("Feuil1")
        With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
            For Each C In .Cells
                C.Value = ARemplacer(C, ";", "\;")
            Next
        End With
    End With
    .EnableEvents = True
    .ScreenUpdating = True
End With
End Sub


MichD
 

Pièces jointes

  • regex112.zip
    49.3 KB · Affichages: 44
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 352
Messages
2 087 538
Membres
103 582
dernier inscrit
didinex