[VBS] - Manipulation de chaine de caratères

Messages postés
43
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
10 septembre 2007
- - Dernière réponse : tontonol
Messages postés
43
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
10 septembre 2007
- 10 sept. 2007 à 07:11
Bonjour,

Le script sur lequel je travaille contient un tableau unidimensionnel 'MonTableau' contenant des chaines de caractères (Chemins de répertoires)

Je souhaite variabiliser (MaVariable) une partie de cette chaine de caractère

La valeur stockée dans le tableau ressemble à ceci:

'C:\Rep1\Sous-Rep-Niveau1\Sous-Rep-Niveau2\Sous-Rep-Niveau3'

Où Rep1, Sous-Rep-Niveau1, Sous-Rep-Niveau2... sont de longueur variable

L'instruction 'MaVariable = (split(MonTableau(i),""))(UBound(split(MonTableau(i),"")))'

retourne 'Sous-Rep-Niveau3'

Mais la partie que je souhaite extraire de la chaine de caractères doit être strictement comprises entre '/'. par exemple 'Sous-Rep-Niveau2' ou 'Sous-Rep-Niveau2'.

Je cherche donc la syntaxe qui me permettrai deux actions:

- 1 -Extraire les chaines de caractères strictement comprises entre '/'

-2 -Stocker les séquences extraites dans le tableau multidimensionnel 'MonTableauMultidimmentionnel'

Quelqu'un pourrait il m'aider dans la syntaxe.

Merci
Afficher la suite 

3 réponses

Messages postés
143
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
6 septembre 2011
0
Merci
Hello Tontonol

Pour VB6 voila une solution.

Option Explicit
        Dim s As String
        Dim Length As Integer
        Dim i As Integer
        Dim ii As Integer
        Dim Ptr As Integer
        Dim Pointer(20) As Integer
        Dim Pointers(20) As String


' Dans la form CommandButton
Private Sub Command1_Click()
        For ii = 1 To i
            Print Pointer(ii), Pointers(ii)
        Next ii
End Sub


Private Sub Form_Click()
        s = "C:/Mon/Ton/Son/Notre/Votre/Leurs"


        ' Contol si s est vide
        If Len(s) = 0 Then Exit Sub
        ' Control si il y a characters "/"
        Ptr = InStr(1, s, "/")
        If Ptr = 0 Then Exit Sub


        Length = Len(s)
        i = 1
        Ptr = 1
       
        For ii = 1 To Length
        Ptr = InStr(Ptr, s, "/")
        Pointer(i) = Ptr
       
        If Ptr = 0 Then
            Pointers(i) = s
            Pointer(i) = Len(s)
            Exit Sub
        End If
       
        Pointers(i) = Mid(s, 1, Pointer(i) - 1)
        s = Mid(s, Pointer(i) + 1, Length)
        Length = Len(s)


        MsgBox i & " " & vbCrLf & Pointer(i) & " " & vbCrLf & Pointers(i) & " " & vbCrLf & Ptr & " " & vbCrLf & s
        i = i + 1
        ii = Pointer(i)
       
        If Len(s) = 0 Then Exit Sub
        Next ii


End Sub


Private Sub Form_Load()
Command1.Caption = "Affiche "
End Sub

A plus sur VBFrance.com
42wawa42
Commenter la réponse de 42wawa42
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
23
0
Merci
 Bonsoir à tous,

<<L'instruction 'MaVariable = (split(MonTableau(i),""))(UBound(split(MonTableau(i),"")))'
<<retourne ' Sous-Rep-Niveau3 '
je n'en suis pas certain ! Erreur de synthaxe, normale.

Option Explicit
Dim arrPath(4), arrTempry, arrResult, strResult, i, j
arrPath(0) = "C:\Rep1\Sous-Rep-Niveau11\Sous-Rep-Niveau2\Sous-Rep-Niveau3"
arrPath(1) = "D:test/test1\test2\eeee/aaaa"
arrPath(2) = "C:\Rep1"
arrPath(3) = "C:\Rep1\Sous-Rep-Niveau111\Sous-Rep-Niveau222\Sous-Rep-Niveau333"
arrPath(4) = "C:\Rep1\Sous-Rep-Niveau1111\Sous-Rep-Niveau2222"

arrTempry = Filter(arrPath,"")

For i=0 To UBound(arrTempry)
    arrResult = split(arrTempry(i),"")
    If UBound(arrResult) > 1 Then
       For j = 0 To UBound(arrResult)
           If j = UBound(arrResult)-1 Then
              strResult = strResult &vbCrLf& arrResult(j)
           End if
       Next
    End if
Next
MsgBox strResult,,"Résultat"

Comme dans l'exemple de [auteurdetail.aspx?ID=171201 42wawa42]
, on peut aussi utiliser les fonctions inStr ou inStrRev.

jean-marc
Commenter la réponse de cs_JMO
Messages postés
43
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
10 septembre 2007
0
Merci
Bonjour,

J'ai adapter votre code à mon script et cela fonctionne. Un grand merci à vous pour vos orientations.

Olivier
Commenter la réponse de tontonol