Ce code permet de décomposer un texte quelconque en plusieurs parties en fonction d'un carractère de séparation quelconque voir même d'un ensemble de caractères.
Ce code peut servir a beaucoup de choses. En ce qui me concerne, je l'ai composé pour m'éviter une multiplication de valeurs dans un fichier INI pour enregistrer le contenu d'une listView(Avant, je l'enregistrai avec une valeur différente par colonne, avec ce code, je peu me permettre de faire tenir une ligne de la liste dans une seule valeur, cela ne pose plus de problèmes lors du chargement du fichier dans la liste)
Placez ce code dans un module (C'est plus pratique surtout si vous en avez besoin sur plusieurs controles différents), ensuite, il ne vous reste plus qu'a faire comme indiqué à la suite du code.
Source / Exemple :
Public Type SEPRR
PosRev(100) As String
PosAlr(100) As String
Count As String
End Type
Public Function Séparer(Chaine As String, Séparateur As String) As SEPRR
Dim IndX, IndX2, Lpos
Séparer.PosRev(0) = Chaine
Lpos = 1
Séparer.Count = 0
IndX = 0
For IndX2 = Lpos To Len(Chaine) - Lpos
If Lpos < Len(Chaine) Then
If Mid(Chaine, IndX2, Len(Séparateur)) = Séparateur Then
IndX = IndX + 1
Séparer.PosAlr(IndX) = Mid(Chaine, Lpos, IndX2 - Lpos)
Lpos = IndX2 + Len(Séparateur)
Séparer.Count = Séparer.Count + 1
End If
Else
End If
Next
Séparer.PosAlr(IndX + 1) = Right(Chaine, Len(Chaine) - Lpos + 1)
Séparer.Count = Séparer.Count + 1
For IndX = 1 To Séparer.Count
Séparer.PosRev(Séparer.Count - IndX + 1) = Séparer.PosAlr(IndX)
Next
End Function
Conclusion :
Extraire une valeur contenue dans une chaine en associant les valeurs extraites de 1 à x de la droite vers la gauche :
Retour = Séparer([Chaine],[caractère de séparation]).PosRev([indexe de la valeur extraite])
Extraire une valeur contenue dans une chaine en associant les valeurs extraites de 1 à x de la gauche vers la droite:
Retour = Séparer([Chaine],[caractère de séparation]).PosAlr([indexe de la valeur extraite])
Donner le nombre total de valeurs extractibles
Retour = Séparer([Chaine],[caractère de séparation]).Count
Retour prend la valeur retournée par la fonction
L'indexe 0 donne la chaine complète
Exemple :
Retour = Séparer("C:\Windows\System","\").PosAlr(2)
la valeur de Retour sera "Windows"
Retour = Séparer("C:\Windows\System","\").PosAlr(1)
la valeur de Retour sera "C:"
Retour = Séparer("C:\Windows\System","\").PosRev(1)
la valeur de Retour sera "System"
Si mon explication n'est pas assez claire, si vous trouvez des bugs ou que vous pouvez optimiser ce code, veuillez me le signaler.
merci
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.