Ouverture fichier

Bonjour,
Je souhaite ouvrir un fichier dont je ne connais que partiellement le nom.
Voila mon code
Dim chemin as string
Chemin = " x:\doc\"
Workbooks.open filename:=chemin & menu.saisie.text & "*.xls*"

Menu.saisie.text c'est le champs du userform utilisé pour taper le nom du fichier

J'ai une erreur a chaque fois a cause des * qui se mettent dans le nom au lieu de servir a accepter que le nom du fichier continu.
Si je saisi doc1 il recherche doc1*.xls* alors que je veut doc1_fab.xlsx

Merci pour vos lumières

4 réponses

  1. Merci pour ta réponse mais je voudrais que ce soit transparent pour les utilisateurs. donc je voudrais que si il écrit dans le userform 61117, que sa poursuive ma macro et que sa ouvre le fichier 61117 9lnw33.xlsx, que ma macro copie les données voulue et referme le fichier après. de plus, je peut avoir des fichiers en xls ou xlsx c'est pour cela que je voulais utiliser l'asterisk.

    Private Sub Valider_Click()
    Dim CHEMIN As String
    Dim FICHIER As String
    CHEMIN = "C:\Users\xx\Documents\premiers tests\test recup\test\New folder\"
    FICHIER = CHEMIN & menu.saisie.Text & ".xlsx"
    ' Dim choix
    ' vérification de l'existance du fichier
    If Dir(FICHIER) = "" Then
    ' message erreur si il n'existe pas
    MsgBox "le fichier est introuvable"
    ' Si ok ouverture du fichier
    Else
    Workbooks.Open Filename:=FICHIER

    ' copie et colle cellules

    Sheets("RESUM").Select
    Range("A2,B2,c2,d2,e2,f2,g2,h2,i2,j2,k2,l2,m2,n2,o2,p2,q2,r2,s2,t2,u2,v2,w2,x2,y2,Z2").Select
    Selection.Copy
    Windows("test.xls").Activate
    Range("A65000").End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

    ' Pour fermer le fichier .xls
    Workbooks(menu.saisie.Text & ".xlsx").Close SaveChanges:=False

    End If
    End Sub


    mon code fonctionne si je tape le nom complet et que mon fichier est bien un .xlsx
    mais j'ai des fichiers .xls
    1. Contributeur
      Voici un autre exemple, ouvre le classeur aux modifications les plus récentes:

      http://www.cjoint.com/c/FDEgIuFbyUQ
      1. Contributeur
        Bonjour à tous,

        Si la 1ère partie du nom est connu, voici une macro qui va t'afficher le nom de tous les fichier commençant par ce nom dans un répertoire que tu auras choisi. Ensuite avec un double clic tu pourras ouvrir le classeur qui t’intéresse.

        Mettre dans la feuille où vont s'afficher les données:

        Option Explicit
        Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        nom = Target.Value
        If Range("C1") = "" Then Exit Sub
        chemin = Range("C1") & "\"
         Workbooks.Open chemin & nom 'on ouvre le classeur si existant
        End Sub
        


        Dans un module standard:

        Option Explicit
        Public chemin As String, nom As String


        Insérer un UserForm y mettre un bouton avec ce code:

        Option Explicit
        Private Sub CommandButton1_Click()
         'Nécessite d'activer la référence "Microsoft Scripting RunTime"
            'allez dans Outils Références et cocher "Microsoft Scripting RunTime"
            
            Dim Fso As Scripting.FileSystemObject
            Dim FileItem As Scripting.File
            Dim Tableau()
            Dim Plage As Range
            Dim m As Integer, i As Integer
            Dim z As Byte, Valeur As Byte
            Dim Cible As Variant
        SelectionDossier_source
        nom = Application.InputBox("Entrez le nom")
          nom = Dir(chemin & "\\" & nom & "*")
           Range("C1") = chemin & "\"
          'Boucle sur les fichiers
            Do
          m = m + 1
                ReDim Preserve Tableau(1 To 2, 1 To m)
                Tableau(1, m) = nom
         
                Set Fso = CreateObject("Scripting.FileSystemObject")
                Set FileItem = Fso.GetFile(chemin & "\" & nom)
         
                'Récupère la date de création
                Tableau(2, m) = Left(FileItem.DateCreated, 10)
                'Pour récupérer la date de dernière modification
                'Tableau(2, m) = Left(FileItem.DateLastModified, 10)
                'Pour récupérer la taille du fichier
                'Tableau(2, m) = Left(FileItem.Size, 10)
         
                nom = Dir
            Loop Until nom = ""
         
         
            '---Trie les fichiers par ordre décroissant de création ---
            Do
                Valeur = 0
                For i = 1 To m - 1
                    If CDate(Tableau(2, i)) < CDate(Tableau(2, i + 1)) Then
                        For z = 1 To 2
                            Cible = Tableau(z, i)
                            Tableau(z, i) = Tableau(z, i + 1)
                            Tableau(z, i + 1) = Cible
                        Next z
         
                        Valeur = 1
                    End If
                Next i
            Loop While Valeur = 1
         
         
            '--- Transfère les données dans la feuille de calcul ---
            Set Plage = Worksheets("Feuil1").Range("A1")
            Set Plage = Plage.Resize(UBound(Tableau(), 2), UBound(Tableau()))
            Plage = Application.Transpose(Tableau())
         Worksheets("Feuil1").Columns("A:B").AutoFit
        End Sub
        Sub SelectionDossier_source()
        With Application.FileDialog(msoFileDialogFolderPicker)
                'Définit un titre pour la boîte de dialogue
                .Title = "Choisissez le dossier des classeurs à rechercher"
                'Affiche la boîte de dialogue
                .Show
         'Affiche le nom du dossier sélectionné
                If .SelectedItems.Count > 0 Then
                    chemin = .SelectedItems(1)
                  End If
           End With
        End Sub
        


        Voir le fichier exemple:

        http://www.cjoint.com/c/FDDqB41cWQQ

        @+ Le Pivert
        1. Bonjour,

          Y a un message d'erreur ou pas ???

          Rectification, pas possible d'ouvrir un fichier avec le nom incomplet
          1. Oui, erreur d'exécution 1004 doc1*.xls* introuvable
          2. La fin du nom est aleatoire, seul la première partie est connu, c'est pourquoi je voulais utiliser les asterisk comme en recherche pour windows. C'est pas possible?