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.

  • 🔤 Données de type chaîne : Une valeur composée de caractères, de symboles et de chiffres, comme le texte juil.-2015.
  • Enchaînement Operator: L'esperluette relie deux chaînes de caractères, donc « John » & « Doe » donne John Doe.
  • ✂️ ExtracFonctions de tion : Les fonctions Gauche, Droite et Milieu extraient une sous-chaîne de caractères au début, à la fin ou au milieu d'une valeur.
  • (I.e. Fonctions de mesure : Len compte les caractères et InStr renvoie la position où commence une sous-chaîne.
  • 🧩 Diviser et joindre : La fonction Split divise une chaîne de caractères délimitée en un tableau, tandis que la fonction Join reconstruit un tableau en une seule chaîne.
  • ⚠️ Erreurs courantes: Les incompatibilités de types, le renvoi de zéro par InStr et les espaces de fin sont à l'origine de la plupart des échecs de comparaison.

Fonctions de manipulation de chaînes VBA et Operajeudi

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

Chaîne VBA OperaExemple de source de tors Code

MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"

L'exécution du code ci-dessus produit le résultat suivant

Chaîne VBA OperaExemple de source de tors Code

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

FAQ

Une chaîne de caractères de longueur variable peut contenir jusqu'à environ deux milliards de caractères, et une chaîne de caractères de longueur fixe jusqu'à 65 400. Cependant, une cellule de feuille de calcul ne stocke que 32 767 caractères ; les valeurs plus longues sont donc tronquées lors de leur écriture dans une feuille.

Par défaut, le signe égal compare les valeurs en tenant compte de la casse. Utilisez `StrComp(a, b, vbTextCompare)` pour une comparaison insensible à la casse, ou placez `Option Compare Text` en haut du module pour modifier le comportement par défaut de l'ensemble du module.

L'esperluette convertit chaque opérande en texte avant de les concaténer ; ainsi, 10 & 5 renvoie la chaîne 105. Conservez les valeurs numériques et additionnez-les d'abord, puis concaténez le résultat s'il doit apparaître dans un message.

Oui. Décrivez l'entrée et la sortie souhaitée, par exemple :tracDans le code précédant le premier tiret, un assistant IA renvoie une expression Left et InStr. Testez-le face à des cas limites, comme l'absence d'un tiret.

Oui. Collez une expression imbriquée telle que Mid avec InStr à l'intérieur, et un assistant IA la décomposera en étapes, nommera chaque argument et signalera le cas où InStr renvoie zéro et où l'appel échoue.

Résumez cet article avec :