1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Sub Remplacement()
'nécessite d'activer la référence "Microsoft VBScript Regular Expressions X.X"
Dim Motif As VBScript_RegExp_55.regexp
Dim Plage As Range
Set Motif = New VBScript_RegExp_55.regexp
' plage des lignes non vides en colonne A
' en partant de A1
With ThisWorkbook.Worksheets("Feuil2")
Set Plage = .Range("A1", "A" & .Range("A" & Rows.Count).End(xlUp).Row)
End With
' stockage des données dans un tableau
tablo = Plage
' expression régulière du type
' [1 chiffre][","][1 ou plusieurs chiffres]["e"]["+"][1 ou plusieurs chiffres]
Motif.Pattern = "(\d)(,)(\d+)(e)(\+)(\d+)"
' parcours les données
For i = LBound(tablo, 1) To UBound(tablo, 1)
' si ressemble à l'expression régulière
If Motif.Test(tablo(i, 1)) Then
' supprime la virgule et le "e+"
tablo(i, 1) = Replace(Replace(tablo(i, 1), ",", ""), "e+", "")
' si est une date
ElseIf IsDate(tablo(i, 1)) Then
' la converti au format jj/mm/yyyy
tablo(i, 1) = Format(CDate(tablo(i, 1)), "dd/mm/yyyy")
End If
Next i
' restitue les données dans la plage
Plage.Value = tablo
Set Plage = Nothing
End Sub |
Partager