Macro - recherche automatique de données situées dans d'autres fichiers

Bonjour à tous,

Je ne suis pas du tout une habituée des macro et des codages associés mais ma curiosité me fait m’y pencher pour pouvoir gagner du temps.

Voici mon problème :

J’ai des fichiers nommés « OP… » (les … étant un numéro) qui se trouvent dans différents sous-sous-dossiers.

J’ai un fichier nommé « Recap » dans lequel j’aimerai récapituler les informations de chacun des dossiers précédemment cités. Dans ce fichier « récap », il y a une ligne prévue pour chaque OP.

Cependant, tous les OP ne doivent pas être ajoutés automatiquement, mais uniquement lorsque je souhaite ajouter l’un d’entre eux.

Les informations à rentrer dans la ligne pour chaque OP sont ces correspondances-ci :

Cellule R5 de l’OP  cellule C4 de Recap

Cellule D2 de l’OP  cellule D4 de Recap

Cellules D3 de l’OP  cellule E4 de Recap

Etc.

Dans la façon de procéder, j’aimerai pouvoir rentrer un numéro d’OP (exemple OP042) dans la cellule B4 de mon fichier Recap, que ça recherche automatiquement le fichier nommé « OP042 » et que ça en extraie les informations nécessaires pour compléter la ligne 4. De même la cellule B5 me permettrait de compléter automatiquement la ligne 5, etc.

Alors j’imagine que la macro se décortique en trois temps :

1- rentrer une donnée variable dans une macro

En gros, pour que je donne mon numéro d’OP à la macro et qu’elle recherche toute seule. Sachant que le numéro d’OP sera différent à chaque fois. J’ai vu que je pouvais faire un inputbox et j’ai testé ce code en le simplifiant :

Sub demander()

mavaleur = InputBox("Rentrer une valeur", Value)

Range("C5").Value = mavaleur

End Sub

Sauf que c’est bien pour écrire ma valeur dans une case, mais ce que j’aimerai, c’est que ma valeur déclenche d’autres choses ensuite. Notamment la rechercher dans des dossiers.

2- rechercher ce nom « OP… » dans des sous-dossiers

En faisant des recherches, j’ai trouvé l’application Filesearch qui avait l’air parfaite et je me suis finalement rendue compte que ça ne marchait plus sur Excel 2016. Impossible de trouver le nom d’un équivalent…

3- sélectionner les cellules de départ et de destination

J’ai fait des essais en enregistrant une macro en faisant des simples « =… » avec un fichier source déjà ouvert et j’ai regardé les lignes de code que ça donnait mais comme c’était à partir d’un fichier déjà ouvert, je pense que ça n’a rien à voir…

Pour finir, je ne suis pas trop sûre de comment ces différentes parties de la macro doivent s’enchainer les unes après les autres, en termes de ponctuations, alinéa ou autre… J’ai essayé de lire pas mal de macro trouvées sur des forums pour comprendre les fonctions de chaque ligne. Mais je pense que je suis encore trop novice pour réussir à en extirper les informations que je voudrai…

Je vous dis un grand merci par avance si quelqu’un pouvait me donner quelques pistes. Je ferai tous les essais possibles jusqu’à ce que j’y arrive.

Bon lundi à vous !

En avançant dans mes recherches, j'ai réussi à trouver une macro pour la fonction indirectex qui me permet de relier les informations contenues dans une cellule donnée à partir du chemin d'accès à un fichier, et ce sans que le fichier ne soit ouvert.

Petit inconvénient, si les données du fichier source sont modifiées, il faut relancer la recherche de l'information pour chaque cellule y étant liée, ça ne se fait pas automatiquement.

Il me manque maintenant à trouver une fonction qui me permette de recherche mon fichier dans les dossiers et leurs sous-dossiers afin de me retranscrire le chemin d'accès dans une cellule.

Je reste sur le coup, si quelqu'un a quelques conseils pour me faire gagner du temps, je suis preneuse! Merci beaucoup à vous!

Bonjour à tous,

Pour vous montrer mon avancement sur la problématique d'afficher le chemin d'accès de mon fichier nommé "OP...", voici la macro sur laquelle je travaille mais qui ne fonctionne malheureusement pas. Un message d'erreur me dit "impossible d'enregistrer la macro lors du débogage". Je ne comprend pas où est le problème.

Je pense que mes références aux SubSubFolder et SubSubSubFolder n'existent pas. Mais je l'ai tenté! Cependant, même en les retirant, j'ai le même message d'erreur.

En espérant que quelqu'un pourra m'aider...

Function Recurse(OPnumber As String) As String

Dim sPath As String

sPath = "'Z:\Carole\tests organisation documents informatiques\fichier clients et collaborations test\"

Dim FSO As New FileSystemObject

Dim myFolder As Folder

Dim mySubFolder As Folder

Dim mySubSubFolder As Folder

Dim mySubSubSubFolder As Folder

Dim myFile As File

Set myFolder = FSO.GetFolder(sPath)

For Each mySubFolder In myFolder.SubFolders

For Each mySubSubFolder In mySubFolder.SubSubFolder

For Each mySubSubSubFolder In mySubSubFolder.SubSubSubfolder

For Each myFile In mySubFolder.Files

For Each myFile In mySubSubFolder.Files

For Each myFile In mySubSubSubFolder.Files

If myFile.Name = OPnumber & ".xlsx" Then

Recurse = myFile.Path

Exit For

End If

Next

Next

Next

Next

Next

Next

End Function

Quelqu'un pour m'aider ici?

Rechercher des sujets similaires à "macro recherche automatique donnees situees fichiers"