[VBS] - Manipulation de chaine de caratères

tontonol Messages postés 43 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 10 septembre 2007 - 9 sept. 2007 à 12:46
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

3 réponses

42wawa42 Messages postés 143 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 6 septembre 2011
9 sept. 2007 à 17:41
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
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
9 sept. 2007 à 19:37
 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
0
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,

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

Olivier
0
Rejoignez-nous