Découper une chaine

0/5 (10 avis)

Snippet vu 5 770 fois - Téléchargée 42 fois

Contenu du snippet

Cette fonction bien utilise permet de découper une [chaine] suivant un [caractère] séparateur et placer le résultat dans un tableau de chaine

Source / Exemple :


Public Function DecouperChaine(StrTmp As String, car1 As String, tabstr() As String) As Integer
Dim I As Integer
Dim cpt As Integer
Dim motprec As String

    I = 0
    DecouperChaine = 1
    ReDim tabstr(1 To 1)
    tabstr(1) = StrTmp
    If Len(StrTmp) < 1 Then
        Exit Function
    ElseIf Len(StrTmp) = 1 Then
        If StrTmp = car1 Then
            DecouperChaine = 2
            ReDim tabstr(1 To 2)
            tabstr(1) = "": tabstr(2) = ""
        End If
        Exit Function
    End If

    cpt = 1
    motprec = ""
    I = InStr(StrTmp, car1)
    While I > 0
        If I > 1 Then  'motprec sert à ignorer le car1 s'il est précédé par "?"
            If Mid$(StrTmp, I - 1, 1) = "?" Then
                motprec = motprec & Left$(StrTmp, I - 2) & car1
                StrTmp = Right$(StrTmp, Len(StrTmp) - I)
                GoTo IgnorerCar
            End If
        End If
        motprec = motprec & Left$(StrTmp, I - 1)
        cpt = cpt + 1
        ReDim Preserve tabstr(1 To cpt)
        tabstr(cpt - 1) = motprec
        motprec = ""
        StrTmp = Right$(StrTmp, Len(StrTmp) - I)
IgnorerCar:
        I = InStr(StrTmp, car1)
    Wend
    tabstr(cpt) = motprec & StrTmp
    DecouperChaine = cpt

End Function

A voir également

Ajouter un commentaire Commentaires
zoukozouko Messages postés 148 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 21 janvier 2009
17 janv. 2005 à 11:25
encore un petit mot pour almandric:
split(Expression as String, Delimiter as string) n'est pas plus simple que
taille = DecouperChaine(maChaine," ",tableau)
et contient moin dinformations...
C'est sur qu'il est parfois vachement pratique d'utilisaer les fonctions de la lib, mais créer sa propre fonction n'est jamais inutile, surtout si on onbtient des infos supplémentaire.
MAis c'est simpa d'avoir rajouté le nom de la fonction dans la lib. merci
zoukozouko Messages postés 148 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 21 janvier 2009
17 janv. 2005 à 11:16
je note 10 pou rattraper le 2 beaucoup trop severe pour la qualité du code
zoukozouko Messages postés 148 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 21 janvier 2009
17 janv. 2005 à 11:13
juste pour info:
l'utilisation exacte est :
Dim tailleDuTableau As Integer
Dim tableau() As String

taille = DecouperChaine(maChaine," ",tableau)

on a donc :
tailleDuTableau = nombre de mots dans la chaine
tableau(1) = premier mot de la chaine (et non tableau(0))

L'exemple devient :
tailleDuTableau = DecouperChaine("ceci-est-un-essai","-",tableau)

et dans ton tableau , tu auras :
tableau(1) = "ceci"
tableau(2) = "est"
tableau(3) = "un"
tableau(4) = "essai"
et
tailleDuTableau = 4

MErci vraiment pour ce code. Il m'a été tres utile.
Je tiens a préciser que meme s'il existe une fonction split, l'utilisation d'une fonction codé soi meme ne prend pas plus de temps, et elle permet de savoir exactement ce qu'elle fait. La fonction split prend autant de temps, et on ne sait pas ce qu'elle contient comme code.

Merci encore
cs_adsl44 Messages postés 13 Date d'inscription lundi 11 mars 2002 Statut Membre Dernière intervention 28 novembre 2004
1 déc. 2002 à 23:34
tres simple a utiliser : DecouperChaine("ceci-est-un-essai","-",tableau)

et dans ton tableau , tu auras :
tableau[0] = "ceci"
tableau[1] = "est"
tableau[2] = "un"
tableau[3] = "essai"
edthefarmer Messages postés 52 Date d'inscription jeudi 9 mai 2002 Statut Membre Dernière intervention 15 juillet 2004
1 déc. 2002 à 18:18
enfin un zip, dsl je m'exprime pas bien ;-)
Afficher les 10 commentaires

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.