Fonctions de manipulation de chaînes VBA et Operajeudi
⚡ Résumé intelligent
Fonctions de manipulation de chaînes VBA et OperaLes tors combinent, mesurent et extracComment insérer du texte dans des macros Excel ? Cette page explique l’opérateur de concaténation, les fonctions GAUCHE, DROITE, MILIEU, LONGUEUR et INSTALL, le fractionnement et la jointure, ainsi que les erreurs les plus fréquentes qui perturbent le code de chaînes de caractères.

Chaîne VBA Operajeudi
Les données de chaîne sont utilisées pour contenir des données composées de nombres, de caractères et de symboles. « Jul-2015 » est un exemple de chaîne de données. Il est constitué de
- Personnages (juillet)
- Symbole (-)
- Numbers (2015)
Les opérateurs de chaîne sont utilisés pour manipuler les données de chaîne. Par exemple, vous pouvez concaténer la valeur de Juillet-2015 à partir des 3 premières lettres du mois et de l'année comme « Juillet-2015 ».
Le tableau suivant montre l'opérateur de chaîne VBA de concaténation.
| Ratio S / N | Opérateur | Description | Exemple | Sortie |
|---|---|---|---|---|
| 1 | & | Concaténer : cet opérateur est utilisé pour concaténer des chaînes entre elles. | « John » et « Biche » | Jean Dupont |
Exemple de source Code
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
L'exécution du code ci-dessus produit le résultat suivant
L'esperluette n'est pas le seul symbole qui semble relier des mots, et la différence entre les deux a son importance dès lors que des nombres sont impliqués.
Différence entre & et + pour la concaténation de chaînes
VBA accepte aussi bien l'esperluette que le signe plus entre deux valeurs textuelles ; les débutants les utilisent donc souvent indifféremment. Leur comportement diffère dès qu'un des opérandes est un nombre ou une valeur vide, et un seul de ces caractères est sûr.
| COMPORTEMENT | & (esperluette) | + (plus) |
|---|---|---|
| Deux valeurs textuelles | Ils se joignent à eux : «Guru« & 99 » renvoie Guru99 | Ils se joignent à eux : «Guru« + 99 » renvoie Guru99 |
| Texte et un nombre | Convertit le nombre en texte : « Âge » & 30 renvoie « Âge 30 ». | Lève une erreur d'incompatibilité de type |
| Deux chaînes numériques | « 10 » et « 5 » donnent 105 | « 10 » + « 5 » peuvent s’additionner et donner 15. |
| Une valeur nulle | Interprète Null comme une chaîne vide | Renvoie Null et ignore le résultat. |
Astuce : Utilisez toujours l'esperluette pour la concaténation et réservez le signe plus pour… opérations arithmétiquesInsérez un espace avant et après l'esperluette, car l'écriture Total& est interprétée par VBA comme un caractère de déclaration de type Long.
Fonctions de manipulation de chaînes VBA
La manipulation des chaînes VBA est un élément important dans Excel VBA pour la programmation de macros et les opérations sur les chaînes. Excel fournit différents types de fonctions de manipulation de chaînes VBA telles que :
- Gauche: est utilisé pour extract caractères à partir du côté gauche de la chaîne
- Des: est utilisé pour extract caractères à partir du côté droit de la chaîne
- Milieu: est utilisé pour extracsous-chaîne extraite du milieu d'une chaîne
- Len: est utilisé pour trouver la longueur d'une chaîne
- InStr: est utilisé pour trouver la position d'une sous-chaîne dans une chaîne
- PassementeriesLe symbole « : » sert à supprimer les espaces aux deux extrémités d'une chaîne de caractères.
- remplacer: sert à remplacer chaque occurrence d'une sous-chaîne par une autre.
- UCase / LCase: sont utilisés pour convertir une chaîne de caractères en majuscules ou en minuscules
Le tableau ci-dessous présente la syntaxe de chaque fonction avec un exemple détaillé, afin que vous puissiez copier directement le modèle dans une macro.
| Fonction | Syntaxe | Exemple | Sortie |
|---|---|---|---|
| Gauche | Gauche(chaîne, longueur) | Gauche (« juillet 2015 », 3) | juillet |
| Des | Droite(chaîne, longueur) | Droite(“juillet 2015”, 4) | 2015 |
| Milieu | Milieu(corde, début, longueur) | Milieu (« juillet 2015 », 5, 4) | 2015 |
| Len | Longueur(chaîne) | Len("juillet 2015") | 8 |
| InStr | InStr(début, chaîne, sous-chaîne) | InStr(1, « juillet 2015 », « - ») | 4 |
| Passementeries | Couper (cordon) | Garniture(" Guru99 “) | Guru99 |
| remplacer | Remplacer(chaîne, trouver, remplacer) | Remplacer("Juillet 2015", "-", "/") | Juil / 2015 |
| UCase | UCase(chaîne) | UCase(“guru99”) | GOUROU99 |
La macro ci-dessous combine plusieurs de ces fonctions pour reconstruire une étiquette de date à partir de ses composants.
Sub StringFunctionsDemo() Dim Source As String Dim MonthPart As String Dim YearPart As String Source = "July-2015" ' Take the first three characters MonthPart = Left(Source, 3) ' Take the last four characters YearPart = Right(Source, 4) MsgBox MonthPart & "-" & YearPart, vbOKOnly, "String Functions" End Sub
L'exécution de la macro affiche juil.-2015. Chaque fonction renvoie une nouvelle valeur et laisse la chaîne d'origine intacte, ce qui permet de combiner les résultats en toute sécurité dans une seule expression.
Ces fonctions traitent chacune une chaîne de caractères à la fois. Lorsqu'une seule valeur contient une liste entière, deux autres fonctions sont plus adaptées.
Comment diviser et concaténer des chaînes de caractères en VBA
Les données collées dans Excel se présentent souvent sous la forme d'une longue valeur avec un séparateur entre chaque élément, comme « Pepsi,Coke,Fanta,Juice ». La lecture de ces données avec les fonctions Mid et InStr est lente et peu fiable. VBA propose une paire de fonctions parfaitement adaptées à cette tâche.
Diviser prend une chaîne de caractères délimitée et renvoie un tableau indexé à partir de zéro, avec un élément par élément. Joignez-vous au La fonction `Join` effectue l'opération inverse : elle prend un tableau et renvoie une seule chaîne de caractères avec un séparateur entre les éléments. Notez que `Join` fonctionne sur un tableau, et non sur deux chaînes de caractères distinctes.
Sub SplitAndJoinDemo() Dim Source As String Dim Items() As String Dim i As Long Source = "Pepsi,Coke,Fanta,Juice" ' Break the value into an array on every comma Items = Split(Source, ",") For i = LBound(Items) To UBound(Items) Sheet1.Cells(i + 1, 1).Value = Items(i) Next i ' Rebuild the list with a different separator MsgBox Join(Items, " | "), vbOKOnly, "Joined List" End Sub
La boucle inscrit chaque boisson dans une ligne distincte de la feuille de calcul, et la boîte de dialogue affiche ensuite Pepsi | Coca-Cola | Fanta | Jus. Trois points rendent ce modèle fiable en production :
- Résultat basé sur zéro : La fonction Split renvoie toujours un tableau numéroté à partir de 0, quelle que soit la valeur de l'option Base ; il faut donc piloter la boucle avec LBound et UBound plutôt qu'avec un nombre fixe.
- Déclarer comme chaîne de caractères() : Affectez le résultat à un tableau de chaînes de caractères dynamique. Déclarer d'abord une taille fixe provoque une erreur de compilation.
- Entrée vide : La division d'une chaîne vide renvoie un tableau sans éléments, il faut donc tester avec UBound avant de lire Items(0).
Même avec la fonction appropriée choisie, le code de manipulation de chaînes de caractères présente quelques défaillances prévisibles.
Erreurs courantes de chaînes de caractères en VBA et comment les corriger
La plupart des erreurs de manipulation de chaînes de caractères dans Excel VBA proviennent d'une liste restreinte de causes. Reconnaître le symptôme permet d'éviter une longue session de débogage.
- Incompatibilité de type lors de la concaténation : Un signe plus (+) a été utilisé entre du texte et un nombre. Remplacez-le par une esperluette (&), qui convertit automatiquement le nombre.
- InStr renvoie 0 : La sous-chaîne est introuvable. En cas d'échec, InStr renvoie 0 et non -1 ; il faut donc vérifier que la valeur est supérieure à zéro avant de transmettre le résultat à Mid.
- Appel de procédure invalide dans Mid ou Left : La longueur demandée est négative ou la position de départ est inférieure à 1. Protégez l'appel avec Len afin que la longueur ne dépasse jamais la chaîne.
- Comparaisons qui devraient correspondre mais qui ne correspondent pas : Les espaces de fin des données importées rompent l'égalité. Utilisez la fonction Trim pour entourer les deux côtés et StrComp lorsque la casse doit être ignorée.
- Texte qui ne deviendra pas un nombre : Une valeur comme « 1 200 » ne peut être convertie correctement en raison du séparateur. Supprimez-le avec la fonction Replace avant de convertir avec CLng.
Téléchargez Excel contenant le code ci-dessus
Téléchargez le fichier Excel ci-dessus. Code


