Récupérer quelques lignes dans 200 fichiers pour un recap

Bonjour,

Pourrais-je avoir votre avis sur la méthode la plus pratique à mettre en place dans ma situation:

J'ai crée un fichier d'audit Excel. C'est une check-list sur un premier onglet qui génère un recap sur un second onglet. Sur un 3 eme onglet j'ai des stats sur ce qui est bon ou pas concernant l'audit en question et selon différents items.

Ce tableau va être utilisé une centaine de fois voir plus.

Sauf que là on me dit que ça serait bien d'avoir des stats globales sur les items ok et les items pas ok. Du coup, me voilà bien en peine.

Je vais devoir regrouper certaines informations de mes fichiers Excel pour en faire un recap.

Voilà les possibilités que j'ai trouvé pour le moment:

1- Je dis aux utilisateurs de copier les éléments clés pour les stats et de les coller dans le tableau recap. (rustique mais aprés tout ça marche bien et c'est simple à faire)

2- j'utilise le système des liaisons Excel...mais au vue des tutos je ne vois pas l'avantage par rapport au copier-coller

3- j'ai vu des tutos sur le principe de consolidation et de requête (trop géniale au passage) mais je n'ai besoin que de quelques lignes présente sur un de mes onglets et pas d'un fichiers complet donc ça ne fonctionne pas il me semble. Dommage car c'était exactement ce qui me fallait en fait.

4- Les macros...clairement trop compliqué. J'en ai vu quelques unes sur des forums mais je n'ai pas le niveau là.

Y aurait-il une 5eme option auquel je n'aurais pas pensé?

Merci beaucoup

Bonjour,

tu pourrais boucler sur le répertoire de tes fichier et utiliser cette fonction perso fait à partir de ExecuteExcel4Macro

pour faire un test sur 1 fichier, dans les cellules de A1:A5

C:\MonRépertoire

MonFichier.xlsx

NomDeFeuille

5 --> ligne

2 --> colonne

Sub test()
Range("B1") = GetValue([A1], [a2], [a3], [a4], [a5])
End Sub

Private Function GetValue(sRep As String, sFile As String, sSh As String, rw As Integer, cn As Integer) As String
Dim Arg As String
Arg = "'" & sRep & "\[" & sFile & "]" & sSh & "'!R" & rw & "C" & cn & ""
GetValue = ExecuteExcel4Macro(Arg)
End Function

Merci beaucoup i20100,

Alors là il faut que je comprenne aussi....

La macro tu l'as met dans les fichiers source ou dans le recap?

J'aimerais que les valeurs de ces 16 lignes contenues dans mes fichiers audit 1, audit 2, audit 3,....soient copiée / collage speciale/valeurs à la suite dans mon fichier recapaudit.xlsm afin de créer une base de donnée qui me permettra ensuite de faire des stats. c'est possible déjà?

Car dans l'onglet stats des fichiers audit c'est des formules donc je dois récupérer juste les valeurs pour compliquer l'affaire.

Le tout étant dans un même répertoire et je n'ai pas forcement besoin d'une opération en masse car les audits seront complété au fur et à mesure dans le temps. Je peux ajouter un bouton sous le tableau de stat pour activer la macro (ça je sais faire)

Je ferais peut-être mieux de partir du fichier audit et non pas du fichier recap....

capture
La macro tu l'as met dans les fichiers source ou dans le recap?

tu mets la macro dans le recap, les fichiers audit sont fermés

pour faire le test suivant :

récupérer la valeur de la cellule E6 du audit 1.xlsx

met sur une nouvelle feuille du fichier récap

en cellule

A1 --> C:\MonRépertoire (à adapter)

A2 --> audit 1.xlsx

A3 --> stats

A5 --> 6

A6 --> 5

après avoir exécuter la macro "test" tu devrais avoir en cellule B1 la valeur : Information générales

fait un test avec une des cellules ayant une formule

il n'y a que la cellules A5 (ligne) et A6 (colonne) à modifier

re,

voici un autre exemple avec ADODB,

les fichiers doivent être enregistrés dans le même répertoire

ouvre le fichier Récap pour faire le test

24recap.xlsm (21.46 Ko)
17audit-1.xlsx (11.62 Ko)
18audit-2.xlsx (11.60 Ko)

Wouaw!

Tu es génial... C'est exactement ce dont j'ai besoin. Merci

Bon maintenant je dois comprendre comment l'adapter à mes fichiers.

J'ai changé ça car mes fichiers audits sont en xlsm:

'--- lire uniquement les fichiers dont le nom commence par "audit" et ont un extention "xlsm"---

If Left(Fich, 5) = "audit" And Right(Fich, 4) = "xlsm" Then 'à adapter

Comme j'ai plusieurs feuilles dans mes fichiers audit je suppose que je dois lui dire laquelle ici (?)

Set Rst = Cnn.Execute("SELECT * FROM [" & NomFeuille & "$A6:N21" & "]") 'adapter la plage de cellule

comme ça:

Set Rst = Cnn.Execute("SELECT * FROM [" & "STATS" & "$A6:N21" & "]") 'adapter la plage de cellule

Déjà j'ai raté quelque chose car ça bug...

re,

Comme j'ai plusieurs feuilles dans mes fichiers audit je suppose que je dois lui dire laquelle ici (?)

non, NomFeuille est une variable, regarde dans le haut de la macro

NomFeuille = "stats"

as-tu plusieurs feuilles à lire sur chaque fichier "audit" ?

J'ai 7 onglets dans mes fichiers Audit mais le seul qui m’intéresse c'est STATS.

Du coup j'ai juste chagé l'extension en xlms

Quand il bug il met en jaune cette partie:

Cnn.Close

J'ai fais le test, c'est bien l'extension qui pose problème et non pas le fait d'avoir plusieurs feuilles.

J'ai enregistré Audit 1 et Audit 2 en .xlsm avec tes fichiers exemple et ça bug pareil.

C'est peut être à cause de l'activation des macros? Même si j'ai fait "activer automatiquement".

re,

j'ai fait le test avec des fichiers "xlsm" et pas de problème,

If Left(Fich, 5) = "audit" And Right(Fich, 4) = "xlsm" Then 

ajoute cette ligne pour vérifier la valeur

Debug.Print  Right(Fich, 4)

Du coup j'ai

'--- lire uniquement les fichiers dont le nom commence par "audit" et ont un extention "xlsm"---

If Left(Fich, 5) = "audit" And Right(Fich, 4) = "xlsm" Then 'à adapter

Debug.Print Right(Fich, 4)

Mais ça me fait une erreur.

(avec tes fichiers comme les miens) Suis sur windows 64 bits ça peut venir de là?

Sinon je vais essayer sur un autre pc.

ça fonctionne!!!!

Merci beaucoup c'est super

Super! Merci pour ce retour

Rechercher des sujets similaires à "recuperer lignes 200 fichiers recap"