supprimer chaine si autre chaine présente

Le
jip
Bonjour
Dans un fichier excel 2003 de 36000 lignes, j'ai ce genre de
variations de données :
ACON_2E7326_1941/ |navimages:series|
ACON_2E7326_1942/ |navimages:series|
8MI0007/ |navimages:series|
ACON_2E7323_1903_1912_TD/ |navimages:series|
ACON_2E7324_1913_1922_TD/ |navimages:series|
ACON_2E7325_1923_1932_TD/ |navimages:series|

Je souhaite, si et seulement si "TD" est présent, supprimer les années
devant TD mais pas TD
Pour obtenir par exemple ACON_2E7323_TD/ |navimages:series|
Une formule ?
Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #23882491
bonjour,

=SI(ESTERREUR(TROUVE("TD";A1));A1;GAUCHE(A1;TROUVE("TD";A1)-12)&DROITE(A1;TROUVE("TD";A1)))


--
isabelle
jip
Le #23882541
On 19 oct, 16:26, isabelle
bonjour,

=SI(ESTERREUR(TROUVE("TD";A1));A1;GAUCHE(A1;TROUVE("TD";A1)-12)&DROITE(A1;TROUVE("TD";A1)))

--
isabelle



Merci
Mais cela ne fonctionne que sur "ACON", mais pour des noms plus longs
comme
SAINTE_COLOMBE_LA_COMMANDERIE_2E8574_1903_1912_TD/ |
navimages:series|
cela ne va pas...
MichD
Le #23882711
Bonjour,

En supposant que la chaîne de caractère soit en A1, en B2 tu écris la formule suivante : =SpOte(A1)


Dans un module standard de ton classeur, copie la fonction personnalisée suivante :

'---------------------------
Function SpOte(Rg As Range) As String
Dim W As String, X As Integer
W = "_TD/"

X = InStr(1, Rg, "_TD/", vbTextCompare)
If X > 0 Then
SpOte = Left(Rg, X - 11) & W
End If
End Function
'---------------------------


MichD
------------------------------------------
"jip" a écrit dans le message de groupe de discussion :

Bonjour
Dans un fichier excel 2003 de 36000 lignes, j'ai ce genre de
variations de données :
ACON_2E7326_1941/ |navimages:series|
ACON_2E7326_1942/ |navimages:series|
8MI0007/ |navimages:series|
ACON_2E7323_1903_1912_TD/ |navimages:series|
ACON_2E7324_1913_1922_TD/ |navimages:series|
ACON_2E7325_1923_1932_TD/ |navimages:series|

Je souhaite, si et seulement si "TD" est présent, supprimer les années
devant TD mais pas TD...
Pour obtenir par exemple ACON_2E7323_TD/ |navimages:series|
Une formule ?
Merci
Jacky
Le #23882861
Bonsoir,

=SI(ESTERREUR(TROUVE("_TD/";A1));"";GAUCHE(A1;TROUVE("_TD/";A1)-11)&STXT(A1;TROUVE("_TD/";A1);NBCAR(A1)))
Ou si l'on veut garder la valeur de la cellule si TD n'est pas présent
=SI(ESTERREUR(TROUVE("_TD/";A1));A1;GAUCHE(A1;TROUVE("_TD/";A1)-11)&STXT(A1;TROUVE("_TD/";A1);NBCAR(A1)))
--
Salutations
JJ


"jip"
Bonjour
Dans un fichier excel 2003 de 36000 lignes, j'ai ce genre de
variations de données :
ACON_2E7326_1941/ |navimages:series|
ACON_2E7326_1942/ |navimages:series|
8MI0007/ |navimages:series|
ACON_2E7323_1903_1912_TD/ |navimages:series|
ACON_2E7324_1913_1922_TD/ |navimages:series|
ACON_2E7325_1923_1932_TD/ |navimages:series|

Je souhaite, si et seulement si "TD" est présent, supprimer les années
devant TD mais pas TD...
Pour obtenir par exemple ACON_2E7323_TD/ |navimages:series|
Une formule ?
Merci
isabelle
Le #23883471
oups désolé j'avais oublié de soustraire le nombre de caractères total,

=SI(ESTERREUR(TROUVE("TD";A7));A7;GAUCHE(A7;TROUVE("TD";A7)-12)&DROITE(A7;NBCAR(A7)-TROUVE("TD";A7)+2))

--
isabelle


Le 2011-10-19 10:46, jip a écrit :

Mais cela ne fonctionne que sur "ACON", mais pour des noms plus longs
MichD
Le #23883871
Une formule dans une cellule :

Si A1 contient la chaîne de caractères :

=SI(ESTNUM(CHERCHE("_TD/";A1));GAUCHE(A1;CHERCHE("_TD/";A1)-11)&DROITE(A1;NBCAR(A1)-CHERCHE("_TD/";A1)+1);"")


La fonction personnalisée devrait plutôt être ceci pour tenir compte des différents exemples que tu as donnés

'--------------------------------
Function SpOte(Rg As Range) As String
Dim W As String, X As Integer
W = "_TD/"
X = InStr(1, Rg, "_TD/", vbTextCompare)
If X > 0 Then
SpOte = Left(Rg, X - 11) & Right(Rg, Len(Rg) - X + 1)
End If
End Function
'--------------------------------

MichD
------------------------------------------
jip
Le #23886671
On 19 oct, 18:39, "Jacky"
Bonsoir,

=SI(ESTERREUR(TROUVE("_TD/";A1));"";GAUCHE(A1;TROUVE("_TD/";A1)-11)&STX T(A1;TROUVE("_TD/";A1);NBCAR(A1)))
Ou si l'on veut garder la valeur de la cellule si TD n'est pas présent
=SI(ESTERREUR(TROUVE("_TD/";A1));A1;GAUCHE(A1;TROUVE("_TD/";A1)-11)&STX T(A1;TROUVE("_TD/";A1);NBCAR(A1)))
--
Salutations
JJ



Merci beaucoup, la formule 2 fonctionne très bien.
Publicité
Poster une réponse
Anonyme