Recherche de texte dans une ligne
- Messages
- 3
- Excel
- 2010 FR
- Inscrit
- 20/01/2017
- Emploi
- Technologue de laboratoire d'analyses médicales.
Bonjour la communauté,
Je cherche un moyen propre de chercher dans une plage de cellules (de A1 à AAA1) si une des cellules contient du texte et si c'est le cas, quelle est sa valeur. Je ne connais pas le texte à l'avance.
Une fonction "T" appliquée à une plage de cellule plutôt qu'à une cellule seule.
L'idée étant ensuite de pouvoir chercher ce texte dans une liste de texte attendu.
Le plus simple serait de pouvoir faire un "rechercheh(a1:aaa1;'feuil2!'a1:a10;1;faux)" qui me rendrait le texte contenu dans une cellule comprise entre a1 et AAA1 si il y en a, mais ça, ça ne marche pas...
Je vous remercie d'avance pour la suite!
Je suis ouvert à toutes idées! La seule condition étant que ce code soit une formule cellule et non vba car elle doit "analyser" en continu l'apparition d'un caractère (quel qu'il soit) dans la plage A1:AAA1 (voir sur toute la ligne A pour ne pas avoir de limite).
bonjour
a tout hasard pour une ligne
RECHERCHEH("*~";A1:AAA1;1;0)ou
=INDEX(A1:AAA1;;EQUIV("*~";A1:AAA1;0))cordialement
- Messages
- 3
- Excel
- 2010 FR
- Inscrit
- 20/01/2017
- Emploi
- Technologue de laboratoire d'analyses médicales.
Merci pour ce premier jet, mais la formule ne me rend rien si le texte n'est pas contenu dans la première cellule mais dans une autre.
En l'occurrence, ici j'ai du texte en C1 (contenu dans la plage A1:AAA1), les autres cellules sont vides, la formule proposée me retourne une case vide...
Pour éventuellement donnée une autre piste de recherche, à la base j'étais parti sur une formule comme celle-ci
=SI((ESTNA(RECHERCHEH('App'!C$1;'APP_LO'!$A1:$AAA1;1;FAUX)))=FAUX;'App'!C$1;SI((ESTNA(RECHERCHEH('App'!C$2;'APP LO'!$A1:$AAA1;1;FAUX)))=FAUX;'App'!C$2;SI((ESTNA(RECHERCHEH('App'!C$3;'APP LO'!$A1:$AAA1;1;FAUX)))=FAUX;'App'!C$3;SI((ESTNA(RECHERCHEH(... etc...
Mais l'inconvénient de cette formule est qu'elle n'est pas dynamique (ajout d'une référence dans 'App'!C$xx et devient vite très lourde à l'usage...
Maintenant si vous avez une idée pour créer la formule en VBA car bien que le nombre de ligne dans 'App'!C$xx n'est pas connu à l'avance, il reste fixe un fois établi. J'ai déjà une formule VBA qui me permet de connaitre les limites hautes et basses de la plage dans 'APP' si maintenant je savais extraire l'adresse de chaque cellule et faire une boucle pour créer la formule avec chaque valeur d'adresse différente... Mais je dois bien avouer que je sèches complètement...
En tout cas, merci pour le suivi!
Bonjour,
Où veux-tu le résultat ? sur la même ligne que le texte trouvé ou dans une liste à un autre endroit ?
On peut extraire les valeurs textes dans une liste avec un filtre avancé dont le critère serait
=T(A2)re
j'avais lu ça
Je cherche un moyen propre de chercher dans une plage de cellules (de A1 à AAA1)si une des cellulescontient du texte et si c'est le cas, quelle est sa valeur. Je ne connais pas le texteà l'avance.
cordialement
- Messages
- 3
- Excel
- 2010 FR
- Inscrit
- 20/01/2017
- Emploi
- Technologue de laboratoire d'analyses médicales.
Voilà le genre de formule que j'aimerai avoir mais dans une cellule et pas en vba
Range("1:1").Select
Add = Cells.Find(What:="*", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Value
Range("a2").Select
ActiveCell.Value = Add=RECHERCHEV(A2;'Feuil2'!A1:A28;1;FAUX)Ici, je détermine, si j'ai une valeur dans le range et il me rend la valeur en A2, il cherche ensuite si la valeur se trouve dans la liste qui se trouve sur une autre feuille. La formule marche bien mais si je veux une mise à jour des informations (le contenu de la ligne 1 peut évoluer) je dois relancer la macro... et le soucis c'est que je n'ai pas seulement la ligne 1 sur laquelle je dois réaliser cette formule mais environs 200...
Salut Joker,
une piste de départ... en VBA qui est parfaitement capable d'intercepter le moindre changement dans une cellule dans n'importe quelle Range!
Ici, tu as ta ligne de recherche "A1:???1" et une liste de recherche spécifique en "A5".
Si "A5" <> "" alors la macro recherche en ligne 1 toutes les occurrences listées en "A5" tant que "Axxx" n'est pas vide.
Si "A5" = "" alors, recherche générale de toutes les string en ligne 1.
Sans précision quant à la destination des résultats, ils sont listés dans une MsgBox.
Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim tTxt() As Variant
Dim iRow As Integer
'
iCol = Cells(1, Columns.Count).End(xlToLeft).Column
sCol = Split(Columns(iCol).Address(ColumnAbsolute:=False), ":")(1)
'
If Cells(5, 1) <> "" Then iRow = Range("A4").End(xlDown).Row
'
ReDim tTxt(iCol, 2)
'
If Not Intersect(Target, Union(Range("A1:" & sCol & 1), Range("A5:A50"))) Is Nothing Then
For x = 1 To iCol
If IsNumeric(Cells(1, x)) = False Then
iFlag = 1
If iRow > 0 Then 'recherche spécifique
iFlag = 0
For y = 5 To iRow
If Cells(1, x) = Cells(y, 1) Then
iFlag = 1
Exit For
End If
Next
End If
If iFlag = 1 Then
tTxt(iLig, 1) = Cells(1, x)
tTxt(iLig, 2) = x
iLig = iLig + 1
End If
End If
Next
'
For x = 0 To iLig - 1
sCol = Split(Columns(CInt(tTxt(x, 2))).Address(ColumnAbsolute:=False), ":")(1)
sRec = sRec & tTxt(x, 1) & " " & sCol & "1" & Chr(10)
Next
MsgBox sRec
End If
'
End SubNon, mais! Cet ostracisme envers VBA!
A+