[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.
 

Dolichotis

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

Pardon, j'ai du oublié de sauvegarder avant d'attacher le fichier. De toute façon, il n'y avait que ces lignes d'intéressant.

Code:
Set q = ws.Cells.Find("chr(63) compt (en KOT)", LookIn:=xlValues, LookAt:=xlWhole)
 If Not q Is Nothing Then ws.Cells(Lig, 13).Value = ws.Cells(ligP, q.Column).Value
J'utilise q pour retrouver la bonne colonne afin de récupérer des résultats.


Alors j'ai testé, ça ne marche pas avec chr(63)...
Je vais regarder vos fichiers pour essayer de comprendre ascw, chrw parce que je ne comprends pas encore les différences entre...

Merci à tous les deux !
 

pierrejean

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

Re

Le fichier serait tout de même interessant !
Mais d'ores et deja il y a une erreur dans le code

Code:
Set q = ws.Cells.Find("chr(63) compt (en KOT)", LookIn:=xlValues, LookAt:=xlWhole)
 If Not q Is Nothing Then ws.Cells(Lig, 13).Value = ws.Cells(ligP, q.Column).Value

a modifier (au moins)

Code:
Set q = ws.Cells.Find([COLOR=blue]chr(63)  & " [/COLOR]compt (en KOT)", LookIn:=xlValues, LookAt:=xlWhole)
 If Not q Is Nothing Then ws.Cells(Lig, 13).Value = ws.Cells(ligP, q.Column).Value

et de preference (encore merci CATRICE)

Code:
Set q = ws.Cells.Find([COLOR=blue]chrW(955) & " [/COLOR]compt (en KOT)", LookIn:=xlValues, LookAt:=xlWhole)
 If Not q Is Nothing Then ws.Cells(Lig, 13).Value = ws.Cells(ligP, q.Column).Value
 

Catrice

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

Je viens de voir ton code PierreJean,

Pour etre complet sur le sujet et pour gérer cette histoire de majuscule, il faut modifier le code comme suit :

Sub test()
Set c = Sheets("Feuil1").Cells.Find(ChrW(955), LookIn:=xlValues, lookat:=xlWhole, MatchCase:=True)
If Not c Is Nothing Then
firstAddress = c.Address
Do
MsgBox "Le caractère lambda est situé en " & c.Address & Chr(10) & "Son code Unicode est " & AscW(c)
Set c = Sheets("Feuil1").Cells.FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End Sub
 

Dolichotis

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

Voici un nouveau fichier avec un bout de code :

l'idée est de transmettre des paramètres sauf si la case est noire et grise et de renvoyer des résultats... d'où le Q pour localiser la bonne colonne.
Attention, ce n'est qu'un bout de fichier sans le reste et une illustration sur la feuille qui ne correspond pas forcément au code mais montre ce qui est voulu.
 

Pièces jointes

  • lambda.xls
    21.5 KB · Affichages: 89
  • lambda.xls
    21.5 KB · Affichages: 91
  • lambda.xls
    21.5 KB · Affichages: 83

Catrice

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

Re,

Je n'ai pas tout compris.
Peux tu simplifier en faisant abstraction de ton code actuel et en proposant un "avant" / "après" qui nous permettrait de voir simplement ce que tu veux faire ?

Merci
 

pierrejean

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

Re

Une suggestion (valable si le lambda n'est pas un identifiant imperatif )

Code:
Sub test()
  Set c = ActiveSheet.Cells.Find("comp (en KOT)", LookIn:=xlValues, LookAt:=xlPart)
   If Not c Is Nothing Then
       MsgBox (c.Address)
   End If
End Sub
 

Pièces jointes

  • doli_lambda.zip
    7.2 KB · Affichages: 21

Catrice

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

Hello,

Merci mais il me manque un petit scénario...
Comment arrivent les valeurs 598, 613, 987 ?
Je ne vois pas de changement de couleur entre le avant apres ?!
Y a t il des formules ?
Quelle est la relation entre la Feuil1 et la Feuil2 ?

Peux tu donner un petit step by step ?
 

Dolichotis

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

Re Catrice, Pierrejean,

Les valeurs sont remplies à la main dans la première feuille ensuite quand on exécute la macro, les valeurs sont envoyées dans les cellules de la seconde feuille. La dernière colonne calcule à partir des valeurs envoyées(formules =F12+G12*1.5 etc par exemple), les résultats, qui sont retournés dans la première feuille !
J'avais mis de la couleur (rouge) entre avant et après, elle n'apparait pas ?

Sinon, PierreJean, le caractère lambda (λ) n'est pas impératif, je peux donc modifier comme dans ton exemple en mettant xlPart ? Merci !

Si c'est le cas, mon problème est résolu, merci, je ne maitrise pas encore tout à fait la méthode Find.

Enfin, ca serait toujours intéressant de savoir comment "écrire" des caractères spéciaux dans le code... chr, AscW ou ChrW ? Je n'ai pas bien compris la différence entre les 3...

Merci à vous deux pour votre aide !
 

pierrejean

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

Re

Ma boule de cristal etant cassée et mon reseau Telepathie a haut debit en panne ,

Je n'ai pas su ce qu'etaient les valeurs en rouge

alors j'ai mis la somme des valeurs de la ligne

A ta disposition pour adapter

Ps: j'ai oublié re remercier CATRICE pour le MatchCase:=True
 

Pièces jointes

  • lambda1.zip
    11.1 KB · Affichages: 25
Dernière édition:

Dolichotis

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

Merci pierrejean

Désolée pour les valeurs, j'aurai du faire attention mais j'ai mis des valeurs au pif ! En fait, le fichier d'origine est plutôt confidentiel et volumineux... et plus compliqué que l'exemple que j'ai donné. (Les valeurs peuvent aller dans plusieurs onglets qui calculent de différentes façons selon l'onglet...) Encore désolée, j'essaierai de faire plus attention la prochaine fois.

La réponse que tu m'as donné plus haut me convient !

En ce qui concerne les caractères spéciaux, si nécessaire, il faut plutot utiliser chrW ?

et merci à Catrice pour toutes ses fonctions sur les codes !
 
Dernière édition:

cibleo

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

Bonjour le forum,

Je reprends le fichier du post #15# de Pierrejean :

Code:
Sub test()
'Set c = Sheets("Feuil1").Cells.Find(ChrW(955), LookIn:=xlValues, lookat:=xlWhole)
Set c = Sheets("Feuil1").Cells.Find(ChrW(955), LookIn:=xlValues, lookat:=xlWhole, MatchCase:=True)
If Not c Is Nothing Then
firstAddress = c.Address
    Do
      MsgBox "Le caractère lambda est situé en " & c.Address & Chr(10) & "Son code Unicode est " & AscW(c)
      Set c = Sheets("Feuil1").Cells.FindNext(c)
    Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End Sub

Le code ci-dessus localise bien le caractère lambda dans feuil1 soit en E7, A956 et A1 dans cet ordre.
Les itérations commence par E7 et non A1 :confused:

Que faut-il modifier dans la boucle Do...Loop While pour afficher dans cet ordre A1, E7 et A956.
Pour info, j'ai le même problème dans un code utilisant la même structure.

Pouvez-vous m'aider Cibleo
 
Dernière édition:

JNP

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

Bonjour Cibleo :),
La recherche part toujours de la dernière cellule sélectionnée ;).
Donc, même si j'aime pas les Select, je pense qu'un
Code:
Sheets("Feuil1").Range("A1").Select
en début de code devrait résoudre ton problème :rolleyes:...
Bonne fin de dimanche :cool:
 

cibleo

XLDnaute Impliqué
Re à tous,
Bonjour JNP,

Ça ne fonctionne pas et je ne vois pas comment contourner le problème.

J'ai fait des recherches avec le terme Find et tester plusieurs fichiers et j'arrive à la même conclusion.
Par exemple dans le fil ci-dessous, je reprend le post #9# et le fichier de Fo_rum.

Avec une structure de code identique, si le terme recherché se trouve dans la 1ère cellule de la plage de recherche, cette cellule est toujours traitée en dernier.

https://www.excel-downloads.com/threads/vba-utiliser-find.154751/

On peut reprendre l'exemple de Fo_rum ci-dessus et rechercher le nombre 22, voyez le résultat.
Cibleo
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 453
Messages
2 088 551
Membres
103 881
dernier inscrit
malbousquet