Variable Tableau : récupérer une plage multiple

clf

XLDnaute Nouveau
Bonjour,

J'essaye de charger une variable tableau à partir d'une plage multiple mais cela ne me prend que la 1ère plage.
Le code :

der = Range("a1000000").End(xlUp).Row - 3
Application.Union(Range("a4:b" & der + 3), Range("f4:f" & der + 3)).Copy
plage = Application.Union(Range("a4:a" & der + 3), Range("e4:e" & der + 3)).Address
ReDim tablox(der, 3)
tablox = Range(plage).Value

La copie avec Union fonctionne, mais le chargement du tableau ne prend que la colonne A.

Que manque t-il ? Est-ce possible de charger dans une variable tableau une plage multiple en une opération ?

Merci
 

Paf

XLDnaute Barbatruc
Re : Variable Tableau : récupérer une plage multiple

Re,

encore plus simple, si l'on a pas besoin d'un nombre de colonnes variable :

Code:
tablox = Application.Index(.Value, Evaluate("row(1:" & der & ")"), Array(c, a, b))

A+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Variable Tableau : récupérer une plage multiple

Bonjour,

-Il me semble qu'il existe une solution simple & rapide avec les tableaux emboités (0,1 sec pour 65.000 lignes et 3 colonnes)

-Les colonnes peuvent avoir des nombres d'items différents (Ubound(a(col)) donne le nombre d'items de la colonne)

Code:
Sub Essai1()
  Dim a(1 To 3)
  a(1) = [B1:B65000]
  a(2) = [C1:C65000]
  a(3) = [F1:F65000]
  lig = 2
  col = 3
  MsgBox a(col)(lig, 1)
End Sub

ou

Code:
Sub Essai()
  Dim a(1 To 3)
  a(1) = Application.Transpose([B1:B65000])
  a(2) = Application.Transpose([C1:C65000])
  a(3) = Application.Transpose([F1:F65000])
  lig = 2
  col = 3
  MsgBox a(col)(lig)
End Sub

Autre exemple:

Code:
Sub Essai3()
  Set Rng = Range("A1:A100,C1:C100,F1:F10,K1:K10")
  n = Rng.Areas.Count
  Dim a(): ReDim a(1 To n)
  For i = 1 To n
    a(i) = Rng.Areas(i).Value
  Next i
  lig = 2
  col = 4
  MsgBox a(col)(lig, 1)
End Sub

Code:
Sub essai4()
  c = Array(1, 3, 6, 11)
  n = UBound(c) + 1
  Dim a(): ReDim a(1 To n)
  For i = 1 To n
    a(i) = Cells(1, c(i - 1)).Resize(10).Value
  Next i
  lig = 2
  col = 4
  MsgBox a(col)(lig, 1)
End Sub
JB
 

Pièces jointes

  • ArrayEmboites.xls
    199 KB · Affichages: 52
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 976
dernier inscrit
kaizertv2001@gmailcom