[macro] ouvrir un fichier sans en connaitre le nom complet

Bonjour,

Tout est dans le titre...je précise quand même :

Je voudrais ouvrir un fichier excel à partir d'une macro. Je ne connais qu'une partie du nom (qui correspond à un numéro de commande) mais le nom du fichier contient aussi le client par exemple.

Pour l'instant j'ai ça :

Sub ouvrir_un_fichier()

Const strRepertoire = "C:\Documents and Settings\hugo\Bureau\Commande"

strFichier = Sheets("saisie").Cells(3, 3).Value

Workbooks.Open Filename:=strRepertoire & "\" & strFichier

End sub

où cells(3,3) correspond au numéro de commande.

Donc si le nom du fichier est le num de commande ça marche. Le problème c'est que ça ne l'est pas (mais le num de commande est dans le nom quand même).

Je pense qu'il faut faire une sorte de recherche je ne sais pas si c'est possible?!

Merci à ceux qui pourront m'aider.

Cordialement,

Hugo

bonjour,

un de mes amis m'a fait une fonction qui peut ressembler a ce que tu cherche...

le problème c'est que je ne suis pas complètement certain que ca fonctionnera

ni de la nécessité des définitions du début.

l'idée c'est de lire tous les fichiers du répertoire courant et de chercher le premier fichier dont le nom contient ton numéro de commande

ce n'est qu'une piste évidement...

Private Function ReadDFiles(Optional ByVal strFolder As String) As String

    Dim objFileScriptingObject As Object
    Dim objFolder As Object
    Dim objFiles As Object
    Dim objAFile As Object
    Dim objXMLDoc As DOMDocument

    strFolder = ActiveWorkbook.Path

    Set objXMLDoc = New DOMDocument
    Set objFileScriptingObject = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFileScriptingObject.getfolder(strFolder)
    Set objFiles = objFolder.Files

    If objFiles Is Nothing Then
        MsgBox "no folder :" & strFolder
        End
    Else
        For Each objAFile In objFiles
            If InStr(1, objAFile, Sheets("saisie").Cells(3, 3).Value, vbTextCompare) <> 0 Then
 '               ouvrir le fichier
        Next

End Function

Salut,

Merci de ta réponse.

Malheureusement, j'ai testé et je n'arrive pas à faire fonctionner cette fontion.

Néanmoins j'ai eu une idée. Si le nom du fichier commence toujours par le numéro de commande, ne peut-on pas donner le chemin comme je l'ai fait et après mettre une étoile ou quelquechose du genre pour la fin du chemin qui est inconnue?

Du style :

Sub ouvrir_un_fichier()

Const strRepertoire = "C:\Documents and Settings\hugo\Bureau\Commande"

strFichier = Sheets("saisie").Cells(3, 3).Value

Workbooks.Open Filename:=strRepertoire & "\" & strFichier & *

End sub

Merci,

Cordialement,

Hugo

oops, j'ai laisser "ouvrir le fichier" dans le code que tu dois évidement remplacer par

Workbooks.Open Filename:=strRepertoire & "\" & objAFile

par contre, je ne pense pas qu'on puisse ouvrir un fichier avec des caractères génériques

Bonjour,

essaie ce code :

Const strRepertoire as string= "C:\Documents and Settings\hugo\Bureau\Commande"
Sub ouvrir_un_fichier()
'Macro Dan
Dim strfichier As String
strfichier = Sheets("saisie").Cells(3, 3).Value
On Error Resume Next
Workbooks.Open Filename:=strRepertoire & "\" & strfichier: End
Application.Dialogs(xlDialogOpen).Show strRepertoire
End Sub

Il ouvrira une fenêtre te permettant de choisir ton fichier si la référence du fichier n'est pas le num commande

Dans le cas où le fichier est trouvé dans le répertoire il t'ouvrira le fichier en question.

Amicalement

Dan

Merci !!

Oui j'avais déjà tenter de remplacer "ouvrir le fichier" sans résultat...

J'ai testé pas mal de nouveau truc et je pense que ça marcherait avec une fonction FileSearch, mais elle n'existe plus sur excel2007.

J'ai l'impression qu'avec ça je ne suis pas loin :

Const strRepertoire = "C:\Documents and Settings\hugo\Bureau\Commande"

strFichier = Sheets("saisie").Cells(3, 3).Value

Workbooks.Open Filename:=strRepertoire & "\" & strFichier & "*"

Mais il faudrait que l'étoile "*" corresponde à : "n'importe quoi après le numéro de commande"...lol

Sinon bah je ne sais pas ce que sont des caractères génériques...

Ah oui je précise je débute en vba j'en ai à peine deux semaines derrière moi.

Merci,

Cordialement,

Hugo

re,

Tu as essayé ce que je t'ai donné ?

Amicalement

Dan

Bonjour hugo59330,

J'ai déjà demander ce genre de question, et j'ai une macros qui foncitonne, ce qu'elle fait c'est lorsque tu active la macros, une inputbox apparait tu entre le début du nom de ton fichier (Ton numéro de commande) et il allait chercher dans 2 répertoires si il toruvais le fichier. Je crois que ça convient a ce que tu cherches.

Va lire le lien, ne te fit pas au titre, c'est 2 questions dans le même sujet alors lit le a partir de la page 2.

Salut

Bonjour Dan,

Non je n'avais pas essayé nos messages ont dû se croiser je viens seulement de voir.

J'ai tester ton code et il n'y a pas d'erreurs mais j'ai le même problème qu'avant :

Quand le fichier a pour nom simplement le numéro de commande tout va bien, sinon rien ne se passe.

Je continue à chercher...

Merci de ton aide

Cordialement,

Hugo

Bonjour Maxime,

Ton lien ne fonctionne pas. Peux tu me mettre le titre de ton sujet comme ça je pourrais faire la recherche.

Ou remettre le lien il y a probablement une erreur.

Merci bcp

Cordialement,

Hugo

re,

Quand le fichier a pour nom simplement le numéro de commande tout va bien, sinon rien ne se passe.

Lorsque le fichier ne comporte pas le num de la commande, cela doit t'ouvrir le répertoire par défaut que tu as spécifié dans l'instruction CONST.

Là tu peux choisir ce que tu veux ouvrir.

Dan

edit Dan :

Oups !! essaie ceci plutôt

Const strRepertoire As String = "C:\Documents and Settings\hugo\Bureau\Commande"
Sub ouvrir_un_fichier()
'Macro Dan
Dim strfichier As String
strfichier = Sheets("saisie").Cells(3, 3).Value
On Error GoTo fin
Workbooks.Open Filename:=strRepertoire & "\" & strfichier
Exit Sub
fin:
Application.Dialogs(xlDialogOpen).Show strRepertoire
End Sub

Dan

Sujet: Requête Query avec liste déroulante

Va à la page 2 le dernier post de Math, mais si tu veux plus d'explication mon au début de la page 2 j'explique les critères que je voulais si tu veux mieux comprendre la macros.

tien moi au courant

Salut

Re Dan et Maxime,

Cette fois ci ton programme marche parfaitement Dan merci bcppp !!!! Même si ce n'est pas exactement ce que je cherche c'est un très bon début et je peux avancer.

Maxime je me penche sur ton sujet je n'ai pas encore regarder mais merci d'avance.

Merci à vous deux !!

Cordialement,

Hugo

capture d ecran 178

Ok.

Oublie pas de mettre le fil RESOLU.

Explications --> https://forum.excel-pratique.com/viewtopic.php?t=13

Dan

re maxime,

J'ai regardé ton post. C'est en effet proche de ce que je veux mais le problème c'est que FileSearch n'existe plus dans la version 2007.

Je ne peux donc pas utiliser ton code...dommage

Merci quand même.

Cordialement,

Hugo

re tout le monde !!

Merci à tous pour vas aide ça m'a aidé mais on veut que je fasse la macro d'une manière bien précise...dur...

En fait il faudrait que juste en tapant dans une boite de dialogue par exemple le numéro de commande (qui correspond à une partie du nom des fichiers) la macro l'ouvre.

Et un problère et que ces fichier se trouve dans un même sous dossier (exemple commande) mais ils ne sont pas tous dans le même sous dossier (souvent le client).

Enfin voilà!!

Merci à ceux qui m'ont déjà aidé et à ceux qui pourront encore m'apporter des précisions

Cordialement,

Hugo

re,

En fait il faudrait que juste en tapant dans une boite de dialogue par exemple le numéro de commande (qui correspond à une partie du nom des fichiers) la macro l'ouvre. 

Et par un double click dans la cellule contenant le Num de commande, on délchait la macro, cela serait bon ?

A te relire

Dan

re,

Oui ça serait même encore mieux!!

Cordialement,

Hugo

re,

clique droite sur l'onglet saisie et place s'y cette macro :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Macro Dan pour Hugo - XL pratique le 16/07/09
If Not Intersect(Target, Cells(3, 3)) Is Nothing Then
If IsEmpty(Target) Then
MsgBox "La cellule ne compte pas de données"
Else: Cancel = True: Call ouvrir_un_fichier
End If
End If
Cancel = true
End Sub

Le code fonctionne si ton num commande se trouve dans la cellule C3 de la feuille saisie.

Amicalement

Dan

Re !

Merci bcp je testerais ça demain matin je n'ai pas le fichier chez moi !!!

Merci pour tout

Cordialement,

Hugo

Rechercher des sujets similaires à "macro ouvrir fichier connaitre nom complet"