A voir également:
- Excel rechercher une valeur dans une chaine de caractère
- Rechercher ou entrer l'adresse - Guide
- Caractère ascii - Guide
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Caractere speciaux - Guide
4 réponses
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 395
12 juil. 2012 à 18:59
12 juil. 2012 à 18:59
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
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
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 395
Modifié par Vaucluse le 15/07/2012 à 07:22
Modifié par Vaucluse le 15/07/2012 à 07:22
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?
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?
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 395
16 juil. 2012 à 18:37
16 juil. 2012 à 18:37
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
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
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
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
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 395
17 juil. 2012 à 08:44
17 juil. 2012 à 08:44
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
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
tontong
Messages postés
2549
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
23 avril 2024
1 054
17 juil. 2012 à 15:26
17 juil. 2012 à 15:26
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.
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.
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 395
17 juil. 2012 à 18:51
17 juil. 2012 à 18:51
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
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
tontong
Messages postés
2549
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
23 avril 2024
1 054
17 juil. 2012 à 19:26
17 juil. 2012 à 19:26
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.
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.
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
17 juil. 2012 à 09:40
17 juil. 2012 à 09:40
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 :
les formules deviennent :
=voie(C12;1)
et
=voie(C12;2)
https://www.cjoint.com/?BGrjMUeOpO5
eric
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
12 juil. 2012 à 23:15
13 juil. 2012 à 19:57
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!!
14 juil. 2012 à 18:08
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.
14 juil. 2012 à 20:17
oui le blanc sera toujours la. Merci beaucoup!
14 juil. 2012 à 20:30
bonne soirée!