"En voilà une bonne !"

Bonjour à tous,

C'est exactement ce que je me suis dit en relevant le défi de devoir démonter une chaîne dans plus de 5000 lignes.
Je fais simple :

J'ai une table T dans laquelle j'indique le nom des auteurs (colonne "Auteur") à l'aide d'un formulaire F.

Pour diverses raisons, il est devenu nécessaire de distinguer chaque auteur : la chaîne "Auteur" est composée (~5000 fois) de caractères variables (puisque les auteurs varient). J'ai donc créé dans T 3 nouvelles entrées "AuteurA", "AuteurB", "AuteurC".

Je me retrouve à devoir faire le contraire d'une concaténation. Là, j'ai eu un petit moment de réflexion... dans le brouillard !

D'où l'idée de poser des lignes SQL dans mon formulaire F, en ayant créé des box-texte pour chaque phase de décaténation : j'ai au maximum trois auteurs, soit deux virgules dans la chaîne à démonter.
Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Deconcat()
    Aut0 = Replace(Auteur, ", ", ",")
    Aut1 = Left(Aut0, InStr(Aut0, ","))
    Aut2 = Replace(Aut1, ",", "")
'Auteur A par Aut2
    Aut3 = Replace(Aut0, Aut1, "")
    Aut4 = Left(Aut3, InStr(Aut3, ","))
    Aut5 = Replace(Aut4, ",", "")
'Auteur B par Aut5
    Aut6 = Replace(Aut3, Aut4, "")
'Auteur C par Aut6
End Sub
Maintenant, j'ai réglé cette Sub pour qu'elle s'active à chaque fois que j'entre une nouvelle chaîne (avec ou sans virgule) : à chaque création de ligne depuis F (ou correction manuelle de la case "Auteur", liée à celle de T), les cases "AuteurA" (Aut2) + "AuteurB" (Aut5) + "AuteurC" (Aut6) se remplissent automatiquement à partir de ce que je remplis dans ""Auteur".

Seulement, j'ai 5000 lignes et je suis en train de fondre à passer chaque ligne manuellement... Comment reporter ça par une requête auto svp ?
Suis-je en train de chercher en vain avec l'Update ?


Merci beaucoup,
Bk