Bonjour,
Je me refusais à publier encore une nouvelle demande mais je m'y vois obligé du fait de mon manque de connaissance (et pourtant j'ai essayé de m'en sortir seul). Voici donc mon problème :
Dans le fichier exemple joint, j'ai extrait une partie des données que je récupère d'un formulaire.
Vous constarez que les données sont stockées dans une même cellule avec 8 blocs de données séparés par des "[" et "]".
A l'intérieur de ces blocs, vous avez 5 données entre cotes (ou à "None" si pas de données) qui sont séparés par des virgules.
Le but final est de pouvoir extraire chaque donnée (donc 8 x 5 données pour chaque ligne) séparement et ainsi pouvoir filtrer par les dates (ou autres) par exemple.
J'ai tenté un script qui utilise des "arrays" remplis par l'intermédiaire de "InStr" imbriqués et de "Mid" mais les formules imbriquées à partir du 3ème blocs deviennent trop complexes à gérer :
Je me tourne donc vers vous pour avoir une solution plus simple pour extraire ces données.
Merci d'avance.
Je me refusais à publier encore une nouvelle demande mais je m'y vois obligé du fait de mon manque de connaissance (et pourtant j'ai essayé de m'en sortir seul). Voici donc mon problème :
Dans le fichier exemple joint, j'ai extrait une partie des données que je récupère d'un formulaire.
Vous constarez que les données sont stockées dans une même cellule avec 8 blocs de données séparés par des "[" et "]".
A l'intérieur de ces blocs, vous avez 5 données entre cotes (ou à "None" si pas de données) qui sont séparés par des virgules.
Le but final est de pouvoir extraire chaque donnée (donc 8 x 5 données pour chaque ligne) séparement et ainsi pouvoir filtrer par les dates (ou autres) par exemple.
J'ai tenté un script qui utilise des "arrays" remplis par l'intermédiaire de "InStr" imbriqués et de "Mid" mais les formules imbriquées à partir du 3ème blocs deviennent trop complexes à gérer :
Code:
Option Base 1
Dim tblo1a() As Variant
Sub test()
nblig1 = Application.CountA(Range("A1:A65536"))
ReDim tblo1a(nblig1, 8)
For i = 2 To nblig1
tblo1a(i, 1) = Mid(Cells(i, 16), (InStr(Cells(i, 16), "[") + 2), (InStr(Cells(i, 16), "]") - 3))
tblo1a(i, 2) = Mid(Cells(i, 16), _
(InStr((InStr(Cells(i, 16), "]")), Cells(i, 16), "[")) + 1, _
(InStr( _
(InStr( _
(InStr(Cells(i, 16), "]")) _
, Cells(i, 16), "[" _
)), _
Cells(i, 16), "]" _
)) _
- _
(InStr(Cells(i, 16), "]") + 4))
tblo1a(i, 3) = Mid(Cells(i, 16), _
(InStr((InStr((InStr((InStr(Cells(i, 16), "]")), Cells(i, 16), "[")), Cells(i, 16), "]")), Cells(i, 16), "[")) + 1, _
15)
Next i
End Sub
Je me tourne donc vers vous pour avoir une solution plus simple pour extraire ces données.
Merci d'avance.
Pièces jointes
Dernière édition: