VBA réunir plusieurs tableaux à une dimension

AzoR

XLDnaute Occasionnel
Bonjour !

J'ai fait des tableaux sous VBA ( pas dans une feuille excel ) ainsi :

mesureP1 = Cells(6, 2).Value
mesureP2 = Cells(7, 2).Value
mesureP3 = Cells(8, 2).Value
mesureP4 = Cells(9, 2).Value
mesureP5 = Cells(10, 2).Value
mesureP6 = Cells(11, 2).Value
mesureP7 = Cells(12, 2).Value
mesureP8 = Cells(13, 2).Value

Dim tableTest1(), tableTest2(), tableTest3(), tableTest4(), tableTest5(), tableTest6(), tableTest7(), tableTest8() As String

tableTest1 = Split(mesureP1, ",")
tableTest2 = Split(mesureP2, ",")
tableTest3 = Split(mesureP3, ",")
tableTest4 = Split(mesureP4, ",")
tableTest5 = Split(mesureP5, ",")
tableTest6 = Split(mesureP6, ",")
tableTest7 = Split(mesureP7, ",")
tableTest8 = Split(mesureP8, ",")

mesureP1 par exemple est du type
+1.96080000E+01,+1.95620000E+01,+1.95700000E+01,+2.00660000E+01,+1.96080000E+01,+1.95620000E+01,+1.95700000E+01,+2.00660000E+01
Split me permet donc de couper à chaque virgule et me crée donc un tableau à une dimension et huit valeurs.


J'arrive donc avec 8 tableaux à une dimension ( qui ont chacun 8 valeurs ).
Le problème est que je voudrais "fusionner" ses tableaux pour n'en faire plus qu'un à deux dimension (dans l'idéal, avec huit colonne et huit ligne donc) OU en faire un seul à une dimension et je devrais ensuite le couper toutes les 8 valeurs.

Et tout ceci uniquement en VBA ! Pas dans une feuille excel. Grâce aux variables tableaux donc :)

Merci d'avance !
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : VBA réunir plusieurs tableaux à une dimension

Bonjour,

Tableau résultat 1D

Code:
Sub ConcatTableau()
  a = Array(1, 2, 3, 4)
  b = Array(5, 6, 7, 8, 9)
  c = Split(Join(a, ",") & "," & Join(b, ","), ",")
  [A1].Resize(UBound(c) + 1) = Application.Transpose(c)
End Sub

Tableau résultat 2D

EXemple avec 4 tableaux

Code:
Sub EssaiMergeArray()
  a = [A1].Resize(5, 1)     ' tableau a(5,1) 1
  b = [b1].Resize(5, 1)
  c = [c1].Resize(5, 1)
  d = [d1].Resize(5, 1)
  e = MergeArray(MergeArray(a, b), MergeArray(c, d))
  [m1].Resize(UBound(e), UBound(e, 2)) = e   ' tableau e(5,4)
End Sub

8 tableaux

Code:
  j = MergeArray(MergeArray(MergeArray(a, b), MergeArray(c, d)), MergeArray(MergeArray(e, f), MergeArray(g, h)))

Cf Les tableaux

JB
 

Pièces jointes

  • essai.xls
    36 KB · Affichages: 28
  • essai.xls
    36 KB · Affichages: 33
  • essai.xls
    36 KB · Affichages: 32
Dernière édition:

AzoR

XLDnaute Occasionnel
Re : VBA réunir plusieurs tableaux à une dimension

Merci mais je n'arrive pas à l'appliquer à mon programme. Enfaite je n'arrive pas à comprendre ce qui est entre crochet ? Qu'est-ce ?
et pourquoi avoir besoin d'utiliser les resize aussi ?

Du coup j'essaye de partir sur une méthode plus simple en attendant, tout mettre en ligne, et après avec une boucle for je dirai de laisser de 0 à 7 en colonne n°1, ensuite j'incrémente et je passe les 8 valeurs suivantes en colonne n°2 etc ...
J'ai toutes les valeurs en ligne pour l'instant avec Split puis Join .
 

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia