Bonjour à tous,
J'ai un petit soucis (si si ^^) sous access 2000.
J'ai une application qui permet d'extraire des données avec la méthode outputTo.
Ca, ca marche niquel.
Maintenant, j'ai une demande d'évolution afin de permettre de remplir +255 caracteres sur les champs, et surtout de pouvoir l'exporter ce champ texte (donc passer d'un champ texte simple à un mémo).
J'ai cherché un peu partout, sous access 2000, c'est pas possible directement (apparemment parce que c'est calqué sur un modèle d'export d'access 95 qui ne permettait pas cela)
J'ai donc trouvé une parade sur le site de microsoft qui consiste à recomposer le mémo sur la feuille excel
Si je parcours ma table, et que j'exporte bêtement, ca marche niquel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 texte = rec.Fields("DESCRIPTIF") 'on le met dans les cellules correspondantes xlSheet.Cells(I, 27) = Mid([texte], 1, 250) xlSheet.Cells(I, 28) = Mid([texte], 251, 250) xlSheet.Cells(I, 29) = Mid([texte], 501, 250) 'on le reconstitue xlSheet.Cells(I, 2) = xlSheet.Cells(I, 27) & xlSheet.Cells(I, 28) & xlSheet.Cells(I, 29)
Maintenant, lorsque je veux comparer un champ de ma table avec un champ d'une feuille excel (sur laquelle j'exporte) pour avoir le bon descriptif à la bonne ligne,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 I = 3 Do While Not rec.EOF For J = 0 To rec.Fields.Count - 1 If rec.Fields(J).name = "DESCRIPTIF" Then If (Not IsNull(rec.Fields(J))) Then lng = Len(rec.Fields(J)) If (lng > 100) Then texte = rec.Fields(J) xlSheet.Cells(I, 27) = Mid([texte], 1, 250) xlSheet.Cells(I, 28) = Mid([texte], 251, 250) xlSheet.Cells(I, 29) = Mid([texte], 501, 250) xlSheet.Cells(I, 2) = xlSheet.Cells(I, 27) & xlSheet.Cells(I, 28) & xlSheet.Cells(I, 29) End If End If End If Next J I = I + 1 If (I > 5) Then Exit Do End If rec.MoveNext Loop
ca ne marche plus...il ne récupère plus après 255 caractères.
Voilà le code correspondant (donc j'ai exporté toutes mes lignes avec outputTo, et ensuite je parcours la colonne Id_document pour récupérer les mémos de + 255 caracteres) :
Qqun aurait une idée sur le pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 I = 3 'on parcourt la colonne B (ID_DOCUMENT), en commencant à la 3e ligne 'tant que la colonne n'a pas de valeur nulle While Not xlSheet.Range("B" & I & "").Value = "" 'on recupere la valeur de ID_DOCUMENT id = xlSheet.Range("B" & I).Value 'on ouvre le recordset Set rec = CurrentDb.OpenRecordset("qryGet_Rapport") tant qu'il y a des lignes dans le recordset Do While Not rec.EOF si l'id dans le doc et l'id du recordset correspondent (on a la bonne ligne) If (rec.Fields("ID_DOCUMENT").Value = id) Then 'on recupere le mémo texte = rec.Fields("DESCRIPTIF") 'on le met dans les cellules correspondantes xlSheet.Cells(I, 27) = Mid([texte], 1, 250) xlSheet.Cells(I, 28) = Mid([texte], 251, 250) xlSheet.Cells(I, 29) = Mid([texte], 501, 250) 'on le reconstitue xlSheet.Cells(I, 2) = xlSheet.Cells(I, 27) & xlSheet.Cells(I, 28) & xlSheet.Cells(I, 29) End If rec.MoveNext Loop rec.Close I = I + 1 Wend
Partager