Excel VBA InStr

Fonction InStr VBA Excel

Retourne un nombre entier indiquant la position d'une valeur dans une chaîne de caractères.
Partagez facilement cette ressource avec vos collègues 📲
5
(10)

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 :

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.

Exemple1 _fonctionINSTRVBA

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 :

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.

Exemple2_FonctionInstrVBA

Code de l'exemple à copier :

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.

Exemple3_FonctionINSTR

Code de l'exemple à copier :

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.

Exemple4_FonctionInstr

Code de l'exemple à copier :

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

  1. 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.
  2. 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.
  3. Utilisation des comparaisons : Choisissez judicieusement entre vbBinaryCompare et vbTextCompare en fonction de votre besoin de sensibilité à la casse. Si la distinction entre majuscules et minuscules est cruciale, optez pour vbBinaryCompare. Pour une recherche insensible à la casse, utilisez vbTextCompare, particulièrement utile lorsque vous traitez des données textuelles dont la normalisation de la casse n'est pas garantie.
  4. 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.
  5. 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

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.

As-tu aimé cet article ?

Clique sur l'étoile pour l'évaluer !

Note moyenne 5 / 5. Nombre de votes : 10

Aucun vote jusqu'à présent ! Tu peux être le premier à évaluer cet article.

Gilles CHARRAULT

Gilles CHARRAULT

Fort d'une expérience de cadre dans l'industrie, reconverti en expert Excel VBA, je propose des formations personnalisées et des solutions de développement sur mesure en programmation VBA. Créateur de l'outil XLOneClick, je suis spécialisé dans l'automatisation de processus et la gestion de données via Excel pour optimiser la productivité des entreprises.

Articles: 9
LES 25 FONCTIONS EXCEL les plus utilisées !
Félicitations ! Ton ebook Excel offert !
EXERCICES | FICHES | EXEMPLES
LES 25 FONCTIONS EXCEL LES PLUS UTILISÉES !
E-book Excel offert
Vous souhaitez progresser rapidement et exploiter le plein potentiel d'Excel ? Découvrez dès maintenant notre formation adaptée à votre niveau !
Choisissez votre formation Excel !
Créateur de Contenus sur EXCEL
Rejoignez notre équipe dès maintenant
Nous recherchons une personne (basée à Metz est un +) avec un niveau avancé sur Excel pour nous soutenir dans la création de contenus.
  • Maîtrise avancée d'Excel, y compris Power Query.
  • Passion pour l'enseignement et la création de contenus pédagogiques.
  • Poste flexible adapté aux formateurs, indépendants, étudiants ou ceux cherchant un emploi complémentaire.