Fusion de 2 chaînes de caractères suivant un critère spécifique.

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 947 fois - Téléchargée 38 fois

Contenu du snippet

Cette fonction permet de faire une fusion partielle de deux chaînes de caractères, afin de les comparer par la suite, sachant que la 1ére chaîne peut contenir un caractères de type bateau comme '?'.
Exemple:
fusion( "1?3?5?7?9" , "987654321" , "?" ) renvoi 183654729
fusion( "fichier.???" , "fichier.txt" , "?" ) renvoi fichier.txt
après il est possible d'utiliser la fonction InStr afin de vérifier si la chaîne quoi est bien incluse dans la chaîne avec quoi en s'affranchissant du caractère bateau '?'.

Source / Exemple :


Function Fusion(Quoi, AvecQuoi, LettreDeFusion) As String
Dim Position As Integer
Dim AvQuoi As String
Dim ApQuoi As String
Dim Lettre As String

    Fusion = Quoi
    Position = 1
    Position = InStr(Position, Fusion, LettreDeFusion, vbTextCompare)

    Do While Position <> 0
        AvQuoi = Mid(Fusion, 1, Position - 1)
        ApQuoi = Mid(Fusion, Position + 1, Len(Quoi) - Position)
        Lettre = Mid(AvecQuoi, Position, 1)
        Fusion = AvQuoi & Lettre & ApQuoi
        Position = Position + 1
        Position = InStr(Position, Fusion, LettreDeFusion, vbTextCompare)
    Loop

End Function

Conclusion :


attention a la longueur des chaînes il faut vérifier que la chaîne quoi soit aussi longue que la chaîne Avecquoi sinon plantage.

A voir également

Ajouter un commentaire

Commentaire

tmcuh
Messages postés
463
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009
-
Je te trouve beaucoup trop compliqué.

Function Fusion(quoi, avecquoi, lettredefusion) As String
For i = 1 To Len(quoi)
Fusion Fusion & IIf(Mid(quoi, i, 1) lettredefusion, Mid(avecquoi, i, 1), Mid(quoi, i, 1))
Next i
End Function

Je sais pas pour toi mais je trouve mon code beaucoup plus simple...et de plus il n'y a aucune variable à part pour la boucle si tu veux la mettre.

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.