Récupérer des Caractères entre crochet

Buster

XLDnaute Nouveau
Bonjour a tous,
voici mon problème :

Je voudrais récupérer dans une cellule des caractères entre crochet pour les coller dans une autre cellule.

Exemple :

A1 Robert [Francais]
A2 Guy [Allemand)
A3 Michel

Je voudrais que le texte se trouvant entre ces crochets soit dans la colonne suivante :

B1 Francais
B2 Allemand
A3 "vide"

Je galère depuis plus de 3 jours ! Recherche sur le net, sur ce forum, etc...
HELP !!! Merci beaucoup.

Je ne voudrais pas faire du VB mais juste utiliser les formules existantes d'Excel.
 

MJ13

XLDnaute Barbatruc
Re : Récupérer des Caractères entre crochet

Bonjour Buster,Kjin , JCGL

Sympas vos formules:).

A tester
N'étant pas très fort en formule et me mettant progressivement aux fonctions: voici une fonction que je vient de faire, elle permet de cumuler les mots entre crochets (si il y en a plusieurs).
Il y a peut-être des bugs.

Code:
Function trouveEntreCrochet(range)
'Stop
nlet = Len(range)
'entre = 1
For i = 1 To nlet
If Mid(range, i, 1) = "]" Then mot = Mid(mot, 1, Len(mot) - 1): entre = 0 '& Mid(range, i + 1, 1)
If Mid(range, i, 1) = "[" Or entre = 1 Then mot = mot & Mid(range, i + 1, 1): entre = 1
Next i
'trouveEntreCrochet = nlet
trouveEntreCrochet = mot
End Function

Bon Wek-end
 
Dernière édition:

Buster

XLDnaute Nouveau
Re : Récupérer des Caractères entre crochet

OK nikel ! Merci beaucoup pour la réactivité, vraiment !

Pour faire un récap. :

A1 Robert [Francais]
A2 Guy [Allemand)
A3 Michel

Je voudrais que le texte se trouvant entre ces crochets soit dans la colonne suivante :

B1 Francais
B2 Allemand
A3 "vide"

Cette formule me donne le résulat avec les crochets ([...])

=SI(ESTERR(STXT(A1;TROUVE("[";A1);NBCAR(A1)));"";STXT(A1;TROUVE("[";A1);NBCAR(A1)))

B1 [Francais]
B2 [Allemand]
A3 "vide"


et cette formule me donne le résultat sans les crochets (...)

=SI(DROITE(A1;1)<>"]";"";STXT(A1;TROUVE("[";A1;1)+1;TROUVE("]";A1;1)-TROUVE("[";A1;1)-1))

B1 Francais
B2 Allemand
A3 "vide"


J'explique tout bien pour les personne comme moi qui mettent 3 jours pour chercher une info sur le net...
Encore un grand merci à KJIN & JCGL :cool:
 

JCGL

XLDnaute Barbatruc
Re : Récupérer des Caractères entre crochet

Bonjour à tous,

Michel : Function trouveEntreCrochets(range) vs trouveEntreCrochet

A++
A+ à tous

Edition : Après modification du s : cela fonctionne parfaitement Bravo
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Récupérer des Caractères entre crochet

Re bonjour

Merci JCGL

Voici le fichier avec les 3 solutions.
En relisant la question petite modif si on ne trouve pas, on affiche vide
Code:
Function trouveEntreCrochet(range)
'Stop
nlet = Len(range)
'entre = 1
For i = 1 To nlet
If Mid(range, i, 1) = "]" Then mot = Mid(mot, 1, Len(mot) - 1): entre = 0 '& Mid(range, i + 1, 1)
If Mid(range, i, 1) = "[" Or entre = 1 Then mot = mot & Mid(range, i + 1, 1): entre = 1
Next i
'trouveEntreCrochet = nlet
If mot = 0 Then trouveEntreCrochet = "Vide" Else trouveEntreCrochet = mot
End Function
 

Pièces jointes

  • Fonction_trouveEntreCrochet.xls
    25 KB · Affichages: 237
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Récupérer des Caractères entre crochet

Bonjour Buster, kjin, Jean-Claude:), Michel:)

pour le fun, une autre approche avec fonction personnalisée:

Code:
Function crochet(c As Range)
crochet = Split(Split(c.Value, "[")(1), "]")(0)
End Function

bon après midi.
@+
 
Dernière édition:

Buster

XLDnaute Nouveau
Re : Récupérer des Caractères entre crochet

Encore nikel !!! Cette fonction marche parfaitement, merci MJ13 !

Par contre, je viens de m'appercevoir que, quelque fois, le pays est [[FRE]]

Cad, que j'ai [Francais] ou [[FRE]] , et avec vos solutions cela me supprime le dernier caractère (])

Bien joué MJ13 pour le fichier en ligne pour nos tests, si en A1 je remplace [Francais] par [[FRE]] cela me donne come résultat : [FRE et non [FRE]

(Je signale que dans le cas du [[FRE]] je voudrais garder qu'une seule paire de crochet)
 

kjin

XLDnaute Barbatruc
Re : Récupérer des Caractères entre crochet

Re, bonjour à tous,
Je me fais avoir systématiquement avec NBCAR et c'est...! :rolleyes:
Du coup c'est plus long :eek: et bien moins élégant que JC et Michel, néanmoins je la mets quand même tant pis :eek:
=SI(ESTNA(STXT(A1;TROUVE("[";A1)+1;NBCAR(A1)-TROUVE("[";A1)-1));"";
STXT(A1;TROUVE("[";A1)+1;NBCAR(A1)-TROUVE("[";A1)-1))
Au prochain NBCAR

Edit : bonjour Pierrot, Pas vu

A+
kjin
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Récupérer des Caractères entre crochet

Re,

pour gérer les doubles crochets, à la condition qu'il n'y ait qu'un espace dans la cellule :

Code:
Function crochet2(c As Range)
crochet2 = Mid(Split(c.Value, " ")(1), 2, Len(Split(c.Value, " ")(1)) - 2)
End Function

@+
 

Ang3l666

XLDnaute Nouveau
Re : Récupérer des Caractères entre crochet

Bonjour !

Je sais que ce post est assez vieux mais je tente quand même !
Voila, j'ai moi aussi des valeurs entre crochets que je dois convertir en valeurs sans crochet, et la les formules précédentes fonctionnent parfaitement.
Mais voila, j'aimerai que la formule me trouve toutes les valeurs entre crochet présente dans la table (A1:E60 par exemple), et qu'a chaque fois qu'elle en trouve une elle me la range dans A1, puis A2, puis A3... dans une nouvelle table.
Est ce que cela est possible??

Merci pour votre aide !!!
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 336
Membres
103 190
dernier inscrit
silverwolf854