Bonjour,

Je lis un tableau en base de données et je dois repercuter les inofmrations entre 3 sheets.

WS1 contient tous les records
WS2 contient les records de type BUG
WS3 contient les records de type REQUEST


WS1 = WS2 union WS3 union (le reste)

J'ai une seule boucle qui va remplir systematiquement WS1 et qui remplira eventuellement soit WS2 et WS3:

Voila le code


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
 
  While Not rst.EOF
 
    ''On met à jour ALL
    For i = 0 To rst.Fields.Count - 1 Step 1
     Sheets("ALL").Cells(Row, i + 1).Value = rst(i).Value
    Next
 
    ''On MAJ BUG
    If (rst("Active/Inactive").Value = "Active" And rst("type").Value = "BUG") Then
        For i = 0 To rst.Fields.Count - 1 Step 1
            Sheets("ACTIVE BUG 2").Cells(RowBUG, i + 1).Value = rst(i).Value
            ''On met à jour avec les champs custo
            Sheets("ACTIVE BUG 2").Range("Q" & RowBUG & ":" & "T" & RowBUG).Value = Sheets("ALL").Range("Q" & Row & ":" & "T" & Row).Value
        Next
        RowBUG = RowBUG + 1
    End If
 
    ''On MAJ ENH
    If (rst("Active/Inactive").Value = "Active" And rst("type").Value = "ENH") Then
        For i = 0 To rst.Fields.Count - 1 Step 1
            Sheets("ACTIVE ENH 2").Cells(RowENH, i + 1).Value = rst(i).Value
            ''On met à jour avec les champs custo
            Sheets("ACTIVE ENH 2").Range("Q" & RowENH & ":" & "T" & RowENH).Value = Sheets("ALL").Range("Q" & Row & ":" & "T" & Row).Value
        Next
        RowENH = RowENH + 1
    End If
 
    Row = Row + 1
    rst.MoveNext
  Wend

Le problème c'est la lenteur : le fait de basculer entre WS1 et WS2 ainsi qu'entre WS1 et WS3 bouffe beaucoup de temps.

Comment faire pour enregistrer les resultats dans une WS temporaire sans avoir à basculer sans cesse. Une fois la boucle fini , il me suffirait d'envaoyer vers WS2 et WS3.


Comment faire?