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

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

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.