Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[RESOLU] 2 tableaux en 1 seul

cathodique

XLDnaute Barbatruc
Bonjour la communauté,

Absent depuis un moment, je reviens solliciter votre aide.
Sur feuille a et b, 2 tableaux similaires récupérés dans 2 tableaux vba Ta et Tb.
Je voudrais dans un premier temps créer un 3eme tableau Tc, constitué de Ta en premier et Tb en dessous.
et dans un 2éme temps transférer ce dernier tableau Tc sur la feuille C.
Je ne suis pas très à l'aise avec les tableaux. Merci de votre aide.
ci-dessous mon début de code
VB:
Option Explicit

Sub joindre_tablos()
Dim Ta(), Tb(), Tc()
'plage dans tableau avec entete
Ta = Feuil1.Range("A1").CurrentRegion.Value

'mettre plage dans tableau sans entete
Tb = Feuil2.Range("A1").CurrentRegion.Offset(1).Resize(Feuil2.Range("A1").CurrentRegion.Rows.Count - 1, _
Feuil2.Range("A1").CurrentRegion.Columns.Count).Value

'créer Tc avec Ta en premier et Tb en second


'ensuite transférer sur la feuille C

Stop
End Sub
ps: en feuille c résultat escompté
 

kingfadhel

XLDnaute Impliqué
Bonjour, le forum, @cathodique

un essai avec 10 ligne dans chaque feuille
à toi de changer et modifier

VB:
Sub joindre_tablos()
  Set f = Sheets("Feuil1")
  Set f1 = Sheets("Feuil2")
  Set F2 = Sheets("Feuil3")
  a = Application.Transpose(f.[A1:A10]) ' tableau a(1000) 1D
  b = Application.Transpose(f1.[A2:A9]) ' tableau b(1000) 1D
  c = Split(Join(a, ",") & "," & Join(b, ","), ",")
  F2.[A1].Resize(UBound(c) + 1) = Application.Transpose(c)
End Sub
 

cathodique

XLDnaute Barbatruc
Bonjour kingfadhel,

Très gentil de ta part, mais je suis incapable d'adapté ton code à mon cas qui utilise des tableaux à 2 dimensions. Ton exemple concerne des tableaux 1 dimension.
Merci pour ta proposition.
Bonne journée!
 

kingfadhel

XLDnaute Impliqué
Re,
à toi @cathodique

VB:
Sub MergeTbl()
Set F = Sheets("Feuil1")
  Set F1 = Sheets("Feuil2")
  Set F2 = Sheets("Feuil3")
  a = F.[A1:B6].Value
  b = F1.[A2:B6].Value
  c = MergeArray(a, b)
  F2.[A1].Resize(UBound(c), UBound(c, 2)) = c
End Sub

Function MergeArray(a, b)
  maxtab1 = UBound(a)
  Dim Tbl(): ReDim Tbl(1 To UBound(a) + UBound(b), 1 To UBound(a, 2))
  For i = LBound(a) To UBound(a)
    For c = 1 To UBound(a, 2): Tbl(i, c) = a(i, c): Next
  Next i
  For i = 1 To UBound(b)
    For c = 1 To UBound(b, 2): Tbl(maxtab1 + i, c) = b(i, c): Next
  Next i
  MergeArray = Tbl
End Function
 

cathodique

XLDnaute Barbatruc
Merci beaucoup kingfadhel,

Désolé pour le fichier, je pensais l'avoir joint (je me fais vieux).
Entre-temps, j'ai trouvé le même code que celui que tu me proposes sur le site de Boisgontier.
Qui est ma première source de recherche. Mais sur ce coup tu as été plus efficace que moi dans la recherche (je dois me rendre à l’évidence, je me fais vraiment vieux).
En tout cas, chapeau pour ton efficacité. Un grand merci.

Très bonne journée à toutes et à tous.

ps: je joins quand même mon fichier.
 

Pièces jointes

  • 3eme Tablo_de 2 tablos.xlsm
    148.2 KB · Affichages: 9

cathodique

XLDnaute Barbatruc
Bisson Nicole bonjour,

Merci beaucoup, bien que je ne recherchais pas à consolider mes tableaux, je suis preneur de toutes propositions qui pourraient me servir tôt ou tard.

Alors stp, pourquoi avoir 2 colonnes 'lapin' sur la feuille 'Synthese', si on consolide les données?

Encore merci pour ton aide.
 

zebanx

XLDnaute Accro
Bonjour Cathodique et à tous

Peut-être parce que "Lapin" et "lapin" sont considérés comme 2 items différents.
C'est même bien de l'avoir fait pour bien comprendre que la casse est respectée.
Superbe code. C'est très bien d'avoir coupé la partie "consolide" du reste pour ne pas surcharger le premier code.
En pas à pas détaillé, l'affichage puis les tris permettent de bien comprendre son exécution.

Merci Nicole


++
zebanx

edit : re-merci pour ce complément
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…