Bonjour,

En fait, sur le forum j'ai lu que l'on pouvait effectuer des calculs en utilisant des tableaux. J'ai fait une macro pour faire des calculs (plusieurs critères) en utilisant des filtreAuto, le résultat est satisfaisant.

Je voudrais donc m'initier aux tableaux (j'ai déjà téléchargé le tuto du forum, et d'autres que j'ai trouvé sur le net); c'est encore très flou dans mon esprit.

Alors, première chose comment transférer un tableau dans un autre. Voilà, je mets une plage dans un tableau et j'ai transféré certaines colonnes sur une autre feuille.
Je voudrais effectuer la même opération mais transférer ces colonnes dans un tableau.
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
43
44
45
46
47
48
Sub Tableau()
Dim bd As Object, Fg As Object
Dim DerLig As Long, DerCol As Byte
Dim Tb, RES()
Dim i As Long, j As Long
'''''''''''''''''''''''''''''''''''''''''''
Set bd = Sheets("BD")
DerLig = bd.Cells(Application.Rows.Count, 1).End(xlUp).Row
Set Fg = Sheets("intermediaire")
 
Application.EnableEvents = False
On Error Resume Next
 
'Dans la variable tableau Tb on récupère toutes les données de la feuille BD
With bd
    DerLig = .Cells(.Rows.Count, 1).End(xlUp).Row
    Tb = .Range("A2:R" & DerLig)
End With
 
With Fg
    'on parcours le tableau Tb
    For i = 1 To DerLig - 1
               'on incrémente le compteur j
            j = j + 1
            ReDim Preserve RES(1 To 10, 1 To j)
            RES(1, j) = Tb(i, 3)
            RES(2, j) = Tb(i, 4)
            RES(3, j) = Tb(i, 5)
            RES(4, j) = Tb(i, 6)
            RES(5, j) = Tb(i, 7)
            RES(6, j) = Tb(i, 8)
            RES(7, j) = Tb(i, 9)
            RES(8, j) = Tb(i, 10)
            RES(9, j) = Tb(i, 15)
            RES(10, j) = Tb(i, 18)
 
    Next i
    'on efface la plage de Calcul
    DerLig = Fg.Cells(.Rows.Count, 1).End(xlUp).Row
    If DerLig > 2 Then .Range("A2:R" & DerLig).Clear
    'on transfère le transposé de Res
    If j > 0 Then .Range("A2").Resize(j, 10) = Application.Transpose(RES)
 
End With
 
Application.ScreenUpdating = True
 
End Sub
En vous remerciant par avance.J'aurais pu reprendre la feuille "intermediaire" et la mettre dans un tableau, mais ce n'est pas le but rechercher, c'est plutôt apprendre à passer d'un tableau à un autre.