Importer plusieurs tableaux

Calvus

XLDnaute Barbatruc
Bonjour le Forum,

Je voulais tenter de me débrouiller pour trouver la solution à mon problème, mais comme d'habitude, les solutions entrevues emmènent vers d'autres questions...
Cf ce sujet.

Mon souhait est le suivant :

J'ai une feuille Origine sur laquelle je veux importer des données d'autres feuilles. Je sais le faire pour un onglet.

Ce que je ne parviens pas à faire, c'est d'importer la 1ère feuille, puis la seconde à la suite, puis une 3ème, etc..

La feuille de destination est Origine.
La copie doit se faire dans les cellules C20:C53, puis C183:C116, etc...
Les cellules concernées sont colorées en bleu dans mon exemple.
Est concernée la colonne G pour les mêmes lignes.

L'onglet à importer se trouve en O40 (liste déroulante).

Les cellules à copier sont dans les feuilles Feuil2, Feuil3, Feuil4
La structure est la même, les cellules à copier sont donc les mêmes. C20:C53, puis C183:C116, etc...

Mais, on ne doit copier que les lignes non vides, et remplir les vides de la feuille Origine, à la suite, et en respectant la structure de la feuille, à savoir qu'il faut omettre les lignes 54 à 82, 117 à 145, etc..

La macro en feuille Origine fonctionne, mais pour un seul onglet.

J'ai inscrit manuellement le résultat souhaité dans la feuille Exemple Voulu.

Dernière chose, j'imagine que l'importation doit se faire en plusieurs étapes, car en réalité mon fichier ouvre d'autres classeurs pour l'importation des données.

Merci de votre aide.
 

Pièces jointes

  • Import plusieurs tableaux.xlsm
    86.1 KB · Affichages: 68

thebenoit59

XLDnaute Accro
Re : Importer plusieurs tableaux

Bonjour Calvus.

Tu m'as posé une colle sur ce coup ...
J'espère que la modification du code, comme ci-dessous, correspondra à tes attentes.

Code:
Sub Extraction()
Dim f1 As Worksheet, f2 As Worksheet
Dim t, t1, t2, t3, t4

'On définit l'onglet à importer
Set f1 = Sheets("Origine")
Set f2 = Sheets(f1.Range("o40").Value)

'Tableau existant
With f1
    t1 = .[C20:G53].Value
    t2 = .[C83:G116].Value
    t3 = .[C146:G179].Value
    t4 = .[C209:G242].Value
    t5 = .[C272:G305].Value
    t6 = .[C335:G368].Value
    'Fusion des tableaux
    temp = MergeArray2DVert(t1, t2)
    temp = MergeArray2DVert(temp, t3)
    temp = MergeArray2DVert(temp, t4)
    temp = MergeArray2DVert(temp, t5)
    temp = MergeArray2DVert(temp, t6)
    temp = Application.Index(temp, Evaluate("Row(" & 1 & ":" & UBound(temp) & ")"), Array(1, 5))
End With
    
'Tableau à importer
'On enregistre les champs dans un tableau
With f2
    t1 = MergeArray2DVert(.[C20:E53].Value, .[C83:E116].Value)
    t1 = Application.Index(t1, Evaluate("Row(" & 1 & ":" & UBound(t1) & ")"), Array(1, 3))
End With

'On fusionne le tableau originel et le tableau à importer
    temp = MergeArray2DVert(temp, t1)
    temp = FiltreArraySupLignes(temp, 1, "")
    temp = Application.Index(temp, Evaluate("Row(" & 1 & ":" & UBound(temp) & ")"), Array(1, 2))
'End If

'On remplit la feuille origine
With f1
    j = 1
    k = 33
    l = 0
    If IsError(temp(2, 1)) Then
    .Cells(20, "C").Value = temp(1, 1)
    .Cells(20, "G").Value = temp(1, 2)
    Exit Sub
    End If
    For i = 20 To 335 Step 63
        If UBound(temp) - l < k Then k = UBound(temp) - l - 1
        If UBound(temp) = l Then Exit For
        .Cells(i, "C").Resize(k + 1).Value = Application.Index(temp, Evaluate("Row(" & j & ":" & j + k & ")"), 1)
        .Cells(i, "G").Resize(k + 1).Value = Application.Index(temp, Evaluate("Row(" & j & ":" & j + k & ")"), 2)
    j = j + k + 1
    l = j - 1
    Next i
End With
End Sub
 

Calvus

XLDnaute Barbatruc
Re : Importer plusieurs tableaux

Bonjour Thebenoit, le forum,

Merci, ça a l'air d'aller correctement.
Je te dirai s'il y a autre chose. Et surtout quelques explications, car même si j'en comprends le principe, je n'arrive pas à voir exactement le fonctionnement du code.

Merci et bonne journée.
 

Lone-wolf

XLDnaute Barbatruc
Re : Importer plusieurs tableaux

Bonjour Calvus.

Tu m'as posé une colle sur ce coup ...

Attention avec lui thebenoit! Tu vas perdre les cheveux comme lui!! effraye.gif

Et j'aimerait savoir qu'elle marque de colle il a posé sur ton cou?? :confused: ;)
 

thebenoit59

XLDnaute Accro
Re : Importer plusieurs tableaux

Attention avec lui thebenoit! Tu vas perdre les cheveux comme lui!! Regarde la pièce jointe 367535

Et j'aimerait savoir qu'elle marque de colle il a posé sur ton cou?? :confused: ;)

Ah non, pas de pertes de cheveux ... A même pas 30 ans ça serait dommage :(

C'était de la colle polyuréthane je pense, mais avec un peu de WD40 c'est parti heureusement.
 

Discussions similaires

Statistiques des forums

Discussions
314 204
Messages
2 107 186
Membres
109 771
dernier inscrit
herve1979