Remplacer toute les instances d'une chaine par une autre chaine. (comme dans certains programmes)

Soyez le premier à donner votre avis sur cette source.

Vue 5 010 fois - Téléchargée 375 fois

Description

Salut,
C'est le premier code que je commente et que je rends compréhensible donc j'espère que vous allez l'aimer :D Il ya a beacoup d'explications dans le module pour que vous puissiez le modifier à vôtre guise. J'ai aussi mit les équivalents en français des variables que j'ai utiliser (J'utilise toujours des variables en anglais car le basic c comme de l'anglais et ça aide à la compréhension quand il n'y a pas de changement de language :D)

Source / Exemple :


'***********************************************************************'
'* Vous pouvez utilisez ce module comme vous le voulez                 *'
'* mais si vous l'utilisez en entier je vous prie laisser ces lignes   *'
'* et si vous distribuez un programme contenant ce module, je vous     *'
'* prie de m'inclure mon nom dans les crédits                          *'
'*---------------------------------------------------------------------*'
'*    Ce module à été crée par: Michaël St-Georges                     *'
'*    Pour me contacter: M_St-Georges@copsoft.tk                       *'
'*    Pour plus de modules du genre, de programmes en codes sources,   *'
'*    de formules utilisables en développement, visitez ce site web:   *'
'*    http://source.copsoft.tk                                         *'
'*---------------------------------------------------------------------*'
'* Copyright © 2002 CopSoft(Michaël St-Georges)                        *'
'***********************************************************************'
Dim SearchStart As Integer 'Équivalent en fraçais: SearchStart: Début de la Recherche.
Dim FoundAt As Integer 'Équivalent en fraçais: FoundAt: Trouvé à.
Dim AfterReplace As String 'Équivalent en fraçais: AfterReplacet: Après Remplacement.
Public Function Replace(What As String, ByWhat As String, InWhat As String, CompareMethod As VbCompareMethod) As Variant 'Équivalents en français: Replace: Remplacer; What:Quoi; ByWhat:Par Quoi; InWhat:Dans Quoi; CompareMethod:Méthode de Comparaison.
'Si on utilise vbTextCompare comme CompareMethod, le programme ne respecteras pas la case du mot à remplacer alors que si on utilise vbBinaryCompare, le programme respecteras la case du mot à remplacer.
SearchStart = 1 'Je réinitialise toujours les variables qui seront utilisés avant d'être modifiés pour éviter les erreurs et pour faciliter le débug
AfterReplace = InWhat 'On mets le texte dans lequel chercher dans une autre variable que l'on pourra modifier.
Do
FoundAt = InStr(SearchStart, AfterReplace, What, CompareMethod) 'On Cherche tout premièrement la prochaine(Ou la première) instance de la chaine à remplacer.
If FoundAt = 0 Then 'On vérifies si on a trouver une instance de la chaine à remplacer.
Replace = AfterReplace
Exit Function
Else 'On pourrais mettre end if car la fonction est deja arètée a ce point mais je mets else pour éviter les erreurs et pour faciliter le débug.
SearchStart = FoundAt + Len(What) ' On mets les point de départ pour la recherche de la prochaine instance.
AfterReplace = Left(AfterReplace, FoundAt - 1) & ByWhat & Right(AfterReplace, Len(AfterReplace) - (FoundAt + Len(What) - 1)) 'On Remplace la chaine à remplacer par la chaine avec laquelle on remplace.
'La Fonction Left est utilisée pour trouver ce qui est situé avant la chaine à remplacer
'Après on ajoute la chaine par quoi il faut remplacer.
'Après La Focntion Right est utilisée pour ajouter ce qui se trouve après la chaine à remplacer.
'Explications de l'utilisation du Left: AfterReplace est la chaine ou prendre la sous-chaine à insérer dans une autre chaine; FoundAt-1 est utiliser pour définir la longeur que la sous-chaine doit avoir. J'ai ajouter -1 après FoundAt car InStr retourne la position du premier caractère de la chaine recherchée et Left a besoin de la position du charactère juste avant.
End If
Loop
End Function
'Pour demmander à l'utilisateur s'il veut remplacer les instances trouvés comme dans certains programmes, il s'uffit d'ajouter ces lignes:
'Des les déclarations du module:
'                               Dim ReplaceAnswer As Integer 'Équivalent en fraçais: ReplaceAnswer: Réponse de Replacement.
'Dans la fonction:
'               - Débutant à la ligne 12:
'                                        ReplaceAnswer = Form1.CanReplace(FoundAt, What) 'Note: Il faut changer form1 par le nom de la où le texte repose.
'                                        If ReplaceAnswer = 6 Then
'               - Débutant à la ligne 17: 'Note la ligne 17 c'est avant qu'on ajoute ce qu'il faut ajouter à la ligne 12 sinon c'est la ligne 19
'                                        End If
'                                        If ReplaceAnswer = 2 Then
'                                        SearchStart = Len(AfterReplace)
'                                        End If
'Nimporte où dans la form:
'                         Public Function CanReplace(FoundAt As Integer, What As String) As Integer
'                         Text1.SelStart = FoundAt
'                         Text1.SelLength = Len(What)
'                         CanReplace = MsgBox("Voulez vous vraiment replacer cette instance?", vbYesNoCancel, "Remplacer") 'Note: Vous pouvez modifier le texte comme vous le voulez.
'                         End Function

Conclusion :


Vous pouvez aussi télécharger le ZIP pour avoir la form de test que j'ai mit avec...

Gorgot

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
95
Date d'inscription
lundi 28 janvier 2002
Statut
Membre
Dernière intervention
21 février 2008

Ouais elle en bien commentée et je n'ai pas l'habitude des fautes d'orthographes sauf quand je suis à bout d'énergie... Si je ne sais pas comment écrire un mot, habituellement je le remplace par un autre mot :D

Et pour la fonction de remplacement, elle est pas aussi flexible que celle que j'ai créer (qui permets de demmander à l'utilisateur s'il veut remplacer etc etc.

Gorgot
PS: J'avais oublier d'écrire que j'avais vraiment chercher pour enfin trouver comment savoir où recommencer dans la chaine de base après la chaine qui est remplacée. J'avais aussi oublier de commenter comment cette partie fonctionnais ce que je ferai pas ce soir (il est 1:00 ici, au Québec) car j'ai pas vraiment le gout HEHE
Messages postés
55
Date d'inscription
lundi 11 mars 2002
Statut
Membre
Dernière intervention
23 mai 2003

mouep c bien pour ceux qui n'ont pas vb6 & +
sinon ya une fonction qui se nomme replace(chaine,chaine a chercher,Caractere de remplacement)

il est vrai que c rare de voir autant de commentaires..
bonne prog
Messages postés
18
Date d'inscription
jeudi 30 mai 2002
Statut
Membre
Dernière intervention
4 novembre 2002

Arf .... il y a plus de commentaires que de code !! Bravo ! Et en plus sans fautes d'orthographe comme certains ...

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.