Marko Ramius
Messages postés2Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention24 janvier 2007
-
24 janv. 2007 à 10:02
Marko Ramius
Messages postés2Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention24 janvier 2007
-
24 janv. 2007 à 11:09
Nom
,
Valeur,
----
toto
,
24
,
----
titi
,
57
,
----
titi
,
46
,
----
titi
,
53
,
----
tata
,
21
,
----
tata
,
7
J'ai la table ci-dessus (enfin elle compte plusieurs centaines d'enregistrements) et je dois mettre sur une seule et même ligne les valeurs possibles pour chaque nom, chaque valeur dans une colonne spécifique.
Comme ceci
toto 24
titi 57 46 53
tata 21 7
Le problème est qu'Access refuse le tableau croisé (trop de lignes/colonnes) et que je n'y connais rien en module qui semble pourtant être la seule solution possible.
Merci donc à ceux qui peuvent me donner une explication, un exemple...
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 24 janv. 2007 à 10:06
Salut,
Idée: Fais une premiere requête pour en resortir tout les nom => stocke les quelques part puis, pour chaque nom une seconde requete pour en resortir les valeur stock les dans une collection (indexe par nom)
A partir de la tu as donc stocke les nom et les valeurs ils ne te reste plus qu'a effacer ta table et à réinjecter les valeur de ligne.
Je sais ce n'est pas optimal du tout. Mais après tout c'est juste une idée.
cs_caramelmou
Messages postés56Date d'inscriptionjeudi 25 décembre 2003StatutMembreDernière intervention23 avril 20083 24 janv. 2007 à 10:51
Vite fait sous Access VBA
Sub TEST()
Dim CNN As Connection, rs As New Recordset, curName As String, maligne as string
' tu construit un fichier texte delimite sous la forme
' toto;1;34;55;23
' titi; 4;5;66;
Open "c:\test.txt" For Output As #1
Set CNN = CurrentProject.Connection
rs.Open "select * from matable ORDER BY nom", CNN, adOpenKeyset
Do Until rs.EOF
If curName = rs("nom") Then
maligne = maligne & ";" & rs("qt")
Else
Print #1, maligne
maligne = rs("nom") & ";" & rs("qt")
curName = rs("nom")
End If
rs.MoveNext
Loop
Print #1, maligne
rs.Close
Close #1
' tu reimporte tout dans une table test de ta base
DoCmd.TransferText acImportDelim, , "test", "c:\test.txt"
End Sub