Bonjour à Tous,
j'ai des problèmes pour transférer des données d'une variable VBA vers le classeur :
si le tableau n'est pas filtré : pas de soucis
si le tableau est filtré : des données aberrantes insérées !!!
Voici une macro qui présente le problème / Bug d'Excel ?
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
| Sub Macro1()
'\création d'un tableau temporaire pour l'expérience
Columns("A:I").Delete Shift:=xlToLeft
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$I$50000"), , xlNo).Name = "TableauTEST"
[TableauTEST].ListObject.TableStyle = "TableStyleLight9"
For i = 1 To [TableauTEST].ListObject.DataBodyRange.Rows.Count
[TableauTEST].ListObject.DataBodyRange.Cells(i, 1) = Int(Rnd * 10) + 1
Next
'fait des calculs sur une variable tableau (liée au tableau créé)
Dim t(): t() = [TableauTEST].ListObject.DataBodyRange.Columns(1).Value
For i = 1 To [TableauTEST].ListObject.DataBodyRange.Rows.Count
t(i, 1) = t(i, 1) + 1
Next
'essai d'insertion du résultat sous différentes formulations vba
[TableauTEST].ListObject.DataBodyRange.Columns(2) = t
[TableauTEST].ListObject.DataBodyRange.Columns(3).Value = t
Range([TableauTEST].ListObject.DataBodyRange.Columns(4).Address).Value = t
For i = 1 To [TableauTEST].ListObject.DataBodyRange.Rows.Count '!!! Durée de réalisation
[TableauTEST].ListObject.DataBodyRange.Cells(i, 5).Value = t(i, 1)
Next
'FILTRE DU TABLEAU :
[TableauTEST].ListObject.Range.AutoFilter Field:=1, Criteria1:=1
'RE-essai d'insertion du résultat sous différentes formulations vba
'\\\ Les 3 lignes suivantes n'insèrent pas les bonnes données !!!!
[TableauTEST].ListObject.DataBodyRange.Columns(6) = t
[TableauTEST].ListObject.DataBodyRange.Columns(7).Value = t
Range([TableauTEST].ListObject.DataBodyRange.Columns(8).Address).Value = t
'celle-ci dessous fonctionne mais !!! Durée de réalisation
For i = 1 To [TableauTEST].ListObject.DataBodyRange.Rows.Count '!!! Durée de réalisation
[TableauTEST].ListObject.DataBodyRange.Cells(i, 9).Value = t(i, 1)
Next
'supprimer les filtres
[TableauTEST].ListObject.Range.AutoFilter Field:=1
'les colonnes 6/7/8 sont Aberrantes !!!!!!!!!
End Sub |
merci de votre aide pour résoudre ce problème
Partager