Recherche de données dans 1000+ fichiers
Résolu
cletess
Messages postés
40
Statut
Membre
-
cletess Messages postés 40 Statut Membre -
cletess Messages postés 40 Statut Membre -
Chers tous,
Je me retrouve avec un travail assez laborieux à effectuer. J’ai un fichier Excel récapitulatif (voir exemple.xlsx) reprenant en colonne A « Filename » les noms de +/- 1000 autres fichiers excel (présent dans le même répertoire).
Ce fichier récapitulatif comprend également une série d’autres colonnes portant des noms spécifiques (pour l’exemple, B1= X, C1 = Y et D1 = Z)
Les 1000 fichiers de données (voir example2.xlsx) se composent comme suit : la colonne B contient une suite de lettre majuscule de longueur variable et d’ordre variable (mais unique) et la colonne C contient les valeurs qui m’intéressent.
J’aimerai à partir du fichier récapitulatif, créer une macro qui ouvrirait les uns à la suite des autres les 1000 fichiers et chercherait dans la colonne B de ceux-ci les valeurs X, Y et Z (les unes après les autres) et me rapportent les valeurs correspondantes de la colonne C dans le fichier récapitulatif.
Pour l’heure, je procède manuellement avec une formule vlookup et différentes procédures manuelles mais ce n’est vraiment pas efficace.
Auriez-vous des indications, pistes ou commentaires ? Toute aide serait grandement appréciée !
Pour télécharger les exemples, voici un lien : https://fromsmash.com/exemple-Macro
Merci beaucoup
CL
Je me retrouve avec un travail assez laborieux à effectuer. J’ai un fichier Excel récapitulatif (voir exemple.xlsx) reprenant en colonne A « Filename » les noms de +/- 1000 autres fichiers excel (présent dans le même répertoire).
Ce fichier récapitulatif comprend également une série d’autres colonnes portant des noms spécifiques (pour l’exemple, B1= X, C1 = Y et D1 = Z)
Les 1000 fichiers de données (voir example2.xlsx) se composent comme suit : la colonne B contient une suite de lettre majuscule de longueur variable et d’ordre variable (mais unique) et la colonne C contient les valeurs qui m’intéressent.
J’aimerai à partir du fichier récapitulatif, créer une macro qui ouvrirait les uns à la suite des autres les 1000 fichiers et chercherait dans la colonne B de ceux-ci les valeurs X, Y et Z (les unes après les autres) et me rapportent les valeurs correspondantes de la colonne C dans le fichier récapitulatif.
Pour l’heure, je procède manuellement avec une formule vlookup et différentes procédures manuelles mais ce n’est vraiment pas efficace.
Auriez-vous des indications, pistes ou commentaires ? Toute aide serait grandement appréciée !
Pour télécharger les exemples, voici un lien : https://fromsmash.com/exemple-Macro
Merci beaucoup
CL
A voir également:
- Recherche de données dans 1000+ fichiers
- Fuite données maif - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Supprimer les données de navigation - Guide
- Explorateur de fichiers - Guide
- Renommer des fichiers en masse - Guide
1 réponse
bonsoir, je suis un peu déçu par les deux fichiers exemples.
dis-toi bien que nous avons tous intérêt à ce que tout soit le plus clair possible. toi pour obtenir ce dont tu as besoin, nous pour éviter du travail inutile.
peux-tu donc faire un effort de réalisme, par exemple avec les noms des fichiers en colonne A, et y ajouter un troisième fichier qui montre à quoi ressemblera le fichier récapitulatif à la fin du traitement?
peux-tu aussi décrire ton expérience en VBA? cherches-tu des pistes, ou un travail tout fait?
dis-toi bien que nous avons tous intérêt à ce que tout soit le plus clair possible. toi pour obtenir ce dont tu as besoin, nous pour éviter du travail inutile.
peux-tu donc faire un effort de réalisme, par exemple avec les noms des fichiers en colonne A, et y ajouter un troisième fichier qui montre à quoi ressemblera le fichier récapitulatif à la fin du traitement?
peux-tu aussi décrire ton expérience en VBA? cherches-tu des pistes, ou un travail tout fait?
Tout d'abord, les noms de fichiers. Je dois les exporter manuellement d'un programme particulier et chacun d'eux fait référence à un individu qui s'est vu attribuer une valeur allant de 1 à 998. Ils sont donc nommés 1.xlsx, 2.xlsx, etc.
Ensuite, dans l'exemple2.xlsx, j'ai en colonne B près de 200 variables différentes, ordonnées de façon différente mais toujours unique. Et je cherche la valeur de la colonne C associée à 3 de ces variables bien précises. Pour l'exemple ici, VARIABLE_X, VARIABLE_Y et VARIABLE_Z.
Je ne peux malheureusement pas fournir un fichier réel. J'ai donc produit un exemple un peu plus proche de la réalité, j'espère que ce sera plus 'parlant'.
https://fromsmash.com/exemple-Macro
Pour ce qui est de mon expérience en VBA, j'y ai déjà un peu chipoté il y a quelques temps et je comprends pas mal de choses. Je ne sais pas créer du code à partir de rien mais suis tout à fait capable d'adapter différentes macros ou en combiner pour arriver à mes fins.
Encore merci et très bonne soirée,
CL
suggestion:
Option Explicit Sub cletess() Dim wb As Workbook Dim fdest As Worksheet, fsource As Worksheet Dim dlig As Long Dim sfich As String Dim srow As Range Dim crit1 As String, crit2 As String, crit3 As String Dim skey, sval, cpath As String cpath = ThisWorkbook.Path & "\" Set fdest = ActiveSheet crit1 = fdest.Cells(1, 2) crit2 = fdest.Cells(1, 3) crit3 = fdest.Cells(1, 4) dlig = 2 sfich = fdest.Cells(dlig, 1) Do While sfich <> "" Set wb = Workbooks.Open(cpath & sfich & ".xlsx") Set fsource = wb.Sheets(1) For Each srow In fsource.UsedRange.Rows skey = srow.Cells(1, 2) sval = srow.Cells(1, 3) Select Case skey Case Is = crit1 fdest.Cells(dlig, 2) = sval Case Is = crit2 fdest.Cells(dlig, 3) = sval Case Is = crit3 fdest.Cells(dlig, 4) = sval End Select Next srow wb.Close dlig = dlig + 1 sfich = fdest.Cells(dlig, 1) Loop End SubEn rajoutant quelques crit* j'ai pu extraire toutes les données dont j'avais besoin en un rien de temps :)
Très bonne journée et encore merci !!
Select Case skey
Case Is = crit1
fdest.Cells(dlig, 2) = sval