Rapport de message :*
 

Re: Extraction de la date dans une chaine de caractère

Titre du sujet : Re: Extraction de la date dans une chaine de caractère
par Guy le 24/07/2015 20:41:17

Option Explicit

Const ListeMoisAnglais As String = "JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"

Public Function ExtractionDate(Cellule As Range)

  Dim ExpReg As Object ' VBScript_RegExp_55.RegExp
  Dim cMatchs As Object ' VBScript_RegExp_55.MatchCollection
  Dim sTemp As String
  Dim sRes As String
  Dim sTempMois As String
  Dim IndexMois As Long
  
  sRes = vbNullString
  
  sTemp = Cellule.Text
  
'  Set ExpReg = New VBScript_RegExp_55.RegExp
  Set ExpReg = CreateObject("vbscript.regexp")
 
  With ExpReg
    .MultiLine = False
    .IgnoreCase = True
    .Pattern = "[0-9]{2}-[aA-zZ]{3}-[0-9]{4} [0-9:]{5}"
    .Global = True
    
    If .Test(sTemp) Then
    
      Set cMatchs = .Execute(sTemp)
      sRes = cMatchs(cMatchs.Count - 1).Value
      sTempMois = Mid(sRes, 4, 3)
      IndexMois = ((InStr(ListeMoisAnglais, sTempMois) - 1) / 3) + 1
      
      sRes = Replace(sRes, sTempMois, Format(CStr(IndexMois), "00"))
      
      ExtractionDate = sRes
      
    End If
    
  End With
   
End Function

Bonjour rigou et bienvenue dans ce forum,

 

Saisir le petit bout de code ci-haut et  le copier dans un module standard. À noter que le classeur portant ce module devra être porté vers l'extension .xlsm lors de la sauvegarde.

 

Dans la feuille en exemple inscrire la formule =ExtractionDate(A1) en B1 et la cellule portera la chaîne désirée. Plus d'explications à venir.

 

Cordialement,

 

Guy