Comment masquer une partit d'un string

Résolu
JSilvere Messages postés 161 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 11 février 2013 - 29 mars 2011 à 12:08
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 30 mars 2011 à 06:06
Bonjour,

Le but de se sujet est de découvrir comment masquer une partit d'un string pour pouvoir le réutilisé mais "filtré"...

Je m'explique : je charger dans un string le nom d'un fichier, et se fichier porte une date comme nom : le fichier de janvier 2011 se nomme 0111, et j'aimerais pouvoir séparer mon string en deux string, un (mois) "01" et l'autre (année) "11"

Voila, je pense que le code permettant cela n'est pas sorcier ^^

Merci d'avence

5 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 mars 2011 à 12:55
Jouer avec Left, Mid, Right et Instr.

Petit florilège :

Private Sub Form_Load()
Dim FileName As String
Dim nPos As Long
Dim Mois As Long
Dim Annee As Long
    FileName = "C:\folder\qui\importe peu\capteur solaire 0111.txt"
    nPos = InStrRev(FileName, "")
    If nPos Then
        FileName = Strings.Mid$(FileName, nPos + 1)
    End If
    nPos = InStrRev(FileName, ".")
    If nPos Then
        FileName = Strings.Left$(FileName, nPos - 1)
    End If
    
    If Len(FileName) >= 4 Then
        Mois = Val(Strings.Mid$(FileName, Len(FileName) - 3, 2))
        Annee = 2000 + Val(Strings.Right$(FileName, 2))
    End If
    
    If Mois > 0 Then
        MsgBox MonthName(Mois) & " " & Annee
    End If
End Sub



Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 mars 2011 à 13:00
On peut également jouer un peu :

Private Sub Form_Load()
Dim FileName As String
Dim Match As Object
Dim Mois As Long
Dim Annee As Long
    FileName = "C:\folder\qui\importe peu\capteur solaire 0111.txt"
    With CreateObject("VbScript.RegExp")
        .Pattern = ".+(\d{2})(\d{2})(?:\..+)?$"
        If .Test(FileName) Then
            Set Match = .Execute(FileName)(0)
            Mois = Val(Match.submatches(0))
            Annee = 2000 + Val(Match.submatches(1))
        End If
    End With
    If Mois > 0 Then
        MsgBox MonthName(Mois) & " " & Annee
    End If
End Sub


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
JSilvere Messages postés 161 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 11 février 2013
29 mars 2011 à 12:38
Tien un petit détail à prendre en compte, le nom de mon fichier est précédé de son chemin d'acces, il faut donc dans un premier temps isoler les 4 derniers caractères de ma variable en string contenant le nom de mon fichier...
0
JSilvere Messages postés 161 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 11 février 2013
29 mars 2011 à 14:30
Merci bien, ces codes fonctionnent bien , mais j'ai un peu de mal à comprendre comment ils fonctionnent (surtout le second...)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 mars 2011 à 06:06
le second.... c'est juste pour jouer avec les expression rationelles (RegExp)...

cf: http://regex.codes-sources.com/

fonctionnel, plus puissant mais plus complexe a comprendre ^^


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
Rejoignez-nous