Bonjour,
Je suis en train de préparer un recordset pour l'exportation vers une feuille excel précise.
Dans un champ donné de mon recordset, j'ai (par exemple) les 10 premiers enregistrements null, suivis d'une série de 50 enregistrements non null, suivis de 60 enregistrements null.
Je souhaiterai garder la valeur du 11ème enregistrement, mettre à null les valeurs des enregistrements 12 à 59, garder la valeur du 60ème enregistrement.
J'ai essayé avec les bookmark (pour me repositionner sur les données à conserver et "nullifier" le reste) mais je n'arrive pas à maîtriser cela.
Pour l'instant, j'ai écrit ceci où je défini deux "compteurs" (Positionfirst et PositionLast):
Ca fonctionne mais ce n'est pas très élégant je trouve... Si vous avez des suggestions pour améliorer le code, je suis preneur. Surtout qu'en final, je vais devoir faire la même chose pour plus de 20 champs contenant chacun plus de 500 enregistrements non null disposés de la même façon (mais à des "niveaux différents") que l'exemple que je vous donne.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 Positionfirst = 0 Positionlast = 0 'on cherche la première et la dernière valeur non nulle du champ Do While Not rec.EOF If IsNull(rec.Fields(j)) Then Positionfirst = Positionfirst + 1 If Positionlast <> 0 Then Exit Do 'la fois suivante où la donnée sera nulle c'est quand on a dépassé la date d'émergence End If Positionlast = Positionlast + 1 If IsNull(rec.Fields(j)) And Positionfirst <> 0 Then Positionlast = Positionlast - 1 End If rec.MoveNext Loop 'on se repositionne au début du recordset rec.MoveFirst i = 0 'on va effacer les valeurs non utiles entre cette première et la dernière valeur non nulle Do While Not rec.EOF i = i + 1 If i = Positionfirst Then rec.Edit rec.Fields(j).value = 35 rec.Update End If If i > Positionfirst And i < Positionlast Then rec.Edit rec.Fields(j).value = Null rec.Update End If If i = Positionlast Then rec.Edit rec.Fields(j).value = 35 rec.Update End If rec.MoveNext Loop
Un grand merci d'avance
Partager