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

XL 2016 faciliter la recherche des données contenues dans plusieurs fichiers dans un dossier

Ernesta

XLDnaute Nouveau
Bonjour chers tous! j'ai un travail à réaliser sur le suivi. pour cela j'avais avec un code VBA facilité les recherches en ayant toutes les années dans un seul fichier Excel or l'exigence aujourd'hui m'oblige à procéder aux recherches sur différents fichiers dans un dossier précis.

voici le précédant code utilisé sur un seul fichier avec plusieurs feuilles :

Private Sub CommandButton1_Click()
Dim Ws As Worksheet
Dim CL As Range
Dim Num As Integer
Num = 8
'Nettoyage de la plage où afficher les résultats (par exemple A8 à G33)
Range("F8:O1500").ClearContents
'Si le TextBox est vide, il ne se passe rien
If TextBox1.Text <> "" Then
'Parcourons les différentes feuilles du classeur
For Each Ws In Worksheets
If Ws.Name <> "RECHERCHE" Then
'Parcourons les cellules de la plage de recherche (par exemple de A2 à A99)
For Each CL In Ws.Range("F8:F1500")
'Si la valeur recherchée est trouvée, on l'affiche dans la plage résultats
'ainsi que les cellules voisines
If InStr(UCase(CL.Value), UCase(TextBox1.Text)) > 0 Then
Range("F" & CStr(Num)).Value = CL.Value
Range("G" & CStr(Num)).Value = CL.Offset(0, 1).Value
Range("H" & CStr(Num)).Value = CL.Offset(0, 2).Value
Range("I" & CStr(Num)).Value = CL.Offset(0, 3).Value
Range("J" & CStr(Num)).Value = CL.Offset(0, 4).Value
Range("K" & CStr(Num)).Value = CL.Offset(0, 5).Value
Range("L" & CStr(Num)).Value = CL.Offset(0, 6).Value
Range("M" & CStr(Num)).Value = CL.Offset(0, 7).Value
Range("N" & CStr(Num)).Value = CL.Offset(0, 8).Value
Range("O" & CStr(Num)).Value = CL.Offset(0, 9).Value
Num = Num + 1
End If
Next CL
End If
Next Ws
End If
End Sub
 

xUpsilon

XLDnaute Accro
Bonjour,

Plusieurs questions :
- connais tu à l'avance le nom du dossier dans lequel seront stockés les fichiers ?
- y aura t'il toujours le même nombre de fichiers dedans ?
- y aura t'il dans ce dossier uniquement les fichiers que l'on veut ouvrir et tester ou pas ? Et si non, ces fichiers à tester se distingueront-ils par leur nom ?

Bonne continuation
 

Ernesta

XLDnaute Nouveau
Bonjour xUpsilon!
effectivement je connais l'emplacement et le nom du dossier. par contre le nombre des fichiers va évoluer chaque année. ces fichiers se distinguent par leur nom.

merci d'avance
Cordialement
 

xUpsilon

XLDnaute Accro
Re,

Bien reprenons :
- déjà, toute ta partie Range("F"& Cstr(Num)).Value = CL.Value y a moyen de la rendre bien plus lisible avec une boucle :
VB:
For i = 0 to 9
    Cells(CStr(Num),6+i) = CL.Offset(0,i)
Next i
- pour ouvrir les différents fichiers, la ligne a adapter est la suivante :
Code:
ThisWorkbook.FollowHyperLink Address:=$$$
en remplaçant $$$ par l'adresse complète de tes fichiers ou si tous les fichiers sont dans le même dossier que ce classeur :
Code:
ThisWorkbook.FollowHyperLink Address:=ThisWorkbook.Path & "\" & €€€
en remplaçant €€€ par le nom de ton fichier (sans en oublier l'extension).
- comment seront répertoriés les fichiers ? Est-ce qu'ils seront de la forme Blablabla_1, Blablabla_2 etc ? Ce serait bien pratique car on aurait juste à indiquer combien il y en a puis à boucler dessus.
- pour pointer un certain Classeur depuis un autre il faut utiliser la méthode suivante :
Code:
Workbooks(NomDuClasseur).Cells(1,1) = Workbooks(NomDuClasseur2).Cells(10,10)
Il s'agit ici d'un exemple qui va chercher dans un classeur la valeur de la cellule J10 et la recopie dans la cellule A1 d'un autre classeur.

J'aurais bien d'autres choses à t'expliquer mais si tu es vraiment novice en VBA il serait peut-être mieux que tu commences par comprendre le bout de code que tu nous as fourni ci-dessus.

Dis moi ce que tu penses de tout ça je reste à ton écoute
Bonne continuation
 

Ernesta

XLDnaute Nouveau
Merci pour cette contribution. pour facilité nos échanges je vous transfert l'ancien fichier qui avait le répertoire année par année dans seul fichier avec une feuille recherche que je souhaite innover dans un dossier avec un fichier pour chaque année tout en ayant toujours la possibilité d'effectuer un recherche pour ressortir les informations de la première feuille
 

Pièces jointes

  • REGISTRE ANNUEL.xlsx.xlsm
    866 KB · Affichages: 3
  • Registre Législatif de l'AN 2015.xlsx
    382.8 KB · Affichages: 4
  • Registre Législatif de l'AN 2016.xlsx
    382.3 KB · Affichages: 1
  • Registre Législatif de l'AN 2017.xlsx
    381.9 KB · Affichages: 1
  • Registre Législatif de l'AN 2018.xlsx
    384.2 KB · Affichages: 1
  • Registre Législatif de l'AN 2019.xlsx
    381.1 KB · Affichages: 3

xUpsilon

XLDnaute Accro
Re,

A vrai dire je n'ai pas bien compris comment étaient rassemblées les infos. Pourrais tu me réexpliquer ?

Bonne continuation

PS : Le spam est à éviter, même si ce n'était pas forcément le but, fais attention quand tu publies 4 messages à la suite comme ça
 

Ernesta

XLDnaute Nouveau
le registre annuel est l'ancien document qui rassemblait toutes les années. et les autres sont les fichiers de la nouvelle présentation dans lesquels les informations doivent être prises pour l'éventuelle recherche et composant le dossier. il s'agit pour moi de trouver la bonne méthode pour faciliter la consultation des informations contenues dans la feuille suivi de chaque année.
 

xUpsilon

XLDnaute Accro
Du coup si je comprends bien dans un dossier tu vas avoir tous ces registres annuels de chaque année, et tu voudrais depuis un fichier lancer une macro qui recherche quelque chose dans tous les fichiers.
Si j'ai bien compris :
- qu'est ce que l'on recherche, sous quelle forme ? (une ligne, une plage de données, un graphique ...)
- quel est le fichier depuis lequel on lance cette recherche sur tous ces fichiers ?

Bonne continuation
 

Ernesta

XLDnaute Nouveau
mon objectif est d'avoir tous les fichiers de ce type année par année dans un dossier et je voudrais comme tu l'exprime si bien lance une macro qui cherche que chose dans tous les fichiers. il convient de rappeler que dans chaque fichier "registre annuel" il y a une feuille suivi, une feuille statistiques et une feuille TDB. si je peux avec votre concours parvenir à partir une recherche de l'intitulé du texte retrouver toutes les lignes des informations reportant à l'intitulé du texte contenu dans l'ensemble des fichiers des registres annuels dans un fichier indépendant.
merci encore pour votre bienveillante attention à mes préoccupations. vous avez toute ma gratitude.
Cordialement.
 

Pièces jointes

  • Registre Législatif de l'AN 2019.xlsx
    381.1 KB · Affichages: 6

xUpsilon

XLDnaute Accro
Re,

Deux possibilités me viennent à l'esprit :
- avoir un fichier de recherche avec un bouton dessus. Lorsque l'on clique sur le bouton, les différents fichiers année par année s'ouvrent, et on copie/colle les intitulés nous intéressant sur le fichier de recherche. A la fin de la macro, le fichier de recherche présente tous les résultats sous forme d'un tableau classique. Cette solution répond a priori à la demande, mais ouvrir tous les fichiers puis faire les recherches et copier/coller prendra beaucoup de temps.
- avoir un fichier de résumé que l'on met à jour régulièrement et qui reprend dans une liste simplifiée toutes les différentes lignes qui pourraient nous intéresser dans les différents fichiers. Une espèce de liste simplifiée de ce qui a été écrit dans les autres fichiers. Ainsi, on ajoute sur ce fichier un outil de recherche assez basique et qui tournera bien plus vite que la première solution, car il n'aura à chercher que dans une liste d'un fichier. Inconvénient : il faut penser à mettre à jour régulièrement cette base de données, et ça ça prendra du temps car (de la même manière que pour la première solution), il faudra aller chercher toutes les infos dans tous les classeurs.

Bonne continuation
 

Ernesta

XLDnaute Nouveau
Bonjour chers tous!
je suis heureux que vous ayez compris ma préoccupation dont l'esprit convient parfaitement avec la deuxième possibilité que je voudrai bien voir la mise en œuvre.
Merci d'avance
Cordialement
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…