Utiliser la fonction Dir pour la version Mac d'Excel

Bonjour à tous,

J'ai une question concernant à la fonction Dir dans la syntaxe suivante.

chemin = ThisWorkbook.Path

nomFichier = Dir(chemin & "\" & "*.csv")

qui lit le nom d'un fichier .csv s'il existe.

J'utilise une version d'excel pour Macbook (Excel Mac 2011) et la fonction Dir ne marche pas. Quand je cherchais sur l'Internet, il me semble qu'il faut utiliser MacID Dir(chemin, MacID("Text")) pour la version Mac. J'ai essayé de modifier le code par

nomFichier = Dir(chemin & "/", MacID(".csv"))

mais ca ne marche pas du tout:(

Je voudrais savoir si quelqu'un sait comment utiliser la fonction Dir dans Mac. Une aide au 1 Mai sera largement bienvenue

Bonjour

Code à essayer :

chemin = ThisWorkbook.Path
nomfichier = Dir(chemin, MacID("TEXT"))

Cordialement

Bonjour

attention

nomFichier = Dir(chemin &"/", MacID(".csv"))

le séparateur ne peut pas etre "/"

éventuellement "\" sous windows mais sous mac n'est pas le "\" mais le ":" (pour office 2011...)

ou utiliser dans le code :

chemin & Application.PathSeparator

comme cela cela sera toujours le bon...

lien sur une ressource de cove VBA pour MAC :

http://www.rondebruin.nl/mac/mac008.htm

fred

Bonjour Dan et Fred,

Merci beaucoup pour vos réponses et vraiment navré pour mon retour tardif.

J'ai essayé d'utiliser le code comme vous avez proposé mais le code n'a pas encore donné le résultat désiré: Je voudrais accéder à un fichier *.csv. J'ai utilisé

nomFichier = Dir(chemin & Application.PathSeparator, MacID("TEXT"))

Ca se compile mais évidemment ne nous donne pas le nom d'un fichier .csv. Ensuite j'ai tenté d'ajouter *.csv dans le code comme suit

nomFichier = Dir(chemin & Application.PathSeparator & "*.csv", MacID("TEXT"))

mais ca se compile pas. Apparemment, la version Mac n'étais pas d'accord avec *.csv

Bonjour il y a quelques temps (2ans) j'avais rencontré le même problème, je n'arrivais pas a faire fonctionner la fonction DIR sous MAC

j'avais donc trouvé le site rondebruin où il avait fait une fonction "getfileonmacsithorwithoutsubfolders" utilisant les script sous mac (dont je suis incapable de modifier quoi que ce soit car j'y connais rien... )

voilà comment je l'utilisais : pour rechercher un fichier avec extension xlsx dont je connaissais le début du nom :

appel de la fonction :

monfichier = GetFilesOnMacWithOrWithoutSubfolders(Level:=1, ExtChoice:=0, FileFilterOption:=3, FileNameFilterStr:=nom, dossier:=chemin)

et la fonction elle même :

Function GetFilesOnMacWithOrWithoutSubfolders(Level As Long, ExtChoice As Long, FileFilterOption As Long, FileNameFilterStr As String, dossier As String) As String

'Ron de Bruin,Version 2 : 9 Nov 2012
'http://msdn.microsoft.com/fr-fr/library/office/jj613789(v=office.14).aspx
'http://www.rondebruin.nl/mac.htm
'Thanks to DJ Bazzie Wazzie(poster on MacScripter) for his great help.
    Dim scriptToRun As String
    Dim folderPath As String
    Dim FileNameFilter As String
    Dim Extensions As String

    On Error Resume Next
  ' folderPath = MacScript("choose folder as string")
    folderPath = dossier
    If folderPath = "" Then Exit Function

    On Error GoTo 0

    Select Case ExtChoice
    Case 0: Extensions = "(xls|xlsx|xlsm|xlsb)"  'xls, xlsx , xlsm, xlsb
    Case 1: Extensions = "xls"   'Only  xls
    Case 2: Extensions = "xlsx"  'Only xlsx
    Case 3: Extensions = "xlsm"  'Only xlsm
    Case 4: Extensions = "xlsb"  'Only xlsb
    Case 5: Extensions = "csv"   'Only csv
    Case 6: Extensions = "txt"   'Only txt
    Case 7: Extensions = ".*"    'All files with extension, use *.* for everything
    Case 8: Extensions = "(xlsx|xlsm|xlsb)"  'xlsx, xlsm , xlsb
    Case 9: Extensions = "(csv|txt)"   'csv and txt files
        'You can add more filter options if you want.
    End Select

    Select Case FileFilterOption
    Case 0: FileNameFilter = "'.*/[^~][^/]*\\." & Extensions & "$' "  'No Filter
    Case 1: FileNameFilter = "'.*/" & FileNameFilterStr & "[^~][^/]*\\." & Extensions & "$' "    'Begins with
    Case 2: FileNameFilter = "'.*/[^~][^/]*" & FileNameFilterStr & "\\." & Extensions & "$' "    ' Ends With
    Case 3: FileNameFilter = "'.*/([^~][^/]*" & FileNameFilterStr & "[^/]*|" & FileNameFilterStr & "[^/]*)\\." & Extensions & "$' "   'Contains
    End Select

    folderPath = MacScript("tell text 1 thru -2 of " & Chr(34) & folderPath & _
                           Chr(34) & " to return quoted form of it's POSIX Path")
    scriptToRun = scriptToRun & _
                  "set streamEditorCommand to " & _
                  Chr(34) & " |  tr  [/:] [:/] " & Chr(34) & Chr(13)
    scriptToRun = scriptToRun & _
                  "set streamEditorCommand to streamEditorCommand & " & _
                  Chr(34) & " | sed -e " & Chr(34) & "  & quoted form of (" & _
                  Chr(34) & " s.:." & Chr(34) & _
                "  & (POSIX file " & Chr(34) & "/" & Chr(34) & "  as string) & " & _
                  Chr(34) & "." & Chr(34) & " )" & Chr(13)
    scriptToRun = scriptToRun & "do shell script """ & "find -E " & _
                  folderPath & " -iregex " & FileNameFilter & "-maxdepth " & _
                  Level & """ & streamEditorCommand without altering line endings"

    On Error Resume Next
    myfiles = MacScript(scriptToRun)
    On Error GoTo 0
     'cette fonction est prevu pour renvoyer plusieurs fichiers donc a la fin il y a un retour chariot qu'il faut supprimer car nous on recherche qu'un seul fichier
    myfiles = Replace(myfiles, Chr(10), "")
    'retourne le fichier avec son chemin
GetFilesOnMacWithOrWithoutSubfolders = myfiles
End Function

comme toi tu recherche un fichier csv il faudra changer le Extchoice à 5

monfichier = GetFilesOnMacWithOrWithoutSubfolders(Level:=1,ExtChoice:=5, FileFilterOption:=3, FileNameFilterStr:=nom, dossier:=chemin)

fred

Je te remercie, Fred. Ca aide vraiment.

Bien cordialement,

Phong

Rechercher des sujets similaires à "utiliser fonction dir version mac"