Ouvrir un ficher commençant toujours par le même début

Bonjour,

je cherche à pouvoir ouvrir par macro un fichier dont seules les dernières lettres changent.

set WbActu =This workbook
chemin =WbActu.path & application.pathSeparator
Fichier = chemin & "Classeur_Fonctionnel.xlms"

Pour le moment, ca marche si le nom est exactement le même avec cette ligne de macro :

Set WbFonct = Workbooks.Open(Fichier, Updatelinks = false)

Je voudrais que la macro m'ouvre le fichier dont le début est "Classeur_Fonctionnel" mais qui peut évoluer en :

Classeur_Fonctionnel2

Classeur_Fonctionnel10

Classeur_Fonctionnel_Aout

etc...

Ps : Dans le même dossier je ne garderai bien qu'une seule version de "Classeur_FonctionnelX"

J'ai essayé avec :

Fichier = chemin & "Classeur_Fonctionnel"&"*.xlms"

aussi avec :

Fichier = chemin & "Classeur_Fonctionnel"&"*"&".xlms"

....mais sans succès

Merci pour votre aide ...

Merci pour votre aide

Bonjour,

une solution de rechange,

Application.GetOpenFilename(FileFilter:="Microsoft Excel Workbooks (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm", Title:="Open Database File", MultiSelect:=False)

Bonjour,

Merci pour votre réponse, mais je ne vois pas comment l'utiliser : a quel moment dois-je signifier que je cherche le fichier commençant par "Classeur_Fonctionnel..." (parmi les autres fichiers excel dans le dossier) ?

(Je souhaiterai que la macro lance l'ouverture automatiquement ans que j'ai besoin de le choisir)

re.,

il possible d'imposer un filtre à File_to_Open

à tester,

Declare Function GetOpenFileName Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type

Private Function SelectAFile(Path As String, Optional Filtre As String = "*.*") As String
Dim OpenFile As OPENFILENAME, lReturn As Long, sFilter As String
OpenFile.lStructSize = Len(OpenFile)
sFilter = "Fichiers Excel (" & Filtre & ")" & Chr(0) & Filtre & Chr(0)
With OpenFile
    .lpstrFilter = sFilter
    .nFilterIndex = 1
    .lpstrFile = String(257, 0)
    .nMaxFile = Len(OpenFile.lpstrFile) - 1
    .lpstrFileTitle = OpenFile.lpstrFile
    .nMaxFileTitle = OpenFile.nMaxFile
    .lpstrInitialDir = Path
    .lpstrTitle = "Files to Open"
    .flags = 0
End With
lReturn = GetOpenFileName(OpenFile)
If lReturn = 0 Then
Else
    SelectAFile = Trim(Left(OpenFile.lpstrFile, InStr(1, OpenFile.lpstrFile, Chr(0)) - 1))
End If
End Function

Sub test()
Dim File_to_Open As Variant
Dim Path As String, Filtre As String
Path = "C:\Users\isabelle\Documents\test\"
Filtre = "*Classeur_Fonctionnel*.xlsm?"
File_to_Open = SelectAFile(Path, Filtre)
End Sub

Bonsoir,

Sub Test()
    Dim chemin$, fichier$
    chemin = ThisWorkbook.Path & "\"
    fichier = Dir(chemin & "Classeur_Fonctionnel*.xls*")
    If fichier <> "" Then Workbooks.Open chemin & fichier
End Sub

Cordialement.

edit : Une faute d'orthographe que je corrige...

Merci Dhany.

@MFerrand : oui, c'est effectivement plus simple !

Merci pour votre aide, cependant peut-être parvenue je suis sur Mac, mais ca ne marche pas ... J'ai un message d'erreur disant :

Erreur d'exécution 68

Périphérique non disponible

Lorsque je remplace "/" par Application.PathSeparator, et seulement si j'enlève les* et que je mets le bon nom ca m'ouvre le fichier cible :

Sub Test()
    Dim chemin$, fichier$
    chemin = ThisWorkbook.Path & Application.PathSeparator
    fichier = Dir(chemin & "Classeur_Fonctionnel.xlsm")
    If fichier <> "" Then Workbooks.Open chemin & fichier
End Sub

Par contre dès que le nom du fichier cible n'est plus le même (exemple : Classeur_Fonctionnel2), ou bien lorsque je mets des *, j'obtiens le même message d'erreur (périphérique non disponible)

Avez vous une idée du problème ?

Bonjour,

Au temps pour moi ! Je n'avais pas capté que tu étais sur MAC...

D'abord ne confond pas / et \, et tu remplaces "\" par Application.PathSeparator, là ça règlera ce problème.

Par contre MAC ne gère pas les caractères génériques, ce qui est une vraie difficulté.

Donc pour indiquer le type de fichier en utilisant Dir sous MAC, il te faut utiliser la fonction MacID :

    fichier = Dir(chemin, MacID("???"))

Les ??? sont à remplacer par la chaîne permettant d'identifier des fichiers Excel sur un MAC, et que j'ignore. A toi de voir ça.

Mais ce n'est pas tout, il va falloir placer ce renvoi de Dir dans une boucle, tester si fichier contient la chaîne cherchée et ouvrir lorsqu'on l'a trouvée... Ce qui donnerait :

Sub Test()
    Dim chemin$, fichier$
    chemin = ThisWorkbook.Path & Application.PathSeparator
    fichier = Dir(chemin, MacID("???")) 'Remplacer ??? par ce qui convient !
    Do While fichier <> ""
        If InStr(1, fichier, "Classeur_Fonctionnel") > 0 Then
            Workbooks.Open chemin & fichier
            Exit Do
        End If
        fichier = Dir()
    Loop
End Sub

Cordialement.

Merci pour votre aide.

Le code fonctionne parfaitement depuis un pc windows, c'est parfait.

Effectivement depuis mac, je n'ai pas encore réussi à l'adapter. Je vais bien me contenter de la méthode windows pour le moment.

Merci encore

C'est déjà un point d'acquis !

Désolé pour MAC, mais je ne connais que de façon théorique les problèmes d'incompatibilités rencontrés au fil de discussion, et n'étant pas en mesure de tester, cela limite...

Bonne continuation, et bonne journée.

Rechercher des sujets similaires à "ouvrir ficher commencant meme debut"