[VBA] - Remplissage 1 array à partir de 2 array

Bonsoir,

Pour améliorer l'efficacité de mes macros, je passe par des variables tableau, tout fonctionne bien jusqu'au moment où je souhaite regrouper deux variables tableau dans une seule et même.

Le code est relativement long et fait référence à des tableau importés ; assez compliqué à soumettre sur le forum.

Pour le moment je vous transmets la partie du code qui cloche, en espérant que vous puissiez repérer ce qui cloche.

Si besoin, je créerai un document Excel spécifique en reprenant les parties du code qui font référence à des documents externes.

Mon erreur :

Si je colle le résultat dans une feuille, la première colonne est remplie, ainsi que la dernière ligne. Tout le reste est vide...

La macro :

- tA est la variable tableau qui doit contenir les deux autres variables tableau à savoir : Tabfin et tL.

> Je boucle sur tL en premier, pour récupérer les informations, puis sur Tabfin pour en faire de même, à la suite des précédentes données.
L'erreur vient-elle de Redim preserve ... 1 to a ? Où 1 to a engendre la suppression des données précédentes ? (mais il y a preserve..)

a = 1
ReDim tA(1 To (UBound(TabFin, 2) + UBound(tL)), 1 To a)
For i = 1 To UBound(tL)
    For a = 1 To UBound(tL, 2)
    ReDim Preserve tA(1 To (UBound(TabFin, 2) + UBound(tL)), 1 To a)
        tA(i, a) = tL(i, a)
    Next a
u = 0
Next i
For i = UBound(tL)+ 1 To UBound(tL) + UBound(TabFin, 2)
u = u + 1
    If u > UBound(TabFin, 2) Then Exit For
        For a = 1 To UBound(tL, 2)
        ReDim Preserve tA(1 To (UBound(TabFin, 2) + UBound(tL)), 1 To a)
            tA(i, a) = TabFin(a, u)
        Next a
Next i

Je vous remercie de votre attention

Bonnes fêtes !

A plus tard peut-être

Bonjour

Tu devrais joindre un fichier avec deux tableaux représentatifs en exemple et le résultat attendu sur un troisième.

Bye !

Bonsoir,

Si je ne me trompe pas, mes tableaux ont 23 dimensions chacun (minimum) je rajoute les colonnes différentes par la suite.

J'ai finalement trouvé d'où provenait le problème. Il s'agissait bien des "Redim" mal positionnés (dans la boucle a en l'occurrence).

Voici, au cas où, le code fonctionnel :

ReDim tA(1 To (UBound(TabFin, 2) + UBound(tL)), 1 To 1)
For i = 1 To UBound(tL)
    ReDim Preserve tA(1 To (UBound(TabFin, 2) + UBound(tL)), 1 To a)
    For a = 1 To UBound(tL, 2)
        tA(i, a) = tL(i, a)
    Next a
Next i
u = 0
.Cells(1, 1).Resize(UBound(tA), UBound(tA, 2)) = tA
For i = UBound(tL) + 1 To UBound(tL) + UBound(TabFin, 2)
u = u + 1
    If u > UBound(TabFin, 2) Then Exit For
    ReDim Preserve tA(1 To (UBound(TabFin, 2) + UBound(tL)), 1 To a)
        For a = 1 To UBound(tL, 2)
            tA(i, a) = TabFin(a, u)
        Next a
Next i

Je vous remercie de vos réponses !

Bonne soirée

Rechercher des sujets similaires à "vba remplissage array partir"