Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recherche d'une phrase dans une plage de cellules

2 réponses
Avatar
Coriandre
Bonjour à tous,

Soit une plage de cellules en colonne C nommée "base" dont la formule est la
"concatenération" (?) des cellules des colonnes A et B, comme suit :
=SI(A10="";"";SI(B10="";A10;CONCATENER(A10;" ";B10)))
(Exemple pour la ligne 10)

La ligne située sous cette plage (n'appartenant pas à la plage)
contient la même formule toujours en colonne C,
et toute cette ligne a le nom défini : "fin".

Je veux chercher au sein de la plage "base" une cellule dont le contenu est
EXACTEMENT celui de la celule en colonne C de la ligne "fin".
Si on ne trouve rien, alors la cellule A1 est sélectionnée.
La cellule de la colonne C de la ligne "fin" étant sélectionnée, j'ai donc
écrit cette macro :
---------------------------------
Sub recherche_negative()
Dim c As Range
Set c = Range("base").Find(ActiveCell.Value, LookIn:=xlValues)
If c Is Nothing Then
Range("A1").Select
End If
End Sub
--------------------------------
Tout fonctionne bien si la cellule A de la ligne "fin" ET la cellule B de la
ligne "fin" contiennent une valeur.
Si je mets en A de "fin" le texte "Coucou" et en B de "fin" le texte
"Bonjour" (concaténération en C => "Coucou Bonjour"), alors que dans la
plage "base" il existe le texte "Coucou Salut", la cellule A1 est
sélectionnée, témoignant que Excel n'a pas trouvé le texte EXACT.

Mais, toujours si dans la plage "base" il existe le texte "Coucou Salut",
mais non pas le texte "Coucou",
si en ligne "fin", j'ai "Coucou" en colonne A et rien en
colonne B (concaténération en C => "Coucou"), Excel fait comme si le texte
"Coucou" était déjà présent en colonne C de la plage, et donc ne sélectionne
pas A1.

Qu'est-ce qui ne va pas ?

Et comment rechercher la phrase exacte, pas simplement une qui ressemble ?

Merci de votre aide.

--
Coriandre

2 réponses

Avatar
JB
Bonjour,

Il manque peut être : LookAt:= xlPart/XlWhole

Set c = Range("base").Find(ActiveCell.Value, LookIn:=xlValues,LookAt: =
XlWhole)

http://boisgontierjacques.free.fr/pages_site/cellules.htm#RechercherFind

JB
http://boisgontierjacques.free.fr


On 8 sep, 11:31, "Coriandre" wrote:
Bonjour à tous,

Soit une plage de cellules en colonne C nommée "base" dont la formule e st la
"concatenération" (?) des cellules des colonnes A et B, comme suit :
=SI(A10="";"";SI(B10="";A10;CONCATENER(A10;" ";B10)))
(Exemple pour la ligne 10)

La ligne située sous cette plage (n'appartenant pas à la plage)
contient la même formule toujours en colonne C,
et toute cette ligne a le nom défini : "fin".

Je veux chercher au sein de la plage "base" une cellule dont le contenu e st
EXACTEMENT celui de la celule en colonne C de la ligne "fin".
Si on ne trouve rien, alors la cellule A1 est sélectionnée.
La cellule de la colonne C de la ligne "fin" étant sélectionnée, j' ai donc
écrit cette macro :
---------------------------------
Sub recherche_negative()
Dim c As Range
Set c = Range("base").Find(ActiveCell.Value, LookIn:=xlValues)
If c Is Nothing Then
Range("A1").Select
End If
End Sub
--------------------------------
Tout fonctionne bien si la cellule A de la ligne "fin" ET la cellule B de la
ligne "fin" contiennent une valeur.
Si je mets en A de "fin" le texte "Coucou" et en B de "fin" le texte
"Bonjour" (concaténération en C => "Coucou Bonjour"), alors que dan s la
plage "base" il existe le texte "Coucou Salut", la cellule A1 est
sélectionnée, témoignant que Excel n'a pas trouvé le texte EXACT.

Mais, toujours si dans la plage "base" il existe le texte "Coucou Salut",
mais non pas le texte "Coucou",
si en ligne "fin", j'ai "Coucou" en colonne A et rien en
colonne B (concaténération en C => "Coucou"), Excel fait comme si l e texte
"Coucou" était déjà présent en colonne C de la plage, et donc ne sélectionne
pas A1.

Qu'est-ce qui ne va pas ?

Et comment rechercher la phrase exacte, pas simplement une qui ressemble ?

Merci de votre aide.

--
Coriandre


Avatar
Coriandre
Merci bien, cela fonctionne effectivement avec LookAt:=XlWhole.

Sur ta page
(http://boisgontierjacques.free.fr/pages_site/cellules.htm#RechercherFind),
il n'y a pas de précision :
Si on met à LookAt:= xlPart, la recherche se fait-elle alors sur une partie
du texte ?
Coupe-t-elle les mots (si on cherche "Coucou" et que "Cou" existe, la
recherche est-elle positive ?
Peut-on faire une recherche sur des mots entiers en excluant les parties de
mots ?

--
Coriandre


"JB" a écrit dans le message de
news:
Bonjour,

Il manque peut être : LookAt:= xlPart/XlWhole

Set c = Range("base").Find(ActiveCell.Value, LookIn:=xlValues,LookAt: XlWhole)

http://boisgontierjacques.free.fr/pages_site/cellules.htm#RechercherFind

JB
http://boisgontierjacques.free.fr