Bonjour à tous
Après moulte recherche et écriture de divers fonctions donnant des résultats mitigés, je n'arrive pas à trouver LA bonne solution à mon problème.
Alors ayant très "bobo tête" je men remet à vos esprits d'expert.
PS:
J'ai essayé avec Split, Instr, InStrRev etc Parfois en utilisant Like. Mais … Boff ce n'est pas vraiment cela.
Voici le problème.
Exemple de formule à traiter:
"=FOO(((A),(B),"C"),"D,E,F",((G),H))"
Pour simplifié j'ai mis des lettres à la place des valeurs
A, B , C, E, F G etc = sont des "valeurs paramètres".
Exemple de ce peut contenir A, B etc.
A = A1:B2, B5, B7, C8
B = D5:E12
C = 9850
D = Banque, Caisse, Référence -> par exemple.
Ce qui donnerait en développant:
"(((A1:B2, B5, B7, C8),(D5:E12),"9850"),"Banque, Caisse, Référence",((G),H))"
OBJECTIF: Extraire chaque paramètre en gardant sa cohérence.
Dans la formule ci-dessus les paramètres complets a extraire serait :
n°1 :
((A),(B),"C")
N°2 :
"D,E,F"
N°3 :
((G),H))
MAIS:
Il peut y avoir imbrication de fonction "Foo()". Comme ceci:
"=FOO1(((A),(B),"C"),"D,E,F",(FOO2((a),(b),"c"),H))"
… Sinon ce ne serait pas drôle. Ici,
FOO2 = le paramètre
G qui sera analysé à part.
Pour vous aider à m'aider
, si j'utilise Split sur la virgule "," ou sur la "(" ou la ")" sans compter le paramètre délimité par " " " -Chr(34)- , j'obtiens un tableau qui ne correspond à rien sans des traitement supplémentaires.
Si quelqu'un a une idée (ou plusieurs) j'en serai très heureux.
Désolé pour les mots de tête. J'aime bien partager
Par avance merci à vous.
PS:
Bien sûr ici dans l'exemple on peut commencer par simplifier la 1ere et la dernière parenthèse. Mais, même si rare, ce n'est pas toujours le cas.