Hier, j’ai reçu un e-mail d’un de mes lecteurs – Juin.
Elle voulait savoir comment appliquer un format de police gras à une partie spécifique d’une chaîne dans une cellule. Par exemple, appliquez le format gras uniquement au mot « Bonjour » de « Hello World ».
Et elle voulait faire cela pour des centaines de cellules à la fois.
Puisqu’il y a aucune fonctionnalité intégrée dans Excel qui puisse faire cela, j’ai créé une macro simple qui utilise la fonction Excel VBA InStr (vous verrez comment faire cela dans l’exemple 4 de ce tutoriel).
Mais d’abord, voyons comment fonctionne la fonction Excel VBA InStr!
Ce didacticiel couvre:
Fonction Excel VBA InStr
Dans ce tutoriel, je vais expliquer l’utilisation de la fonction InStr dans Excel VBA et voir quelques exemples pratiques où elle peut être utilisée.
Fonction InStr Excel VBA – Introduction
Recherche de fonction InStr la position d’une sous-chaîne spécifiée dans la chaîne et renvoie la première position de son occurrence.
Par exemple, si vous voulez trouver la position de «x» dans «Excel», à l’aide de la fonction Excel VBA InStr renvoie 2.
Syntaxe de la fonction InStr
- – (argument optionnel) c’est une valeur entière qui indique à la fonction InStr la position de départ à partir de laquelle elle doit commencer à chercher. Par exemple, si je veux que la recherche commence depuis le début, je vais entrer la valeur 1. Si je veux qu’elle commence par le troisième caractère, j’utiliserai 3. Si omis, la valeur par défaut de 1 est prise.
- String1 – Il s’agit de la chaîne principale (ou de la chaîne parente) dans laquelle vous souhaitez effectuer une recherche. Par exemple, si vous recherchez la position de x dans Excel, la chaîne 1 serait « Excel ».
- String2 – Il s’agit de la sous-chaîne que vous recherchez. Par exemple, si vous êtes à la recherche de la position de x dans Excel, String2 serait x.
- – (argument facultatif) Vous pouvez spécifier l’une des trois valeurs suivantes pour l’argument:
- vbBinaryCompare – Cela ferait un caractère par comparaison de caractères. Par exemple, si vous recherchez «x» dans «Excel», il renverra 2, mais si vous recherchez «X» dans «Excel», il renverra 0 car X est en haut case. Vous pouvez également utiliser 0 au lieu de vbBinaryCompare. Si l’argument est omis, il est pris comme valeur par défaut.
- vbTextCompare – Cela ferait une comparaison textuelle. Par exemple, si vous recherchez «x» ou «X» dans Excel, il renverrait 2 dans les deux cas. Cet argument ignore la casse des lettres. Vous pouvez également utiliser 1 au lieu de vbTextCompare.
- vbDatabaseCompare – Ceci est utilisé uniquement pour Microsoft Access. Il utilise les informations dans la base de données pour effectuer la comparaison. Vous pouvez également utiliser 2 au lieu de vbDatabaseCompare.
Notes supplémentaires sur la fonction Excel VBA InStr:
- InStr est un VBA fonction et non une fonction de feuille de calcul. Cela signifie que vous ne pouvez pas l’utiliser dans la feuille de calcul.
- Si String2 (qui est la sous-chaîne dont vous recherchez la position) est vide, la fonction renverra la valeur de l’argument.
- Si la fonction InStr ne trouve pas la sous-chaîne dans la chaîne principale, elle renvoie 0.
Voyons maintenant un exemple d’utilisation de la fonction Excel VBA InStr
Exemple 1 – Recherche de la position depuis le début
Dans cet exemple, j’utiliserai la fonction InStr pour trouver la position de «V» dans «Excel VBA» depuis le début.
Le code pour cela serait:
Sub FindFromBeginning()Dim Position As IntegerPosition = InStr(1, "Excel VBA", "V", vbBinaryCompare)MsgBox PositionEnd Sub
Lorsque vous exécutez ce code, il affichera une boîte de message avec la valeur 7, qui est la position de ‘V’ dans la chaîne ‘Excel VBA’.
Exemple 2 – Recherche de la position à partir du début du deuxième mot
Supposons que je veuille trouver la position de ‘le’ dans la phrase – ‘Le renard brun rapide saute par-dessus le chien paresseux’
Cependant, je veux que la recherche commencez par le deuxième mot.
Dans ce cas, nous devons changer l’argument pour nous assurer qu’il spécifie la position à partir de laquelle le deuxième mot commence.
Voici le code qui fera ceci:
Sub FindFromSecondWord()Dim Position As IntegerPosition = InStr(4, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub
Ce code affichera la boîte de message avec la valeur 32 car nous avons spécifié la position de départ comme 4. Par conséquent, il ignore le premier ‘ Le « et » trouve le deuxième « le » dans la phrase.
Si vous voulez le rendre plus dynamique, vous pouvez améliorer le code afin qu’il ignore automatiquement le premier mot.
Voici le code amélioré qui fera cela:
Sub FindFromSecondWord()Dim StartingPosition As IntegerDim Position As IntegerStartingPosition = InStr(1, "The quick brown fox jumps over the lazy dog", " ", vbBinaryCompare)Position = InStr(StartingPosition, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub
Ce code trouve d’abord la position d’un caractère d’espace et le stocke dans la variable StartingPosition.
Il utilise ensuite cette variable comme position de départ pour rechercher le mot «le».
Par conséquent, il renvoie 32 (qui est la position de départ de «le» après le premier mot).
Exemple 3 – Recherche de la position de @ dans l’adresse e-mail
Vous pouvez facilement créer une fonction personnalisée pour trouver la position de @ dans une adresse e-mail à l’aide de la fonction Excel VBA InStr.
Voici le code pour créer la fonction personnalisée:
Vous pouvez maintenant utiliser cette fonction personnalisée comme n’importe quelle autre fonction de feuille de calcul. Il prendra une référence de cellule comme entrée et vous donnera la position de @ dedans.
De même, vous pouvez créer un fonction personnalisée pour trouver la position de n’importe quelle sous-chaîne dans la chaîne principale.
Exemple 4 – Mettre en évidence une partie de chaîne dans les cellules
C’est la requête qui a été posée par June (mon lecteur qui m’a également inspiré pour écrire ce tutoriel).
Voici un exemple de données au format que June m’a envoyé:
Sa requête était de mettre en gras les nombres en dehors des crochets.
Voici le code que j’ai créé pour faire ceci:
Le code ci-dessus utilise la boucle For Each pour parcourez chacune des cellules de la sélection. Il identifie la position du caractère crochet ouvrant à l’aide de la fonction InStr. Il change ensuite la police du texte avant le crochet.
Pour utiliser ce code, vous devez copier et coller dans un module dans l’éditeur VB.
Une fois que vous avez copié-collé le code, sélectionnez les cellules dans lesquelles vous souhaitez effectuer cette mise en forme et exécutez la macro (comme indiqué ci-dessous).
Vous pouvez également aimer les didacticiels Excel VBA suivants:
- Fonction Excel VBA SPLIT.
- Fonction VBA TRIM.
- Le guide ultime des boucles Excel VBA .
- Guide du débutant sur l’utilisation de la boucle suivante dans Excel VBA.
- Comment créer et utiliser un complément Excel.
- Comment combiner plusieurs classeurs dans un classeur Excel.
- Comment compter les cellules colorées dans Excel.
- Exemples de macros Excel VBA utiles pour les débutants.
- Comment trier les données dans Excel à l’aide de VBA (Un guide étape par étape)