Rechercher une valeur dans une matrice

Annie -  
 Annie -
Bonjour,

Voici mon problème, j'ai une matrice contenant du texte et je veux y rechercher une valeur et récupérer une chaine de caractère dans la ligne où se trouve la valeur rechercher. Exemple :

15:Montréal&Laval
16: Longueil &Toronto
17:Lavall&Québec

d'abord j'ai écris une formule qui permet d'extraire les nom se trouvant entre les signes : et &, la voici : (STXT(STXT(A2:A5;1;TROUVE("&";A2:A4;1)-1);TROUVE(":";STXT(A2:A4;1;TROUVE("&";A2:A4;1)-1))+1;NBCAR(STXT(A2:A4;1;TROUVE("&";A2:A4;1)-1)))).
Problème : la formule marche uniquement pour la première ligne, comment faire pour avoir les autres nom comme Longueil ou Laval avec une recherchev, en recherchant les chiffres 15,16 ou 17..?? MERCI!!!

Si vous voulez je vous envoie le fichier.

A voir également:

4 réponses

Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 449
 
Bonsoir
essayez comme ça:
=STXT(RECHERCHEV("*"&A1&"*";A2:A4;1;0);TROUVE(":";RECHERCHEV("*"&A1&"*";A2:A4;1;0);1)+1;TROUVE("&";RECHERCHEV("*"&A1&"*";A2:A4;1;0);1)-4)

avec le nombre cherché en A1

ne fonctionne que si l'entête est toujours composée de deux chiffres et les deux points (3 caractères)
sinon recomposer la formule que vous avez mise en place en remplaçant le A2:A4 par l'ensemble RECHERCHEV de celle ci

ou si vous voulez directement le nombre remplacer l'ensemble: "*"&A1&"*" par "*15*"

bien sur si vous copier le formule dans une colonne, bloquer les champs qui ne doivent pas bouger.

crdlmnt
0
Annie
 
Merci ta formule marche. Tu es vraiment un champion!
0
Annie
 
Bonjour j'aimerais ton aide pour compléter le truc que tu m,a montré hier. Voici le texte où je dois chercher mes mots :

2306: St-Denis & René-Lévesque Performance by movement

Avec ta formule j'ai réussi à extraire le mot "St-Denis" se trouvant entre les signes : et &, mais j'essaie de faire pour le deuxième mot "René Lévesque se toruvant entre le signe & et le mot perfformance by movement..comment faire?? Merci beaucoup!!
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 449
 
Bonjour Annie
Ca, c'est beaucoup plus difficile, sauf peut être si vous pouvez garantir dans tous les cas que le blanc qui suit le mot cherché et le deuxième après le signe &
soit dans tous les cas:
texte............... & (blanc) texte (blanc) Etc.....
A vous lire?
crdlmnt.
0
Annie
 
Bonjour Vaucluse,
oui le blanc sera toujours la. Merci beaucoup!
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 449
 
Alors je vous en reparle demain matin, je ferme pour aujourd'hui.
bonne soirée!
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 449
 
Bonjour
voila la formule complète qui donne le résultat que vous cherchez pour le texte de votre message.
Elle ne fonctionne que si le texte est formé de

code num/deux points/blanc/nom/blanc/&/blanc/texte cherché/ blanc
En résumé:
le signe &+ blanc se trouve devant le nom cherché
le blanc derière le nom cherché est le 4° du texte.

vous pouvez simplifier la formule en utilisant deux cellules:
une pour placer la recherche qui extraira du tableau le texte correspondant au N° en A1
une avec la formule ci dessous en remplaçant l'ensemble
RECHERCHEV("*"&A1&"*";A2:A4;1;0)
par l'adresse de la cellule qui contient le texte

=STXT(RECHERCHEV("*"&A1&"*";A2:A4;1;0);TROUVE("&";RECHERCHEV("*"&A1&"*";A2:A4;1;0);1)+2;TROUVE("/";SUBSTITUE(RECHERCHEV("*"&A1&"*";A2:A4;1;0);" ";"/";4);1)-TROUVE("&";RECHERCHEV("*"&A1&"*";A2:A4;1;0);1)-2)

Revenez si ne convient pas à tout vos cas de figure

un petit exemple pour être plus clair
https://www.cjoint.com/?BGphvTtTC3V

crdlmnt

ne sommes nous pas seuls à comprendre ce que l'on explique?
0
Annie
 
Merci beaucoup. Je vais le tester au couran t d ela journée et je te reviens là-dessus. Merci encore
0
Annie
 
Salut est ce que je peux t envoyer mon fichier car j ai copié la formule mais ca ne marche pas, je pense qu il y a un petit erreur qui sait glissée et que je ne sait pas ...
Merci!
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 449
 
Re
bien sur , me mettre à disposition sur:
https://www.cjoint.com/
et revenir placez ici le lien donné par me site.
Si vous voulez passer en privé, il faut vous inscrire comme membre et cliquer dans un message sur mon pseudo.
à vous lire
crdlmt
0
Annie
 
J'ai essayé la forumle mais elle ne marche pas tout le temps. Y a t il un moyen de la faire marcher quelque soit le numéro de l'intersection (1,2, 3 ou 4 chiffres) ?
Le deuxième onglet du fichier contient les noms à chercher. Ces noms proviennent d'un fichier texte importés d'un logiciel et changent selon le contexte mais la structure du fichier ne change pas..

NB : la formule sur la cellule horizontale donne le premier nom dans le deuxième onglet, alors que celle sur lea cellule verticale donne le deuxième nom. Pour les noms horizontales la formule d onne parfvois des lettres de trop ou de moins, dépendamment de la taille de l'intersection. ESt ce qu'il y a un moyen d'arranger ça?

Ci-joint le fichier. Merci beaucoup!

http://cjoint.com/?BGqtCFnym2Z
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 449
 
Bonjour
une solution ici.
Il n'st pas certain que la seconde extraction fonctionne dans tous les cas, voir les commentaires.
Revenez si besoin:
https://www.cjoint.com/?BGriRSYyXZK

crdlmnt
0
tontong Messages postés 2586 Date d'inscription   Statut Membre Dernière intervention   1 063
 
Bonjour,
Mon commentaire sera timide parce que je ne suis pas sûr d'avoir tout suivi.
Pourquoi faire ......RECHERCHEV("*"&C12&"*";Champ;1;0)....qui valide tous les nombres qui se terminent comme C12?
RECHERCHEV(C12&"*";Champ;1;0) serait plus sélectif si la valeur commence toujours par un nombre suivi de deux points.
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 449
 
Bonsoir Tontong
Tu as partiellement raison
en réalité, c'est ce que j'avais proposé dans mes message, mais ce n'est pas ce qui est dans la fichier modèle que j"'ai renvoyé au vu des exemples à traiter.

Si tu écris (C12$"*", la recherche va s'arrêter sur le premier texte qui commence par C12 et donc en trouvant le 5 ne trouvera jamais le 5000 qui est plus bas.

D'ou le code dans la formule finale, voir le fichier:

(C12&":*" avec les deux points dans les guillemets pour bien spécifier le code à trouver

crdlmnt
0
tontong Messages postés 2586 Date d'inscription   Statut Membre Dernière intervention   1 063
 
Merci beaucoup pour l'explication mais aussi merci pour la formule: j'ai apprécié et noté la combinaison STXT(RechercheV(.....
J'ai commis une erreur dans les formules de mon commentaire en zappant les ":" ce qui dénature le sens de ma remarque.
Mon observation portait sur le caractère de remplacement "*" qui précède la reférence C12.
Il pourrait y avoir ambigüité entre un texte " 5: Henri-Bourassa &...." et un texte qui commencerait par "15: ..." ou " 205:"
Merci encore et bonne soirée.
0
Annie
 
Merci Vaucluse. Je vais le regarder, s il y a quoi que ce soit je te reviens. Dans tous les cas, merci infiniment!!
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour à tous,

Oula, ça c'est de la formule ;-)

Comme je vois qu'il y a déjà des macros, une proposition de fonction personnalisée à mettre dans un module standard :
Function voie(référence As Long, num_Voie) As String
    Dim c As Range
    If num_Voie < 1 And num_Voie > 2 Then
        voie = "num_voie incorrect"
        Exit Function
    End If
    Set c = Sheets("SimTrafficMvmt").[A:A].Find(what:=référence & ":", LookIn:=xlValues, LookAt:=xlPart)
    If c Is Nothing Then
        voie = "référence non trouvée"
    Else
        voie = Replace(c.Value, référence & ": ", "")
        voie = Replace(voie, " Performance by movement ", "")
        voie = Trim(Split(voie, "&")(num_Voie - 1))
    End If
End Function

les formules deviennent :
=voie(C12;1)
et
=voie(C12;2)
https://www.cjoint.com/?BGrjMUeOpO5

eric
0
Annie
 
Merci Eric pour ta belle formule!!
0