whiteshark
XLDnaute Nouveau
Bonjour à tous,
Je fais une nouvelle fois appel à vous pour m'aider.
Je cherche un moyen de faire une recherche de fichier excel avec un nom partiel, qu'il me liste les fichiers trouvés, que je puisse cliquer dessus pour les ouvrir et avoir en plus dans cette même boite de dialogue un bouton pour créer un nouveau fichier. Je m'explique :
Je fais de l'extraction de données à partir d'une base. Chaque extraction a un nom unique en fonction des données extraites comme par exemple "carotte-france" ou "melon-espagne". Actuellement j'ai une macros qui, lorsque je lance le processus d'extraction, va chercher dans le dossier "exports" si l'extraction de ce type de données a déjà été faite. Si un export existe il va m'ouvrir le fichier excel et sinon il m'affiche une MsgBox vbYesNo me disant qu'aucune fichier n'a été trouver et me demande si je veux le créer. Si oui il enclenche le reste du processus et si non rien ne se passe. Voilà la macro de recherche que j'utilise pour l'instant :
Sub Savoir_si_extraction_exist()
Dim NomFichier$, CheminRechercheDossier$, Fichier$
NomFichier = Sheets("Listing").Range("A2").Value & ".xlsm"
CheminRechercheDossier = "\\Serveur01\services\Gestion\Extraction"
fichier = Dir(CheminRechercheDossier & "\" & NomFichier)
Application.ScreenUpdating = False
If fichier <> "" Then
Workbooks.Open Filename:=CheminRechercheDossier & "\" & NomFichier
Else
Dim reponse As Integer
reponse = MsgBox("L'extraction n'existe pas. Voulez-vous le créer ?", vbYesNo, "Création d'une nouvelle extraction")
If reponse = vbYes Then
Call extraction
Else
If reponse = vbNo Then
Exit Sub
Application.ScreenUpdating = True
End If
End If
End If
End Sub
Tout marche très bien sauf que suite à une réorganisation du service les extractions seront fragmentées du genre "carotte-france-export", "carotte-france-import", "carotte-france-export-bio", "carotte-france-import-bio", etc.
Du coup ce que je voudrais faire maintenant c'est lancer une recherche non pas sur le nom exacte de l'extraction mais avec un nom partiel comme "carotte-france" et qu'il me cherche tous les fichiers dont le nom contient cette occurrence. Soit il ne trouve rien et il me remet la MsgBox vbYesNo avec voulez-vous créer le fichier, soit, et là ça se complique sérieusement, il trouve au moins 1 fichier. Dans ce cas je voudrais qu'il m'affiche une boite de dialogue avec la liste de tous les fichiers contenant le nom "carotte-france" (donc "carotte-france-export", "carotte-france-import", "carotte-france-export-bio", "carotte-france-import-bio") et que je puisse cliquer sur les références de la liste pour ouvrir l'un des fichiers existant, et je voudrais en plus un bouton créer pour lancer le processus afin de faire une nouvelle extraction si celle dont j'ai besoin n'a pas encore été faite. Et avec un bouton annuler si je ne veux rien faire.
Je n'ai absolument aucune idée de comment faire une telle boite de dialogue avec recherche par nom partiel, lien cliquable de la liste de fichiers existant et les boutons créer et annuler .
Vraiment je vous remercie d'avance pour votre aide.
Je fais une nouvelle fois appel à vous pour m'aider.
Je cherche un moyen de faire une recherche de fichier excel avec un nom partiel, qu'il me liste les fichiers trouvés, que je puisse cliquer dessus pour les ouvrir et avoir en plus dans cette même boite de dialogue un bouton pour créer un nouveau fichier. Je m'explique :
Je fais de l'extraction de données à partir d'une base. Chaque extraction a un nom unique en fonction des données extraites comme par exemple "carotte-france" ou "melon-espagne". Actuellement j'ai une macros qui, lorsque je lance le processus d'extraction, va chercher dans le dossier "exports" si l'extraction de ce type de données a déjà été faite. Si un export existe il va m'ouvrir le fichier excel et sinon il m'affiche une MsgBox vbYesNo me disant qu'aucune fichier n'a été trouver et me demande si je veux le créer. Si oui il enclenche le reste du processus et si non rien ne se passe. Voilà la macro de recherche que j'utilise pour l'instant :
Sub Savoir_si_extraction_exist()
Dim NomFichier$, CheminRechercheDossier$, Fichier$
NomFichier = Sheets("Listing").Range("A2").Value & ".xlsm"
CheminRechercheDossier = "\\Serveur01\services\Gestion\Extraction"
fichier = Dir(CheminRechercheDossier & "\" & NomFichier)
Application.ScreenUpdating = False
If fichier <> "" Then
Workbooks.Open Filename:=CheminRechercheDossier & "\" & NomFichier
Else
Dim reponse As Integer
reponse = MsgBox("L'extraction n'existe pas. Voulez-vous le créer ?", vbYesNo, "Création d'une nouvelle extraction")
If reponse = vbYes Then
Call extraction
Else
If reponse = vbNo Then
Exit Sub
Application.ScreenUpdating = True
End If
End If
End If
End Sub
Tout marche très bien sauf que suite à une réorganisation du service les extractions seront fragmentées du genre "carotte-france-export", "carotte-france-import", "carotte-france-export-bio", "carotte-france-import-bio", etc.
Du coup ce que je voudrais faire maintenant c'est lancer une recherche non pas sur le nom exacte de l'extraction mais avec un nom partiel comme "carotte-france" et qu'il me cherche tous les fichiers dont le nom contient cette occurrence. Soit il ne trouve rien et il me remet la MsgBox vbYesNo avec voulez-vous créer le fichier, soit, et là ça se complique sérieusement, il trouve au moins 1 fichier. Dans ce cas je voudrais qu'il m'affiche une boite de dialogue avec la liste de tous les fichiers contenant le nom "carotte-france" (donc "carotte-france-export", "carotte-france-import", "carotte-france-export-bio", "carotte-france-import-bio") et que je puisse cliquer sur les références de la liste pour ouvrir l'un des fichiers existant, et je voudrais en plus un bouton créer pour lancer le processus afin de faire une nouvelle extraction si celle dont j'ai besoin n'a pas encore été faite. Et avec un bouton annuler si je ne veux rien faire.
Je n'ai absolument aucune idée de comment faire une telle boite de dialogue avec recherche par nom partiel, lien cliquable de la liste de fichiers existant et les boutons créer et annuler .
Vraiment je vous remercie d'avance pour votre aide.