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

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.
 

Pierrot93

XLDnaute Barbatruc
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
@+
 

Catrice

XLDnaute Barbatruc
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

  • recherche lambda.xls
    23.5 KB · Affichages: 185
Dernière édition:

Catrice

XLDnaute Barbatruc
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

  • lambda2.xls
    27.5 KB · Affichages: 93
Dernière édition:

pierrejean

XLDnaute Barbatruc
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
 

pierrejean

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

Re

une curiosité !!
J'ai repris le fichier lambda2 de CATRICE pour faire la recherche sur le ChrW(955) et voici le resultat

Il y a de quoi se tromper !!!
 

Pièces jointes

  • lambda2.zip
    9.2 KB · Affichages: 76
  • lambda2.zip
    9.2 KB · Affichages: 77
  • lambda2.zip
    9.2 KB · Affichages: 78

Dolichotis

XLDnaute Occasionnel
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.
 

Dolichotis

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

Voici un exemple de mon fichier. Avec seulement la partie me posant problème sinon c'est un peu long.

J'ai testé, avec et sans chr(63) et ça marche sans mais pas avec chr(63)
 

Pièces jointes

  • lambda.xls
    13.5 KB · Affichages: 96
  • lambda.xls
    13.5 KB · Affichages: 98
  • lambda.xls
    13.5 KB · Affichages: 106

Catrice

XLDnaute Barbatruc
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

  • lambda3.zip
    37 KB · Affichages: 76
  • lambda3.zip
    37 KB · Affichages: 77
  • lambda3.zip
    37 KB · Affichages: 80
Dernière édition:

pierrejean

XLDnaute Barbatruc
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

  • lambda2.zip
    9.5 KB · Affichages: 72
  • lambda2.zip
    9.5 KB · Affichages: 77
  • lambda2.zip
    9.5 KB · Affichages: 67

Catrice

XLDnaute Barbatruc
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
 

pierrejean

XLDnaute Barbatruc
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é !!!!)
 

Pièces jointes

  • lambda3.zip
    36.1 KB · Affichages: 79
  • lambda3.zip
    36.1 KB · Affichages: 83
  • lambda3.zip
    36.1 KB · Affichages: 77

Discussions similaires

Statistiques des forums

Discussions
312 243
Messages
2 086 539
Membres
103 244
dernier inscrit
lavitzdecreu