Récupération de données entre crochets dans une tableau puis rangement

  • Initiateur de la discussion Initiateur de la discussion Ang3l666
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Ang3l666

XLDnaute Nouveau
Bonjour !

Voila, j'ai des valeurs entre crochets que je dois convertir en valeurs sans crochet donc voici la formule que j'utilise :

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

Mais voila, j'aimerai que la formule me trouve toutes les valeurs entre crochet présente dans la table (A1:E60 par exemple) et non juste dans une cellule, 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 l'on peut également rechercher toutes les valeurs entre crochets dans UNE cellule et les classer comme dit précédemment ?

Est ce que cela est possible??

Merci pour votre aide !!!
 
Re : Récupération de données entre crochets dans une tableau puis rangement

Bonjour,
le plus simple est de fournir un petit fichier présentant ton exemple avec le résultat attendu et quelques mots d'explications permettant de comprendre ta demande.
A+
 
Re : Récupération de données entre crochets dans une tableau puis rangement

Re,
pour l'instant, une possibilité avec 1 colonne intermédiaire.
Il y a surement possibilité de faire mieux, mais pas le temps pour l'instant.
A+
 

Pièces jointes

Re : Récupération de données entre crochets dans une tableau puis rangement

Bonsoir,

Une solution sans colonne intermédiaire, mais avec conservation des crochets :

Code:
=INDEX($A$1:$D$3;PETITE.VALEUR(SI(ESTNUM(GAUCHE(SUBSTITUE($A$1:$D$3;"[";""))*1);
ESTNUM(GAUCHE(SUBSTITUE($A$1:$D$3;"[";""))*1)*LIGNE($A$1:$A$3));LIGNES($1:1));
MOD(PETITE.VALEUR(SI(ESTNUM(GAUCHE(SUBSTITUE($A$1:$D$3;"[";""))*1);ESTNUM(
GAUCHE(SUBSTITUE($A$1:$D$3;"[";""))*1)*LIGNE($A$1:$A$3)+ESTNUM(GAUCHE(
SUBSTITUE($A$1:$D$3;"[";""))*1)*COLONNE($A$1:$D$1)/100);LIGNES($1:1));1)*100)

Formule matricielle à valider par CTRL + MAJ + ENTREE

à recopier vers le bas

Avec Excel 2007, en disposant de davantage de niveaux d'imbrication, on peut gérer la suppression des crochets.

Voir le fichier joint.

@+
 

Pièces jointes

Re : Récupération de données entre crochets dans une tableau puis rangement

Re,
ci-joint la formule de Tibo (bravo à toi Tibo😉) complétée afin de prendre en compte la suppression des crochets.
La formule est nommée afin de pouvoir être lue sur les versions antérieures à 2007.
A+
 

Pièces jointes

Re : Récupération de données entre crochets dans une tableau puis rangement

Wahoou!!
Que dire à part PARFAIT et MERCI beaucoup!!!!!
Je vais abuser de votre sympathie et de vos connaissances qui dépassent largement les miennes 😀 en vous demandant une dernière aide
J'ai fait un tableau d'exemple mais à vrai dire je sais pas si j'ai été assez explicite 😉


Encore merci!
 

Pièces jointes

Re : Récupération de données entre crochets dans une tableau puis rangement

Bonjour,

J'ai ouvert ton dernier fichier, et je dois avouer que je m'y perds.

Il faudrait que tu nous représentes ton fichier sous une forme simplifiée.

L'idéal serait de n'avoir que les éléments relatifs à ta question (en éliminant ceux relatifs aux questions précédentes). Il faudrait que les données des autres feuilles soient rassemblées sur la même feuille pour éviter les allers-retours entre les différentes feuilles.

A te (re)lire avec ce fichier simplifié.

@+
 
Re : Récupération de données entre crochets dans une tableau puis rangement

Re,
pour ta 1ère question en K7 :
=STXT(A7;CHERCHE("[";A7)+1;CHERCHE("]";A7)-CHERCHE("[";A7)-1)
Pour ta 2ème question c'est trop brouillon.
Redonne un exemple explicite sur une feuille vierge, cela nous permettra peut-être de mieux te comprendre.
A+
 
Re : Récupération de données entre crochets dans une tableau puis rangement

Bonjour à tous


Un début de piste avec Regexp
(JNP: j'attends un petit coup de pouce de ta part sur ce coup là 😉)

Code:
Function xcrochets(s As Range) As String
Dim m, mm, tmp$
With CreateObject("vbscript.regexp")
    .Global = True: .IgnoreCase = True: .Pattern = "\[[^[]*\]"
    Set mm = .Execute(s.Text)
    For Each m In mm
        tmp = tmp & "," & _
        Replace(Replace(m.Value, "[", ""), "]", "")
    Next m
End With
xcrochets = Mid(tmp, 2, 9 ^ 9)
End Function
Exemple: en B7, saisir =xcrochets(A7)

Et je dis comme mes petits camarades
Il faudrait un exemple plus explicite

Tes chaines de caractères sont dans une cellule comme en A7 ou pas ?
 
Re : Récupération de données entre crochets dans une tableau puis rangement

Bonjour à tous
Je trouve aussi le problème assez obscur. Ma réponse porte uniquement sur l'extraction des données entre crochets.
La fonction
Code:
[COLOR="DarkSlateGray"][B]Function XTRCT(ParamArray p())
Application.Volatile
Dim i&, j&, tf As Boolean, oCel As Range, r As Range, t$(), oColl As New Collection
   For j = 1 To UBound(p)
      Set r = p(j)
      For Each oCel In r.Cells
         t = Split(oCel, "[")
         On Error Resume Next
         For i = 0 To UBound(t)
            If t(i) Like "*]*" Then oColl.Add Item:=Split(t(i), "]")(0)
         Next i
         On Error GoTo 0
         tf = oColl.Count >= p(0)
         If tf Then Exit For
      Next oCel
      If tf Then Exit For
   Next j
   ReDim t(1 To p(0), 1 To 1)
   For i = 1 To Application.WorksheetFunction.Min(p(0), oColl.Count)
      t(i, 1) = oColl.Item(i)
   Next i
   XTRCT = t
End Function[/B][/COLOR]
permet d'extraire une matrice colonne contenant les valeurs entre crochets d'une plage quelconque de données.
Comme on ignore combien de données sont à extraire, elle utilise un paramètre indiquant le nombre maximum de données extraites.
Par exemple,
Code:
[COLOR="DarkSlateGray"][B]=XTRCT(12;A1:E3;A7;E7:D7)[/B][/COLOR]
cherche au plus 12 réponses dans la plage composée A1:E3;A7;C7:E7.
Pour afficher ces valeurs, il faut bien sûr sélectionner 12 cellules dans une colonne avant de saisir la formule, et valider matriciellement (Ctrl Maj Entrée).

Une variante : En remplaçant la ligne
Code:
[COLOR="DarkSlateGray"][B]            If t(i) Like "*]*" Then oColl.Add Item:=Split(t(i), "]")(0)[/B][/COLOR]
par
Code:
[COLOR="DarkSlateGray"][B]            If t(i) Like "*]*" Then oColl.Add Item:=Split(t(i), "]")(0), Key:=Split(t(i), "]")(0)[/B][/COLOR]
on élimine les éventuels doublons.​
ROGER2327
#3882


Jeudi 26 Gidouille 137 (Sainte Goulache, odalisque, SQ)
22 Messidor An CCXVIII
2010-W27-6T15:11:42Z
 
Dernière édition:
Re : Récupération de données entre crochets dans une tableau puis rangement

Bonjour,

Tout d'abord merci encore pour votre aide !
J'ai tenté de faire mieux et je pense que cette fois ci, c'est plus compréhensible ;-)
Voila le fameux !
 

Pièces jointes

Re : Récupération de données entre crochets dans une tableau puis rangement

Bonjour,

Merci encore pour votre aide.
J'ai tenté de simplifier mon fichier, et je pense que c'est maintenant plus compréhensible ;-)

Voici le fameux !
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
304
Retour