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 Sub

Merci 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 Function

Vous 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.

capture d e cran 2023 10 27 a 11 17 58

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

12macgetfiles.xlsm (26.96 Ko)

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

Rechercher des sujets similaires à "adapter code windows mac"