"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 :
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".
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
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









Répondre avec citation
Partager