La fonction Split en VBA est une fonction très utile qui permet de diviser une chaîne de caractères en un tableau ( Array
) de sous-chaînes, en se basant sur un séparateur spécifié.
Dans ce tutoriel, nous allons explorer en détail la fonction Split, sa syntaxe, ses utilisations, des exemples pratiques et des astuces pour éviter les erreurs courantes.
Sommaire
Syntaxe de la fonction VBA Split()
La fonction a une syntaxe qui contient 1 paramètre obligatoire et 3 paramètres facultatifs:
x = Split(Expression, [Delimiter], [Limit], [Compare])
Le détail des paramètres de la fonction Split
Voici les différents paramètres en détail:
- Expression: La chaîne de caractères que vous souhaitez diviser. Ce paramètre est, logiquement, obligatoire.
- Delimiter: Le caractère ou la chaîne de caractères utilisés pour séparer les éléments de la chaîne Expression. Paramètre optionnel. S'il est omis, l'espace (
" "
) est utilisé comme séparateur par défaut. Peut-être multi-caractère (voir l'exemple plus loin). - Limit: Le nombre maximum de sous-chaînes à renvoyer. Optionnel. Si ce paramètre est omis, la chaîne est divisée en autant de sous-chaînes que possible (il s'agit de la valeur
-1
: toutes les sous-chaînes seront renvoyées). - Compare: Le type de comparaison (optionnel) à utiliser lors de la recherche du Delimiter. Cette comparaison peut être:
vbBinaryCompare
– comparaison binaire, la valeur par défaut. Peut aussi être mentionné par la valeur 0vbTextCompare
– comparaison textuelle, insensible à la casse. Sa notation numérique: 1- en MS Access (uniquement), vous trouverez une 3ème possibilité:
vbDatabaseCompare
Qu'est-ce qu'un Array en VBA?
Un Array
("tableau" en français) est une structure de données qui permet de stocker plusieurs éléments du même type de données, comme des nombres ou des chaînes de caractères. Chaque élément du tableau est identifié par un index (un nombre entier) qui représente sa position dans le tableau. En VBA, les tableaux peuvent être statiques (de taille fixe) ou dynamiques (leur taille peut être modifiée en cours d'exécution).
L'avantage principal consiste dans le fait de pouvoir effectuer les traitements en boucle sur chaque élément du tableau. En gros, imaginez un tableau Excel mais qui ne se trouve par dans une Feuille Excel. Mais uniquement dans la mémoire..
Pourquoi utiliser la fonction Split et quelques exemples pratiques
La fonction Split est utile lorsque vous devez extraire des informations à partir d'une chaîne de caractères contenant des éléments séparés par un délimiteur spécifique, comme une liste de noms, des données CSV ou des valeurs séparées par des tabulations. Voici quelques exemples…
Exemple 1 – Extraire des noms à partir d'une chaîne
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub Exemple_Split1() Dim chaine As String Dim noms() As String Dim i As Integer chaine = "Jean-Michel;Sophie;Marc;Sarah;Céline" ' Utilisation de Split pour diviser la chaîne en un tableau de noms noms = Split(chaine, ";") ' Affichage des noms extraits For i = LBound(noms) To UBound(noms) Debug.Print noms(i) Next i End Sub |
Exemple 2 – Extraire des données CSV
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub Exemple_Split2() Dim ligne As String Dim donnees() As String Dim i As Integer ligne = "2023-04-02;action;XYZ S.A.;150,25;152,35;149,80;152,00;1.200.000" ' Utilisation de Split pour diviser la ligne CSV en un tableau de données donnees = Split(ligne, ";") ' Affichage des données extraites For i = LBound(donnees) To UBound(donnees) Debug.Print donnees(i) Next i End Sub |
Exemple 3 – utilisation d'un délimiteur de plusieurs caractères
Il y a plusieurs cas pratiques où l'utilisation d'un délimiteur multi-caractères dans la fonction Split peut être envisageable, voir utile. Un exemple courant est lors du traitement de données textuelles où les délimiteurs simples ne sont pas suffisants pour séparer correctement les éléments.
Prenons l'exemple d'un fichier texte contenant des enregistrements de conversations. Les enregistrements sont structurés de telle manière que chaque conversation est séparée par le délimiteur "—FIN—". Dans ce cas, un délimiteur multi-caractères est nécessaire pour séparer chaque conversation sans risque de confusion avec le contenu de la conversation elle-même.
Voici un exemple de code pour traiter un tel fichier texte:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub TraiterConversations() Dim contenuFichier As String Dim delimiteur As String Dim conversations() As String Dim i As Long ' Charger le contenu du fichier texte (à adapter selon la méthode de lecture) contenuFichier = "Conversation 1---FIN---Conversation 2---FIN---Conversation 3" ' Utiliser un délimiteur multi-caractères pour séparer les conversations delimiteur = "---FIN---" conversations = Split(contenuFichier, delimiteur) ' Afficher les conversations séparées For i = LBound(conversations) To UBound(conversations) Debug.Print "Conversation " & (i + 1) & ": " & conversations(i) Next i End Sub |
Fonction Split: Bonnes pratiques et astuces
Voici quelques informations qui vont vous rendre la vie plus facile si vous décidez d'utiliser la fonction Split:
- Vérifiez que le délimiteur spécifié est présent dans la chaîne de caractères avant d'utiliser la fonction Split
- Pensez à utiliser la fonction Trim pour supprimer les espaces inutiles avant et après chaque élément du tableau résultant, si nécessaire.
- Gardez à l'esprit que les tableaux (
Array
) en VBA sont généralement indexés à partir de zéro, sauf si vous spécifiez un autre indice de départ à l'aide de l'instructionOption Base
. Cela va jouer un rôle si vous parcourez le tableau avec une boucle. Par défaut, la boucle ira de 0 à n-1 et pas de 1 à n .
Exemples d'erreurs qui peuvent arriver
Lors du découpage de vos chaînes de caractères et lors de l'utilisation de Array
qui en résulte, vous pouvez rencontrer les problèmes suivants:
- Si le délimiteur n'est pas trouvé dans la chaîne de caractères, la fonction Split renverra un tableau contenant un seul élément, qui est la chaîne de caractères d'origine.
- Si vous spécifiez une valeur négative autre que
-1
pour le paramètre Limit, une erreur d'exécution se produira. - Si votre code tente d'accéder à un indice du tableau en dehors de la plage définie par LBound et UBound, une erreur d'exécution se produira également.
Conclusion
La fonction Split en VBA est un outil puissant pour manipuler et extraire des informations à partir de chaînes de caractères contenant des éléments séparés par un délimiteur spécifique. En comprenant la syntaxe, les bonnes pratiques et les erreurs courantes, vous pouvez utiliser la fonction Split efficacement dans vos projets VBA. N'hésitez pas à expérimenter avec cette fonction pour améliorer votre maîtrise de VBA et optimiser vos projets.
Pour aller plus loin en VBA…
Voici quelques autres articles & tutoriels VBA qui pourraient vous être utiles…
- Liste de toutes les fonctions VBA
- VBA: Extraire une chaîne délimitée
- Lire le contenu d'un fichier texte (.txt, .csv etc.) en VBA
- Calculer la SOMME en VBA (plusieurs méthodes)
- Comment utiliser RECHERCHEV et autres fonctions Excel en VBA
- Structure "Dictionnaire" en VBA
- La page de la fonction Split() sur le site de Microsoft n'est hélas pas très garnie…
2 commentaires sur “SPLIT en VBA: couteau suisse pour découper vos chaînes”
Merci pour ces explications. Maintenant, la fonction Split me semble effectivement bien utile
Merci pour ce tutoriel