Adapter du code d'Excel Windows vers Excel Mac
Bonjour;
j'ai un fichier avec des macros en VBA qui fonctionnent très bien sur mon fichier lorsque je suis sur windows, mais qui ne fonctionne pas sous mac.
J'ai essayé de l'adapter mais mes connaissances en VBA sont assez legère et je n'y arrive pas.
Voici ce que je souhaite faire :
Lorsque je lance ma macro, je souhaite selectionner un dossier et importer la liste des fichiers qui se trouve dans le dossier ET les sous dossier et les copier dans la cellule A2 (A1 sera réservé pour le nom de la colonne)
Le problème viendrait de la fonction "CreateObject" qui ne fonctionne pas sous Mac.
J'ai une version Excel Mac (version 16)
Voici mon code qui fonctionne sous windows :
Dim ligne
Sub importation_liste()
Application.ScreenUpdating = False
racine = ChoixDossier() ' choix du répertoire.
If racine = "" Then Exit Sub
Range("A2:F20000").ClearContents 'supprimer les anciennes données
Range("l1:p20000").ClearContents
Range("A2").Select 'Selectionner la cellule A2 pour importer les fichiers
Set fs = CreateObject("Scripting.FileSystemObject")
Set dossier_racine = fs.GetFolder(racine)
ligne = 2
Lit_dossier dossier_racine, 1
End Sub
Sub Lit_dossier(ByRef dossier, ByVal niveau)
Cells(ligne, 12) = dossier.Name 'Nom du dossier
Cells(ligne, 13) = dossier.Files.Count 'Nombre de fichier
For Each F In dossier.Files
Cells(ligne, 1) = dossier.Name 'Nom dossier
Cells(ligne, 2) = F.Name 'Nom du fichier
Cells(ligne, 2).Interior.ColorIndex = xlNone
Cells(ligne, 3) = dossier.Files.Count
Cells(ligne, 5) = dossier.Name & ".jpg" 'ajoute l'extension jpg à la classe pour les BC'
Cells(ligne, 6) = Left(F.Name, Len(F.Name) - 4) 'supprime l'extension, à condition que celle ci soit de 3 caractères + le point'
If F.Attributes And vbHidden Then Cells(ligne, 4) = "Caché" 'dectection des fichiers cachés'
ligne = ligne + 1
Next
For Each d In dossier.SubFolders
Lit_dossier d, niveau + 1
Next
End SubMerci d'avance.
Bonsoir,
Désolé mais c'est impossible à mes yeux
Vous utilisez une API Windows donc impossible à faire fonctionner sur OS Mac
En plus Ici il y a très peu de spécialistes Mac
Bonne soirée
Bonjour,
ce serait bien de l'indiquer dans ton profil que tu veux sur Mac.
Les particularités vont à nouveau se présenter
eric
Bonjour,
j'ai un fichier avec des macros en VBA qui fonctionnent très bien sur mon fichier lorsque je suis sur windows, mais qui ne fonctionne pas sous mac.
Là cela m'étonnerait car déjà sous windows le code bloque sur la ligne racine = Choixdossier() en envoyant un message "sub non définie"
Pour ce qui est du code sous MAC, c'est impossible à faire fonctionner. Déjà voir la remarque de BrunoM45.
Votre fichier dans lequel se trouve le code est dans le même répertoire que les fichiers et dossiers à lister ?
Ce serait bien que vous disiez où se trouvent les fichiers à lister... sur le Finder ou ailleurs ?
Cordialement
Bonjour et merci pour vos réponses.
Là cela m'étonnerait car déjà sous windows le code bloque sur la ligne racine = Choixdossier() en envoyant un message "sub non définie"
effectivement, j'ai oublier de joindre la fin du code concernant le "choixdossier"
Function ChoixDossier()
If Val(Application.Version) >= 10 Then
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ActiveWorkbook.Path & "\"
.Show
If .SelectedItems.Count > 0 Then
ChoixDossier = .SelectedItems(1)
Else
ChoixDossier = ""
End If
End With
Else
ChoixDossier = InputBox("Répertoire?")
End If
End FunctionVous me dite que c'est impossible à adapter ? Il n'existe donc pas la possibilité d'écrire la liste des fichiers d'un répertoire sous mac ?
Pour donner plus de détail à mon projet, je fais des photos scolaire et ce fichier me sert de bdd pour générer les bons de commande.
Mon arborescence est la suivante :
Un dossier par école qui comprend un sous dossier administratif dans lequel se trouve mon fichier excel et un dossier indiv qui comprend un sous dossier par classe avec les photos des enfants.
Mon but, lorsque je lance ma macro, je choisis le dossier "indiv" qui va me lister l'ensemble des photos comprise dans les dossier et sous dossier (juste le nom, pas le chemin) et me les coller en A2, A3, A4....
Je dois également utiliser cette même fonction dans un autre fichier ou j'importe que la classe (un onglet par classe) donc je dois choisir le dossier ou le sous dossier.
Je joins également mon fichier complet qui fonctionne sous windows.
Re,
Je suis sous excel 2011 et n'ayant pas Excel 2016, je vous propose de chargez ce fichier et de faire juste un test en sélectionnant votre dossier "indiv"
Il y a plein d'instructions qui ne vous servent pas mais si cela fonctionne bien avec votre version MAC, il est plus simple d'adapter
De F9 à I9, vous pouvez paramétrer ce que vous voulez avoir comme information
Si besoin d'info dites-moi
NB : le fichier n'est pas de moi et vient de l'excellent site de Ron de Bruin
Ca semble bien fonctionner.
Je vais voir pour l'adapter pour coller un peu plus précisément à mon projet mais ça fait la partie principal.
Merci beaucoup.
Sujet résolu