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

XL 2013 Compilation infos de différents fichiers

erics83

XLDnaute Impliqué
Bonjour,

J'ai 10 fichiers qui ont une structure commune de base (Région, Département, année, Mesure, résultat). Mais chaque fichier a des colonnes complémentaires que j'aimerai compiler pour avoir ensuite 1 seul fichier sur lequel je pourrais faire des TCD plus tard. Chaque fichier a au minimum 20000 lignes, et le nombre de colonnes complémentaires oscille entre 2 à 10 colonnes.
Le principe est d'ouvrir chaque fichier, de récupérer le nombre de ligne et de colonne et enregistrer sous forme de Tbl pour ensuite les compiler. Mais.....ensuite, je ne sais pas et/ou vois pas comment faire pour compiler....càd ajouter au fur et à mesure les colonne et inscrire les données.....

Pour faire simple, j'ai fait un classeur test, et mis les fichiers en "Feuil" (car j'adapterai le principe de boucle : qu'on ouvre un fichier ou une feuille, c'est idem...), avec 1 seule ligne de donnée, pour faire simple...
Là, c'est le résultat que j'aimerai obtenir. Les couleurs jaune, bleu, orange représentent les colonnes complémentaires...et la couleur grise, les champs communs à chaque fichier.



Merci pour votre aide,
Eric
 

Pièces jointes

  • ClasseurTest.xlsx
    15.1 KB · Affichages: 5
Dernière édition:

erics83

XLDnaute Impliqué
Bonjour Oneida,

Peu importe l'ordre d'ouverture, la boucle se fera sur l'ensemble des fichiers contenus dans le dossier, et comme je disais, ils ont tous la même structure de base (les 4 premières colonnes) et la colonne "résultat" qui elle, est décalée en fonction des colonnes complémentaires. L'essentiel est que dans la compilation, on retrouve bien les 4 premières colonnes, et que la colonne "résultat" soit la dernière...

Merci pour votre aide,
 

zebanx

XLDnaute Accro
Bonjour Eric83, le forum,

Cela fait un long moment que je n'ai pas codé donc il y a surement mieux mais on se lance (et le sujet est bien intéressant !).

Il y a deux parties
1/ compiler des fichiers.
Là, je n'ai rien fait. Il y a plein d'exemple sur le forum ou là, il y a un code prêt à l'emploi
2/ Consolider les données suivant vos remarques
Là, j'ai travaillé -)

VB:
Sub array_cherche()
Dim ta, tb, derligne%, dercol%, i%, j%, n%

'-- suppression des données initiales sur la feuille compilation
Sheets("compilation").Rows("2:" & Sheets("compilation").Cells(Rows.Count, 1).End(3).Row + 1).ClearContents

A = Array("Région", "Département", "Année", "Mesure", "Lieux", "Ville", "Mois", "Type", "Age", "Résultat")
'-- balayage de toutes les feuilles (sauf la premiere)
For S = 2 To Sheets.Count
Sheets(S).Activate
'- construction du tableau tb (pour chaque feuille)
ta = Range("A1:T" & Sheets(S).Cells(Rows.Count, 1).End(3).Row)
derligne = Sheets(S).Cells(Rows.Count, 1).End(3).Row
dercol = Sheets(S).Cells(1, Columns.Count).End(1).Column
ReDim tb(1 To derligne, 1 To 10)
For i = 2 To derligne
    For n = 0 To 9
        For j = 1 To dercol
            If ta(1, j) = A(n) Then
            tb(i - 1, n + 1) = ta(i, j)
            GoTo prochain:
            Else
            tb(i - 1, n + 1) = ""
        End If
        Next j
prochain:
    Next n
Next i
'-- restitution dans la feuille compilation
derlcompilation = Sheets("compilation").Cells(Rows.Count, 1).End(3).Row
Sheets("compilation").Range("a" & derlcompilation + 1).Resize(derligne, 10) = tb
'-- on va à la prochaine feuille
Next S
Sheets("compilation").Activate
Range("L10").Select
End Sub

Cela m'a l'air de bien consolider.
A vous de me dire par vos tests

Bons tests et soirée
zebanx
 

Pièces jointes

  • classeur_wbks (compil, col.manque).xlsm
    28.5 KB · Affichages: 3

erics83

XLDnaute Impliqué
Bonjour et MERCI zebanx,

(je viens de m'apercevoir que je ne vous avais pas répondu....)

Entretemps, j'avais trouvé une autre solution, mais qui ressemble beaucoup à la votre, sauf que la votre est nettement plus rapide....: en fait, j'avais pris "manuellement" toutes les noms des colonnes existantes et j'avais ensuite compilé....donc même "logique", mais votre code est vraiment extraordinaire !!

Merci,

Merci pour votre aide,
 

Discussions similaires

Réponses
257
Affichages
7 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…