Concatener deux matrices excel dans un tab memoire

  • Initiateur de la discussion sygtrygg
  • Date de début
S

sygtrygg

Guest
Bonjour,

J'ai dû diviser une matrice sur deux feuilles à cause de la limite de 256 colonnes sur une feuille.
Du coup j'aimerais savoir s'il existe une fonction qui permette de récupérer ces deux tableaux et de la reconstituer dans un tableau en mémoire.

Merci
 

Hervé

XLDnaute Barbatruc
Supporter XLD
Bonjour sygtrygg, re le forum

En imaginant tes données dans les feuilles 1 et 2, commencant dans la cellule A1 (pour le currentregion), cette macro va te créer un tableau final reprenant les deux feuilles.

on pourrait éviter les deux premiers tableaux (tablo1 et tablo2) et boucler sur les deux feuilles, mais comme tu parles de limite de 256 colonnes , j'ai supposé que tu avais beaucoup de données. Et passer par des tableaux variant est plus rapide.

Par contre il te faudra sans doute fort adapter ce code à ta présentation.

en espérant t'avoir aidé

Sub Bouton1_QuandClic()
Dim tablo1 As Variant
Dim tablo2 As Variant
Dim tablores() As String
Dim i As Integer, j As Integer

'création des 2 tableaux provisoires
tablo1 = Sheets('feuil1').Range('a1').CurrentRegion
tablo2 = Sheets('feuil2').Range('a1').CurrentRegion

'dimensionnement du tableau final
ReDim tablores(1 To UBound(tablo1, 1) + UBound(tablo2, 1), UBound(tablo1, 2) + UBound(tablo2, 2))

'renvoi du premier tableau dans le tableau de résultat
For i = 1 To UBound(tablo1, 1)
   
For j = 1 To UBound(tablo1, 2)
        tablores(i, j) = tablo1(i, j)
   
Next j
Next i

'renvoi du deuxième tableau dans le tableau de résultat à la suite du premier tableau (i + UBound(tablo1, 1))
For i = 1 To UBound(tablo2, 1)
   
For j = 1 To UBound(tablo2, 2)
        tablores(i + UBound(tablo1, 1), j) = tablo2(i, j)
   
Next j
Next i

'Sheets('feuil3').Range('a1').Resize(UBound(tablores, 1), UBound(tablores, 2)) = tablores
End Sub

salut
 
S

sygtrygg

Guest
Re:Concatener deux matrices excel dans un tab memo

Merci beaucoup je pense pouvoir m'en sortir avec ce code. Je ne connaissais pas la fonction UBound pour les limites des tableaux c'est bien pratique dans ce cas la.
J'espere que meme avec beaucoup de données les affectations d'un tableau à un autre seront rapide.

Encore merci
 

Hervé

XLDnaute Barbatruc
Supporter XLD
Re:Concatener deux matrices excel dans un tab memo

re

il existe aussi Lbound pour connaitre la limite inférieur d'un tableau;

Attention si tes tableaux dépassent les 32768 lignes passe les variables i et j en long

Je viens de faire un essai avec 2 matrices de 256 colonnes et 10000 lignes chacunes, le traitement se fait en 10 secondes environ;

salut
 

Discussions similaires

Statistiques des forums

Discussions
299 845
Messages
1 979 503
Membres
206 753
dernier inscrit
mounir311