Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Extraire une chaine de caractère entre deux chaines de caractères

bierepost

XLDnaute Nouveau
Bonjour à tous,

J'ai besoin d'un petit coup de main sur l'une de mes formules excel dont je n'arrive pas à venir à bout.

J'ai une liste d'urls composées comme ci-suit (en A1) :
/?utm_source=Facebook&utm_medium=Social&utm_campaign=Referral-Parent&utm_content=30_35&utm_term=Interaction_Insta

Mon problème : j'aimerais pouvoir extraire la chaine de caractère en rouge qui vient toujours après "utm_campaign=" et jusqu'au premier "&" qui se présente.

La grosse difficulté est qu'il existe plusieurs occurrences de "&" dans mon url.
J'ai essayé différentes solutions trouvées sur le forum, hélas, soit je ne les maitrise pas assez pour bien les comprendre et me les ré-approprier, soit je n'ai pas trouvé la bonne...

Quelqu'un aurait-il une solution ?

Merci d'avance !

Pierre
 

patricktoulon

XLDnaute Barbatruc
bonjour job75
comme en vba j'ai horreur des limite numérique écrit en dur car ca implique une modif de formule si changement dans la cellule source
donc nbcar je le laisse surtout celui a la place de 13
=STXT(C2;CHERCHE("utm_campaign=";C2;1)+NBCAR("utm_campaign=");CHERCHE("&";STXT(C2;CHERCHE("utm_campaign=";C2;1)+NBCAR("utm_campaign=");NBCAR(C2));1)-1)

après je suis pas le meilleur en formule donc .....et comme j'utilise l'expression recherché dans nbcar ) je brasse du vent car il faudrait faire la modif quand meme
mais pas quand même
de mon point de vue il y a des cas ou vba vous simplifie la vie de part la modularité d'une fonction sans changer un caractere de code
=fonctionVBA(chainedavant ; chaineapres)
cette situation selon moi en fait parti
 

patricktoulon

XLDnaute Barbatruc
re
regarde ça vaut ce que ça vaut mais qu'est ce que c'est simple

fonction
VB:
Function interChaine(cel, avant, apres)
interChaine = Split(Split(cel, avant)(1), apres)(0)
End Function

formule
=interChaine(C2;"utm_campaign=";"&")

reutilisable a souhait
 

haonv

XLDnaute Occasionnel
Re,

Merci Job75; je ne sais pas trop l'impact de certaines "formulations"( désolé, je ne sais pas trop comment le dire autrement) dans les formules.
Que ce soit au niveau de la mémoire occupée ou de la vitesse de calcul. Peut-on trouver des aides sur cela ?

@patricktoulon: Pour la formule, on peut aussi nommer "utm_campaign= " : "AChercher" par exemple.
Et remplacer cette chaine par son nom dans les formules. Ainsi, si le texte a rechercher change, il suffit de changer sa valeur dans le nom.
Mais il est vrai que par VBA, c'est plus simple....quand on maîtrise

Cordialement
 

patricktoulon

XLDnaute Barbatruc
bonjour @haonv

la pour le couip j'en vois pas l’intérêt de passer par un name a moins que j’eusse mal compris
au quel cas un exemple serait le bien venu
 

haonv

XLDnaute Occasionnel
Bonjour à tous,

@patricktoulon :
Si on passe par un name, on n'a pas à modifier la formule, mais seulement le name.
Ce n'était qu'une petite idée à ta remarque:
VB:
...ca implique une modif de formule si changement dans la cellule source

donc nbcar je le laisse surtout celui a la place de 13
Après, ça vaut ce que ça vaut
Comme je ne suis jamais très clair dans mes explications, le petit fichier joint:
 

Pièces jointes

  • Classeur1.xlsx
    9.8 KB · Affichages: 6

patricktoulon

XLDnaute Barbatruc
Bonjour @haonv
c'est bien ce que je pensais
absolument inutile dans le sens ou il faut accéder au names pour modifier autant le marquer dans la formule
ca n’agrémente donc pas l'utilisation en ergonomie donc absolument inutile
ici dans ce cas seule l'utilisation d'une cellule intermédiaire peut être utile en y mettant la chaîne recherchée
mais je le redis dans ce cas comme dans beaucoup d'autres VBA sera plus ergonomique comme je le démontre avec le code que j'ai donné plus haut la formule utilisant cette fonction vba en ai la preuve
mais ton name NON! tu fait fausse route
 

patricktoulon

XLDnaute Barbatruc
bonsoir Staple1600

j'avais vu tes interventions
le problème c'est que tu utilise X colonnes avec TextToColumns

peut être le demandeur ne peux pas selon si la données est deja dans un tableau ca effacerait des données dans les cellules ou sont transférés les partie par TextToColumns
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…