XL 2010 Compilation de données

celine123

XLDnaute Junior
Bonjour à tous,

Je reçois des fichiers mensuellement (31 classeurs) stocké dans le même dossier sur mon bureau d’où je récupère une seule feuille nommé « exception ». L’objectif est de compiler ces feuilles dans un même classeur sous forme de base de données (voir feuille « BDD »).

Les feuilles à compiler sont structurées toujours de la même manière.

Afin de structurer la bdd par date et heure (saut tous les quart d’heure sur 24h), j’aimerai (comme dans l’exemple de la feuille BDD) que ce soit structurer à partir de la date (située en A2 de toutes les feuilles à compiler) exemple en colonne « A » feuille « BDD »

Je ne maîtrise pas le vba mais une macro pourrait me changer la vie au vu du temps que je passe a faire ça manuellement :-(
 

Pièces jointes

  • BDDexemple.xlsx
    1 019.9 KB · Affichages: 90

celine123

XLDnaute Junior
j'ai trouvée ça sur le forum, je pense que ça pourrait être un début pour ce que je souhaite en finalités mais je ne sais pas comment adapter tout ça :(

Code:
Sub RechercheFichier()
Chemin = "C:\Chemin\"
FindNom = "NomFichier" ' nom complet ou partie
Extension = "xls"  ' ou *
DirFileName = FindRecherche & "." & Extension

Dim FSO As FileSystemObject, SourceFolder As Folder, SubFolder As Folder, FileItem As File
Set FSO = New Scripting.FileSystemObject
Set SourceFolder = FSO.GetFolder(Chemin)

DernLig = ActiveSheet.Columns(NoDeCol).Rows(Rows.Count).End(xlUp).Row
Fichier = Dir(Chemin & DirFileName)
Do While Fichier > ""
   If InStr(LCase(Fichier), LCase(FindRecherche)) Then
      Set FileItem = FSO.GetFile(Chemin & Fichier)
      I = InStrRev(Fichier, "."): If I Then Fichier = Left(Fichier, I - 1)
      Cells(DernLig, NoDeColFich) = Fichier
      Cells(DernLig, NoDeColDate) = FileItem.DateLastModified
      ActiveSheet.Hyperlinks.Add Cells(DernLig, NoDeColLien), FileItem.Path
      TotFichTrouve = TotFichTrouve + 1: DernLig = DernLig + 1
   End If
   Fichier = Dir
Loop
Set FSO = Nothing: Set SourceFolder = Nothing: Set SubFolder = Nothing: Set FileItem = Nothing
End Sub
 

Modeste

XLDnaute Barbatruc
Bonjour celine123,

Dis donc Batman ;) 81 personnes ont lu ton message et le fichier a été consulté à 22 reprises ... c'est donc qu'il y a un problème! Un up ne suffira pas à lever les interrogations.

Ce que tu fais manuellement, ce sont des copier-coller avec transposition? On ne se rend pas bien compte, au vu du contenu de la feuille BDD :confused: Tu reprends toutes les colonnes sauf la CT et toutes les lignes jusqu'à la 32?
Quand tu dis: "structurer la bdd par date et heure", il suffit, une fois que tu as tout compilé, de trier sur la première colonne ... non?

Donc, reprends la partie explications et joins un fichier un peu plus évocateur
 

celine123

XLDnaute Junior
Bonjour Modeste,

Je pense effectivement que tu as raison.

Ce que je souhaite c'est bien des copier coller avec transposition en concaténant les données.
Oui en effet on s’arrête bien à la ligne 32 et la colonne CT en concaténant toutes les données agencé différemment (plus simple pour mon analyse)

Quand tu dis: "structurer la bdd par date et heure", il suffit, une fois que tu as tout compilé, de trier sur la première colonne ... non?

J'ai plusieurs classeur dans un fichier, ces classeurs représentent un jour du mois, je souhait concaténé les données dans une seule et même BDD afin de pouvoir filtrer mes données. (comme dans mon exemple BDD) Je récupère une seule feuille nommé « exception ». L'idéal est de reprendre la date de la cellule en A2 plus les plages horaires comme en colonne A de ma feuille BDD Afin d'avoir en sorti Date heure (saut tous les 15min).

 

Modeste

XLDnaute Barbatruc
Bonsoir,

Certaines journées sont plus remplies que d'autres ... Quand vient le soir, trouver ici les réponses à toutes les questions ou demandes serait un rien plus confortable!
Avec ce que j'ai compris (pas trouvé de fichier plus évocateur :rolleyes:), un essai en pièce jointe. Je te laisse le soin de trier sur la colonne Date-Heure, après exécution de la macro.

Le présent classeur doit être enregistré dans le même dossier que tes 28 à 31 autres fichiers. Ces derniers doivent avoir une extension ".xlsx" et seuls les fichiers concernés doivent se trouver dans ce dossier.
 

Pièces jointes

  • BDD (celine123).xlsm
    24.2 KB · Affichages: 55

celine123

XLDnaute Junior
Bonsoir Modeste
pour commencer je m'excuse de t’apporter une réponse si tardive a ta réponse
le fichier fonctionne parfaitement mais puis je te demander deux modification
la première serait d'ajouter la ligne 42 dans la série de copier
pour la deuxième j'aimerai utilisé cette macro pour une autre feuille (même structure et même nombre de fichier) mais je n'ai pas de date en A2 sur cette feuille
serait il possible de reprendre la date en A2 de la feuille nommé « exception » pour effectuer exactement la même chose dans une autre BDD a partir d'un autre nom de feuille ("commande")
 

Modeste

XLDnaute Barbatruc
o_OBonjour celine123,

Pour inclure la ligne 42 dans la zone à copier (et la coller ensuite) il te suffit de remplacer 30 par 40 dans les deux Resize figurant dans le code (en lignes 14 et 15).

Pour ta question concernant la date, le plus simple serait tout de même de l'indiquer dans cet autre fichier! Comme on ne sait pas si tu comptes exécuter les manipulations au sein de la même procédure (ou pas!?), on ne peut de toute manière pas répondre précisément à ta question, je le crains :confused: ... et ceci n'aide pas: "[...] pour une autre feuille (même structure et même nombre de fichier) " o_O des fichiers, à l'intérieur d'une feuille!?
 

celine123

XLDnaute Junior
Bonjour Modeste
excuse moi je n'était pas clair dans mes explication
dans la même série de classeur (les 30/31 que je reçois mensuellement) et dans lequel je t'ai fait la demande initial pour la macro, j'ai une autre feuille (même structure que la feuille "exception ") nommé "commande".
je souhaiterai appliquer la même macro mais dans une autre feuille nommé "BDD1" a la différence et que je n'ai pas de date en A2 comme sur la feuille "exception"
Etant donnée que la réception des données (copier coller) ce fera dans le même classeur et il possible d'aller chercher la date dans la feuille "exception"
l'idéal serait une macro distinct de la première que je lancerai a partir d'un bouton

je te remercie pour le temps que tu accorde a ce sujet
 

Modeste

XLDnaute Barbatruc
Bonjour,

S'il s'agit des mêmes classeurs, contenant une feuille "Commande" et une feuille "Exception", je ne sais pas pourquoi tu veux faire deux procédures distinctes, mais bon ... c'est toi qui vois :)
Dans le code précédemment transmis, la date est obtenue par ActiveWorkbook.Sheets("Exception").[A2] en ligne 11
 

celine123

XLDnaute Junior
Bonjour modeste
Je reviens vers toi pour une petite modification de la macro
Je souhaiterais que les données s'ajoutent a la suite (dernière ligne vide)
Pour le moment, les données viennent se coller en remplacement des anciennes

voici le code que tu m'avais fait

Code:
Sub compil()
chemin = ThisWorkbook.Path & "\"
Set Base = ThisWorkbook.Sheets("Feuil1")
fich = Dir(chemin & "*.xlsx")
lig = 2
Application.ScreenUpdating = False
Do While fich <> ""
    If fich <> ThisWorkbook.Name Then
        Workbooks.Open chemin & fich
        For x = 0 To 95
            Base.Cells(lig, 1) = ActiveWorkbook.Sheets("Exception").[A2] + 1 / 96 * x
            lig = lig + 1
        Next x
        ActiveWorkbook.Sheets("Exception").[B3].Resize(30, 96).Copy
        Base.Cells(lig - 96, 2).Resize(96, 30).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Transpose:=True
        Application.CutCopyMode = False
        Workbooks(fich).Close savechanges:=False
        fich = Dir
    End If
Loop
Application.ScreenUpdating = True
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 715
Messages
2 081 822
Membres
101 822
dernier inscrit
holale