[méthode Find] Trouver texte avec caractère spécial

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Dolichotis

XLDnaute Occasionnel
Bonjour au forum,

Voilà tout est dans le titre :

comment faire pour trouver un texte dans une feuille contenant un caractère spécial (exemple : caractère grec lambda λ) avec la méthode Find ?
Je n'arrive pas à copier coller ce caractère dans le code... Y a-t-il un moyen de contourner ce problème ?

Merci pour vos solutions, bonne soirée à tous.
 
Re : [méthode Find] Trouver texte avec caractère spécial

Bonjour Dolichotis

regarde le code ci dessous, recherche "@" dans plage A1:A10 de la feuille active, fait une recherche dans l'aide vba sur "jeu de caractères", te donnera la liste des codes.

Code:
If Not Range("A1:A10").Find(Chr(64), , xlValues, xlPart, , , False) Is Nothing Then _
    MsgBox "caractère trouvé."

bonne soirée
@+
 
Re : [méthode Find] Trouver texte avec caractère spécial

Bonjour,

Si le caractere que tu cherches est un caractere Unicode, il faut que tu le recherches avec son code.
La fonction ChrW fait ceci.
Voir l'exemple joint.
Pour Lambda, le code Unicode Hexa est 03BB, en Decimal c'est 955.
Il faut faire les conversions soit à la main soit dans la macro
 

Pièces jointes

Dernière édition:
Re : [méthode Find] Trouver texte avec caractère spécial

Bonsoir,

Le code 63 ASCII n'est pas le code de Lambda mais le code de "?"
Lambda est un code unicode au dela de 255 (ASCII code 255 caracteres)
Pour le récupérer, il faut utiliser AscW qui donne 955 pour Lambda.

Voir exemple joint modifié dans le fichier de PierreJean.

Sub test()
Set c = Sheets("Feuil1").Cells.Find(Chr(63), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
MsgBox ("le caractere lambda est stiué en " & c.Address)
End If
MsgBox ("Son code Unicode est " & AscW(Range("A1")))
End Sub
 

Pièces jointes

Dernière édition:
Re : [méthode Find] Trouver texte avec caractère spécial

Re

Effectivement lorsque l'on affiche le chr(63) on a bien ?

Il n'en reste pas moins que la recherche telle que je l'avais presentée aboutit a trouver lambda en A1

Malheureusement elle trouverait aussi les ?

Conclusion :
Merci a Catrice de m'avoir fait decouvrir le AscW
 
Re : [méthode Find] Trouver texte avec caractère spécial

Bonjour à tous, Pierrot, Pierrejean, Catrice,

merci pour votre aide.

Pierrot, je ne peux pas utiliser l'aide vba parce qu'elle n'est pas installée.

Pierrejean, Catrice, j'ai regardé vos fichiers mais je n'ai pas bien compris la différence entre Chr et AscW...
Peut-on mettre Ascw dans le Find à la place de Chr ?

Je vais essayer avec le Chr pour voir si ça marche. Il est dans un bout de texte donc la possibilité qu'il soit confondu avec ? est presque nulle.
 
Re : [méthode Find] Trouver texte avec caractère spécial

Bonjour à tous,

Effectivement, ce n'est pas simple.
En testant, on constate que tous les codes supérieurs à 255 sont reconus comme "?" code 63. Et la fonction recherche cherche alors un code 63.
On constate également que dans les 255 premiers caracteres ASCII certains ne sont pas communs à la table Unicode (Voir onglet Unicodes et ASCII dans le fichier joint). Le code 158 par exemple.
La fonction ChrW ne résout pas tous les problemes. Car si le code 158 est tapé en ASCII, il faudra chercher 158 s'il est tapé en Unicode il faudra chercher 382 ...
Quelques illustations dans le fichier joint.
Bon courage ...


PierreJean,
Dans ton fichier, je vois un Find(Chr(63) qui cherche un caractere ASCII et un AscW(Range("A1") qui lui affiche le résultat pour un caractère Unicode.
Je pense qu'il faut utiliser Chrw avec AscW et Chr avec Asc pour limiter les erreurs.
 

Pièces jointes

Dernière édition:
Re : [méthode Find] Trouver texte avec caractère spécial

Re

Salut CATRICE 🙂 🙂

J'ai étendu ta recherche

et vu apparaitre un curieux Code 923 situé en A924

Par ailleurs j'ai du omettre de sauvegarder le fichier que j'ai voulu poster
Le voici avec la curiosité de la réponse

ps: moi non plus : rien trouvé dans le fichier de Dolichotis
 

Pièces jointes

Re : [méthode Find] Trouver texte avec caractère spécial

Hello PierreJean,

Le code 923 est le Lambda majuscule.


Je crois qu'il y a une petite erreur dans ton code.
Tu testes la cellule A1 :-(
Je l'avais corrigé comme suit dans mon fichier Lambda3

Sub test()
Set c = Sheets("Feuil1").Cells.Find(ChrW(955), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
MsgBox ("le caractere lambda est situé en " & c.Address)
MsgBox ("Son code Unicode est " & AscW(c))
End If
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
406
D
  • Question Question
Power Query powerquery
Réponses
4
Affichages
363
Retour