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

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 !!!
 

david84

XLDnaute Barbatruc
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+
 

Ang3l666

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

Voilà, c'est vrai que ça sera plus parlant!
En tout cas merci pour l'aide!
 

Pièces jointes

  • exemple.xls
    18 KB · Affichages: 139
  • exemple.xls
    18 KB · Affichages: 148
  • exemple.xls
    18 KB · Affichages: 142

david84

XLDnaute Barbatruc
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

  • exemple_Ang.xls
    27 KB · Affichages: 158
  • exemple_Ang.xls
    27 KB · Affichages: 169
  • exemple_Ang.xls
    27 KB · Affichages: 163

Habitude

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

En vba
Valide par Ligne ET par colonne

Ca t'évite de faire une conversion de données
 

Pièces jointes

  • exemple(1).xls
    42 KB · Affichages: 120
  • exemple(1).xls
    42 KB · Affichages: 140
  • exemple(1).xls
    42 KB · Affichages: 124

Tibo

XLDnaute Barbatruc
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

  • Ang3l666.zip
    4.4 KB · Affichages: 67

david84

XLDnaute Barbatruc
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

  • exemple_Ang.xls
    22.5 KB · Affichages: 127
  • exemple_Ang.xls
    22.5 KB · Affichages: 140
  • exemple_Ang.xls
    22.5 KB · Affichages: 135

Ang3l666

XLDnaute Nouveau
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 :D 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

  • exemple_Ang.xls
    26 KB · Affichages: 117
  • exemple_Ang.xls
    26 KB · Affichages: 118
  • exemple_Ang.xls
    26 KB · Affichages: 104

Tibo

XLDnaute Barbatruc
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é.

@+
 

david84

XLDnaute Barbatruc
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+
 

Staple1600

XLDnaute Barbatruc
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 ?
 

ROGER2327

XLDnaute Barbatruc
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:

Ang3l666

XLDnaute Nouveau
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

  • exemple ang.xls
    25 KB · Affichages: 99
  • exemple ang.xls
    25 KB · Affichages: 87
  • exemple ang.xls
    25 KB · Affichages: 93

Ang3l666

XLDnaute Nouveau
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

  • exemple ang.xls
    25 KB · Affichages: 100
  • exemple ang.xls
    25 KB · Affichages: 106
  • exemple ang.xls
    25 KB · Affichages: 109

Discussions similaires

Statistiques des forums

Discussions
312 504
Messages
2 089 090
Membres
104 027
dernier inscrit
Luc ECODIS