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 ?
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é."
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
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
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.
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
Re : [méthode Find] Trouver texte avec caractère spécial
Re
OK toutes mes excuses !!
De plus j'avais omis le fichier suivant avec la decouverte du lambda majuscule
(et en supposant que je ne me sois pas encore crashé !!!!)