VBA : Alimenter une variable tableau à partir de 2 autres variables tableau

Fred0o

XLDnaute Barbatruc
Bonjour à tous,

Je cherche un moyen rapide d'alimenter une variable tableau (tb3) à partir de 2 autres variables tableau (tb1 et tb2).
Bien entendu, je souhaite faire cela sans passer par une boucle (ça, je sais faire) pour y gagner en temps d'exécution.

Dans le code suivant, cela s'applique à l'avant dernière ligne
VB:
tb3 = Union(tb1, tb2)
qui ne fonctionne pas en l'état :
VB:
Private Sub CommandButton1_Click()
    Dim tb1, tb2, tb3
    tb1 = Range("A1:B" & [A100].End(xlUp).Row)
    tb2 = Range("E1:F" & [E100].End(xlUp).Row)
    tb3 = Union(tb1, tb2)
    Range("I1:J" & UBound(tb3)) = tb3
End Sub

Merci, A+
 

Pièces jointes

  • Fred0o_V1.xlsm
    18.9 KB · Affichages: 75
  • Fred0o_V1.xlsm
    18.9 KB · Affichages: 68
  • Fred0o_V1.xlsm
    18.9 KB · Affichages: 76

pierrejean

XLDnaute Barbatruc
Re : VBA : Alimenter une variable tableau à partir de 2 autres variables tableau

Bonjour Fred0o

je ne repond certes pas a la question mais le resultat est celui esperé
 

Pièces jointes

  • Fred0o_V1.xlsm
    18.9 KB · Affichages: 74
  • Fred0o_V1.xlsm
    18.9 KB · Affichages: 68
  • Fred0o_V1.xlsm
    18.9 KB · Affichages: 59

Fred0o

XLDnaute Barbatruc
Re : VBA : Alimenter une variable tableau à partir de 2 autres variables tableau

Bonjour PierreJean, Gélinotte.

Merci pour vos réponses.

@PierreJean : J'ai testé le fichier que tu m'as posté mais je ne vois pas de différence avec celui que j'ai joint dans mon post initial.

@Gélinotte : Merci pour ce lien que j'avais loupé (j'ai pourtant cherché avant de poster). Je l'ai adapté à mon besoin et cela fonctionne très bien.

Je mets le résultat en pièce jointe.

A+
 

Pièces jointes

  • Fred0o_V1.xlsm
    21.3 KB · Affichages: 75
  • Fred0o_V1.xlsm
    21.3 KB · Affichages: 64
  • Fred0o_V1.xlsm
    21.3 KB · Affichages: 70

Papou-net

XLDnaute Barbatruc
Re : VBA : Alimenter une variable tableau à partir de 2 autres variables tableau

Bonjour Fred0o, pierrejean, Gelinotte, le Forum,

Une solution sans boucle (elle vaut ce qu'elle vaut) :

Code:
Private Sub CommandButton1_Click()
    Dim tb1 As Range, tb2 As Range
    Set tb1 = Range("A1:B" & [A100].End(xlUp).Row)
    Set tb2 = Range("E1:F" & [E100].End(xlUp).Row)
    Range("I1:J" & tb1.Rows.Count).Value = tb1.Value
    Range("I" & tb1.Rows.Count + 1 & ":J" & tb1.Rows.Count + tb2.Rows.Count).Value = tb2.Value
End Sub
Quant à savoir si c'est plus rapide : Je n'affirme rien !

Bon dimanche.

Cordialement.
 

Fred0o

XLDnaute Barbatruc
Re : VBA : Alimenter une variable tableau à partir de 2 autres variables tableau

Re-bonsoir à tous,

Merci pour toute ces solutions. Après avoir intégré une solution avec TRANSPOSE dans mon projet, je me suis rendu compte que cela ne fonctionnait pas. En effet, je ne sais pas pourquoi mais la fonction TRANSPOSE transforme les nombres en texte. De ce fait, mon tableau final (cumul du tableau 1 et du tableau 2) n'est plus exploitable.

Pour cette raison, je suis revenu à la solution que je voulais éviter, c'est à dire avec boucle. Un comparatif dnas le fichier joint permet de voir qu'il y peu de différence au niveau du temps de traitement.

Je voulais aussi préciser que pour des calculs intermédiaires je préfère passer par des tableaux VBA que de traiter directement sur les plages.

Encore merci pour vos propositions que je garde au chaud.

A+, Fred
 

Pièces jointes

  • Fred0o_V2.xlsm
    510.4 KB · Affichages: 61
  • Fred0o_V2.xlsm
    510.4 KB · Affichages: 62
  • Fred0o_V2.xlsm
    510.4 KB · Affichages: 69

pierrejean

XLDnaute Barbatruc
Re : VBA : Alimenter une variable tableau à partir de 2 autres variables tableau

Re

Un petit essai de ma solution
Mais ce n'est pas le plus important !!!!
J'ai ajouté a la sub boucles l'effacemant prealable comme je l'ai fait pour ma macro copie
Teste en jetant un oeil sur la cellule T3
 

Pièces jointes

  • Fred0o_V2.xlsm
    497 KB · Affichages: 67
  • Fred0o_V2.xlsm
    497 KB · Affichages: 76
  • Fred0o_V2.xlsm
    497 KB · Affichages: 71

laurent950

XLDnaute Barbatruc
Re : VBA : Alimenter une variable tableau à partir de 2 autres variables tableau

Bonsoir,

2 essaies le premier avec une sélection Union l'objet range ne géré pas l'union pour
L’assemblage des tableaux

VB:
Option Explicit
Private Sub CommandButton1_Click()
    ' Juste pour selection de zone
    Dim tb1 As Range
    Dim tb2 As Range
    Dim tb3 As Range
    Set tb1 = Range("A1:B" & [A100].End(xlUp).Row)
    Set tb2 = Range("E1:F" & [E100].End(xlUp).Row)
    Set tb3 = Union(tb1, tb2) ' successS
    tb3.Select                ' successS
End Sub

En deux pour l'assemblage j'ai optée pour le polymorphisme POO

VB:
Private Sub polymorphisme()
 ' Methode polymorphisme
 Dim tb1 As Range, tb2 As Range, tb3() As Variant
 Set tb1 = Range("A1:B" & [A100].End(xlUp).Row)
 Set tb2 = Range("E1:F" & [E100].End(xlUp).Row)
 ReDim tb3(1 To 2)
 tb3(1) = tb1
 Cells(65536, 9).End(xlUp).Rows.Resize(UBound(tb3(1), 1), UBound(tb3(1), 2)) = tb3(1)
 tb3(2) = tb2
 Cells(tb1.Rows.Count + 1, 9).Resize(UBound(tb3(2), 1), UBound(tb3(2), 2)) = tb3(2)
 End Sub

Laurent
 

Pièces jointes

  • Fred0o_V1_polymorphisme-POO.xlsm
    18.5 KB · Affichages: 54
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 911
Messages
2 093 509
Membres
105 745
dernier inscrit
gilou7025