Téléphone : 07.51.62.01.40 | Mail : contact@morpheus-formation.fr
La fonction InStr VBA, abréviation de "Instruction String", est un outil puissant et flexible dans Visual Basic for Applications (VBA), essentiel pour tout développeur qui manipule des textes.
Cette fonction est conçue pour rechercher la position d'une sous-chaîne spécifique à l'intérieur d'une chaîne principale, offrant une précision cruciale dans le traitement et l'analyse des données textuelles.
Que vous ayez besoin de localiser un fragment de texte pour la validation des entrées, le filtrage de données ou même l'automatisation des tâches répétitives, InStr devient une ressource incontournable.
Cet article explore la syntaxe, les usages variés, et les options de comparaison de cette fonction, fournissant ainsi les clés pour maîtriser ses capacités et l'intégrer efficacement dans vos scripts VBA.
Options de module
La fonction Instr() appartient à la suite de ce que l’on appelle les fonctions de chaîne. On ne peut pas aborder les fonctions de chaîne sans faire un petit rappel sur les options de module.
Lorsque l’on développe en VBA, on préconisera de développer dans un module en Option Explicite. L’option Explicite force le programmeur à déclarer explicitement toutes les variables avant de les utiliser dans le code. L’option Explicite offre également l’avantage de l’aide dynamique que l’on peut obtenir avec la combinaison des touches Ctrl [Espace].
Pour ce qui du développement de procédure ou de code traitant des chaînes de caractères, il faut savoir qu’un module VBA est par défaut en Option Compare Binary.
Tous les caractères alpha seront comparés par rapport à leur valeur numérique ou code ASCII (American Standard Code for Information Interchange). Les lettres majuscules seront différentes des lettres minuscules, ce que l’on appelle la casse.
Un module peut être également défini avec l’Option Compare Text : Lorsque vous utilisez Option Compare Text dans un module VBA, toutes les comparaisons de chaînes de caractères dans ce module deviennent insensibles à la casse. Cela signifie que les caractères majuscules et minuscules sont considérés comme équivalents lors de la comparaison. Il est bien entendu que les caractères accentués seront différents des caractères non accentués.
Remarque : On ne parlera pas dans cet article de l’option Compare DataBase principalement utilisée dans l’application Access.
La fonction Excel VBA Instr()
La fonction Instr() est une fonction intégrée dans VBA qui permet de rechercher la position d'une sous-chaîne dans une chaîne principale.
Elle est très utile pour les manipulations de texte où vous avez besoin de localiser la présence de certains caractères ou sous-chaînes au sein d'une chaîne plus grande.
Syntaxe de Instr() Excel VBA
La syntaxe de la fonction Instr()
est structurée comme suit :
Instr([Start], Chaîne de caractères à parcourir, Chaine de caractères à rechercher, [Compare])
Start (Facultatif): C'est un argument numérique de type entier qui spécifie la position de départ, en nombre de caractères, dans la chaîne de caractères à parcourir. Cet argument étant facultatif, il prendra la valeur de 1 par défaut, indiquant que la recherche débutera à partir du premier caractère de la chaîne.
- Chaîne principale : Désigne la chaîne de caractères à parcourir.
- Sous-chaîne : Désigne la chaîne de caractères à rechercher.
Compare (Facultatif): C'est un argument numérique qui spécifie le type de comparaison à effectuer. Les valeurs possibles sont :
- vbBinaryCompare (0) : Comparaison binaire qui respecte la casse.
- vbTextCompare (1) : Comparaison textuelle qui ignore la casse.
- vbDatabaseCompare (2) : Comparaison basée sur votre base de données locale.
Exemples d’utilisation de Instr() Excel VBA
Dans cette partie, vous allez trouver 4 exemples uniques sur la fonction Instr().
Exemple 1 : Recherche simple
Dans cet exemple, Instr()
recherche la sous-chaîne "monde" dans la chaîne "Bonjour le monde". La recherche débute à la première position et retourne 12, indiquant que "monde" commence à la position 12.
La fonction Debug.Print
permet de visualiser la valeur de la position dans la fenêtre d’exécution de la console VBA.
Code de l'exemple à copier :
Sub Instr_1()
Dim pos As Integer
pos = Instr("Bonjour le monde", "monde")
Debug.Print pos
End Sub
Exemple 2 : Utilisation de l’argument start
Dans cet exemple, la recherche du caractère "e" commence à la position 4 dans la chaîne "Exemple exemple". La première occurrence de "e" après cette position est trouvée à la position 7.
Code de l'exemple à copier :
Sub Instr_2()
Dim pos As Integer
pos = Instr(4, "Exemple exemple", "e")
Debug.Print pos
End Sub
Exemple 3 : comparaison insensible à la casse
Cet exemple montre comment utiliser l'argument compare
pour effectuer une recherche qui ignore la casse. Bien que "Monde" dans la chaîne principale soit écrit avec une majuscule initiale, la fonction trouve la correspondance à la position 12, car elle ne tient pas compte de la casse.
Code de l'exemple à copier :
Sub Instr_3()
Dim pos As Integer
pos = Instr(1, "Bonjour le Monde", "monde", vbTextCompare)
Debug.Print pos
End Sub
Exemple 4 : vérification de la présence d’un mot dans une chaîne
Ces exemples démontrent la flexibilité et l'utilité de la fonction Instr()
Excel VBA pour les manipulations de chaînes de caractères dans des scripts VBA, facilitant des opérations complexes de recherche et de comparaison de texte.
Code de l'exemple à copier :
Sub Instr_4()
Dim MyStr As String
MyStr = "monde"
If InStr("Bonjour le monde", MyStr) > 0 Then
MsgBox "Le mot '" & MyStr & "' est présent.", vbInformation
Else
MsgBox "Le mot '" & MyStr & "' n'est pas présent.", vbInformation
End If
End Sub
Note : Le caractère &
permet la concaténation de chaînes de caractères et de variables dans une ligne de code. Un espace suivi d'un underscore (tiret du 8) permet de continuer un bloc sur une seconde ligne. Le code vbCrLf
(Carriage Return Line Feed) permet d’afficher un message avec un retour à la ligne dans un Message Box.
Conseils pratiques pour utiliser la fonction InStr() Excel VBA
- Vérification de l’existence : Avant de commencer à travailler avec le résultat de
InStr()
, assurez-vous que la valeur retournée est supérieure à zéro. Une valeur de zéro signifie que la sous-chaîne n'a pas été trouvée dans la chaîne principale. Cette vérification préliminaire vous évite d'exécuter des manipulations inutiles sur des résultats non valides. - Gestion des positions de départ : Lorsque vous utilisez l'argument
Start
, soyez conscient de sa position dans la chaîne. Il est utile pour sauter les premiers caractères que vous savez ne pas être pertinents pour votre recherche, mais une mauvaise utilisation peut vous faire manquer des occurrences importantes. - Utilisation des comparaisons : Choisissez judicieusement entre
vbBinaryCompare
etvbTextCompare
en fonction de votre besoin de sensibilité à la casse. Si la distinction entre majuscules et minuscules est cruciale, optez pourvbBinaryCompare
. Pour une recherche insensible à la casse, utilisezvbTextCompare
, particulièrement utile lorsque vous traitez des données textuelles dont la normalisation de la casse n'est pas garantie. - Optimisation des performances : Bien qu'
InStr()
soit efficace, son utilisation répétée dans de grandes boucles ou sur de grandes chaînes de caractères peut être coûteuse en termes de performance. Envisagez de réduire la taille de la chaîne ou d'utiliser des techniques telles que le pré-traitement des données pour minimiser le coût de l'opération. - Prévention des erreurs avec des arguments optionnels : Assurez-vous que les arguments facultatifs que vous passez à
InStr()
sont correctement utilisés. Des valeurs incorrectes ou inattendues pour ces arguments peuvent conduire à des comportements inattendus ou des erreurs subtiles.
Quel est mon niveau sur VBA Excel ?
Testez gratuitement votre niveau avec notre Quiz VBA Excel (≈ 7min)
Pour aller plus loin
La fonction InStr()
Excel VBA est un outil puissant et indispensable pour la manipulation de chaînes de caractères dans VBA.
Elle évite le développement de boucles itératives sur chaque caractère d'une chaîne principale pour rechercher une sous-chaîne.
Grâce à sa capacité à rechercher des sous-chaînes à partir d'une position spécifiée et avec différentes sensibilités à la casse, elle se révèle essentielle pour le traitement avancé de texte dans les applications VBA.
Familiarisez-vous avec ses divers usages pour tirer pleinement parti de ses capacités dans vos scripts VBA, et exploitez sa flexibilité pour simplifier et accélérer vos opérations de manipulation de texte.
Formation VBA Excel : découvrez les macros 🕹️
Vous êtes à l'aise avec Excel et vous souhaitez passer à un niveau supérieur ? Il est temps d'apprendre le langage de programmation VBA pour créer de véritables applications dans Excel ! Explorez notre programme de formation Excel VBA pour apprendre à créer des macros et automatiser vos classeurs.
Que vous soyez une entreprise ou un particulier, nous avons conçu une formation Macros VBA Excel adaptée à vos besoins spécifiques. Nous vous offrons la flexibilité de choisir entre des formations à distance ou en présentiel, selon vos préférences et contraintes.
En choisissant notre formation VBA Excel (macros), vous pourrez également passer la certification TOSA, une référence en matière de certification bureautique.
Les autres fonctions VBA TEXTE
FONCTION CHR VBA Excel
FONCTION REPLACE VBA EXCEL
Fonction FORMAT Excel VBA
FAQ : Excel VBA InStr
Ces questions fréquemment posées visent à clarifier l'utilisation et les capacités de la fonction InStr() pour les utilisateurs de VBA, offrant des explications sur son fonctionnement et ses applications typiques.