Ce didacticiel montrera comment utiliser la fonction Remplacer VBA pour remplacer des chaînes de texte.
Remplacer la fonction
La fonction VBA Replace renvoie une chaîne, avec des substitutions effectuées. Avec l'utilisation de paramètres facultatifs, la nouvelle chaîne peut commencer à la position spécifiée par start et se terminer à la fin de la chaîne d'origine.
VBA Remplacer Remplacer une sous-chaîne
La fonction VBA Replace peut être utilisée pour remplacer toute sous-chaîne trouvée, dans chaque partie qu'elle trouve.
12345678910111213141516 | Sub ReplaceExample_1()MsgBox Remplacer("ABCABCABC", "A", "!")'Le résultat est : "!BC!BC!BC"MsgBox Replace("J'aime le rose, le rouge et le noir", "rose", "violet")'Le résultat est : "J'aime le violet, le rouge et le noir"MsgBox Replace("A, B, C, A, B, C, A, B, C", ", ", ",")'Le résultat est : "ABCABCABC"MsgBox Remplacer("ABCABCABC", "ABC", "!")« Le résultat est : " !!! »MsgBox Remplacer("ABCABCABC", "ABc", "!")'Le résultat est : "ABCABCABC"MsgBox Remplacer("ABCABCABC", "ZBC", "!")'Le résultat est : "ABCABCABC"Fin du sous-marin |
VBA Remplacer la position de départ
La fonction VBA Replace peut être utilisée pour remplacer toute sous-chaîne trouvée, dans chaque partie qu'elle trouve. Si nous attribuons une position de départ, le résultat serait la partie de la chaîne d'origine après ce point de départ.
12345678910111213 | Sub ReplaceExample_2()MsgBox Replace("ABCABCABC", "A", "123") 'Le résultat est : "123BC123BC123BC"MsgBox Replace("ABCABCABC", "A", "123", 2) 'Le résultat est : "BC123BC123BC"MsgBox Replace("ABCABCABC", "A", "123", 7) 'Le résultat est : "123BC"MsgBox Replace("ABCABCABC", "A", "123", 8) 'Le résultat est : "BC"MsgBox Replace("ABCABCABC", "ABC", "!@") 'Le résultat est : "!@!@!@"MsgBox Replace("ABCABCABC", "ABC", "!@", 2) 'Le résultat est : "BC!@!@"MsgBox Replace("ABCABCABC", "ABC", "!@", 6) 'Le résultat est : "C!@"MsgBox Replace("ABCABCABC", "ABC", "!@", 7) 'Le résultat est : "!@"MsgBox Replace("ABCABCABC", "ABC", "!@", 8) 'Le résultat est : "BC"Fin du sous-marin |
VBA ne remplace que quelques occurrences
La fonction VBA Replace peut être utilisée pour remplacer toute sous-chaîne trouvée, dans chaque partie qu'elle trouve. Nous pouvons éventuellement décider combien d'occurrences doivent être substituées.
123456789101112 | Sub ReplaceExample_3()MsgBox Replace("ABCABCABC", "A", "12") 'Le résultat est : "12BC12BC12BC"MsgBox Replace("ABCABCABC", "A", "12", , 1) 'Le résultat est : "12BCABCABC"MsgBox Replace("ABCABCABC", "A", "12", , 2) 'Le résultat est : "12BC12BCABC"MsgBox Replace("ABCABCABC", "A", "12", , 3) 'Le résultat est : "12BC12BC12BC"MsgBox Replace("ABCABCABC", "A", "12", , 5) 'Le résultat est : "12BC12BC12BC"MsgBox Remplacer("ABCABCABC", "A", "12", 3, 1)'Le résultat est : "C12BCABC"« Nous avons remplacé A par 12, 1 fois à partir de la position 3 de la chaîne d'origine.Fin du sous-marin |
VBA Remplacer la sensibilité à la casse
La fonction de remplacement VBA par défaut est sensible à la casse. Vous pouvez modifier ce comportement en insensible à la casse à l'aide d'un paramètre facultatif (vbTextComparer). Dans ce cas, vous devez également définir la position de départ de la recherche.
12345678910111213 | Sub ReplaceExample_4()MsgBox Remplacer("ABcABCABc", "ABc", "12")'Le résultat est : "12ABC12"MsgBox Replace("ABcABCABc", "ABc", "12", , , vbTextComparer)'Le résultat est : "121212"'Lorsque nous utilisons vbTextCompare, nous devons ajouter les 2 autres arguments facultatifs :'commencer et compterMsgBox Remplacer("ABcABCABcABc", "ABc", "12", 3, 1)'Le résultat est : "cABC12ABc"'A commencé à partir de la position 3 et n'a remplacé ABC qu'une seule fois.Fin du sous-marin |
Vous pouvez également effectuer un remplacement insensible à la casse, en ajoutant Option Compare Text en haut de votre module :
1 | Option Comparer le texte |
VBA remplacer les guillemets doubles
La fonction VBA Replace peut remplacer les guillemets doubles utilisés pour délimiter le début et la fin d'une chaîne.
La fonction VBA Chr peut renvoyer un caractère à partir de son numéro dans le jeu de caractères.
1 | MsgBox Chr(34) 'Le résultat est : " |
Ou
1 | MsgBox Chr(64) 'Le résultat est : @ |
Les guillemets doubles peuvent être utilisés dans la fonction VBA Replace en utilisant """" ou la fonction VBA Chr(34).
12345678910111213 | Sub ReplaceExample_5()Dim StrEx en tant que chaîneStrEx = "AB""AB"""MsgBox StrEx 'Le résultat est : AB"AB"MsgBox Remplacer (StrEx, Chr(34), "12")'Le résultat est : AB12AB12MsgBox Remplacer (StrEx, """", "DQ")'Le résultat est : "ABDQABDQ"Fin du sous-marin |
VBA Remplacer la ligne de rupture dans la cellule
La fonction de remplacement de VBA peut rechercher le caractère spécial de la ligne de rupture dans une cellule et le supprimer ou le remplacer par un espace. Le caractère spécial de la ligne de rupture peut être saisi dans une cellule à l'aide du raccourci clavier Alt+Entrée et peut être utilisé dans le code VBA avec son numéro de jeu de caractères à l'aide de la fonction VBA Chr(10).
1234567891011121314 | Sub ReplaceExample_6()Dim StrEx As String 'Définir une variable de chaîne'Lire la valeur de la cellule A2 dans la feuille de calcul Sheet1StrEx = ThisWorkbook.Worksheets("Sheet1").Range("A2").Value'Le caractère de ligne de rupture saisi avec Alt+Entrée est Chr(10) et est invisible.'Cette ligne de code remplace ce caractère par un espaceStrEx = Remplacer(StrEx, Chr(10), " ")'Écrire la valeur remplacée dans la cellule B2 de la feuille de calcul Sheet1ThisWorkbook.Worksheets("Sheet1").Range("B2").Value = StrExFin du sous-marin |