Bonjour à tous,
j'ai un soucis concernant la construction d'une macro en VBA, consistant en un listing des fichiers xls, xlsx et xlsb dans un dossier et ses sous-dossiers afin d'extraire l'une de leur feuille pour l'enregistrer au format csv.
Je suis sous Mac OS, excel est en version 15.15, et je suis novice dans le dev de macros VBA.
J'ai suivi les conseils de http://www.rondebruin.nl/ afin d'avancer sur le sujet. En fait, le code suivant :
M'affiche bien les fichiers présents dans le dossier sélectionné ainsi que dans ses sous-répertoires. Néanmoins ce script sera lancé au sein d'un script bash, et donc j'ai besoin de sélectionner le dossier sans ouvrir le prompt de sélection de dossier. Je l'ai donc sauvegardé dans la cellule A1 en rajoutant la ligneCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Option Explicit Dim MyFiles As String Sub ExtractFilesToCSV() Dim ScriptToRun As String Dim folderPath As String Dim FileNameFilter As String Dim Extensions As String Dim Level As Long Level = 2 folderPath = MacScript("choose folder as string") folderPath = MacScript("tell text 1 thru -2 of " & Chr(34) & folderPath & _ Chr(34) & " to return quoted form of it's POSIX Path") Extensions = "(xls|xlsx|xlsm|xlsb)" FileNameFilter = "'.*/[^~][^/]*\\." & Extensions & "$' " folderPath = MacScript("tell text 1 thru -2 of " & Chr(34) & folderPath & _ Chr(34) & " to return quoted form of it's POSIX Path") folderPath = Replace(folderPath, "'\''", "'\\''") ScriptToRun = ScriptToRun & "do shell script """ & "find -E " & _ folderPath & " -iregex " & FileNameFilter & "-maxdepth " & _ Level & """ " MyFiles = MacScript(ScriptToRun) MsgBox MyFiles end sub
Puis je l'ai remplacé par la ligneCode:ActiveWorkbook.Sheets("Feuil1").Range("A1").Value = folderPath
Et là, ça marche ... tant que je ne quitte pas excel. Si je le relance, alors il me met l'erreurCode:folderPath = ActiveWorkbook.Sheets("Feuil1").Range("A1").Value
Erreur d'exécution « 5 »:
Argument ou appel de procédure incorrect
Quelqu'un aurait une idée pour faire persister cela même lorsque l'on relance excel ?
Merci d'avance !
PS : l'option du MacID ne marche pas pour moi