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.PathSeparatorcomme 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 Functioncomme 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