Problème Macro PC vers Mac

TravailleurPiscines

Membre confirmé
25 Mai 2017
15
0
27
Bonjour,

J'ai cette macro qui me permet d'enregistrer un fichier dans un dossier.
Sur mon PC celle ci fonctionne parfaitement, or je suis souvent amener à travailler sur MAC.
Je n'arrive pas à la transformer pour la faire tourner dessus.

Pouvez vous m'aider?

Merci

Voici la macro :

Bloc de code:
Sub EnregistrerSous()

    Dim Fichier, Dossier
    Fichier = " MAGIfirst - " & ActiveSheet.Range("C4") & ".xlsm"
    Dossier = "C:\Users\oem\Desktop\DEVIS MAGILINE\"
    ThisWorkbook.SaveCopyAs Dossier & Fichier
    With Workbooks.Open(Dossier & Fichier)
        With .VBProject.VBComponents
            .Remove .Item("Module2")
        End With
        .Worksheets("DEVIS").Shapes("Rectangle 1").Delete
    End With
    MsgBox "MAGIfirst -" & " " & Range("C4") & " " & "ouvert", , "MAGIfirst -" & " " & Range("C4")
    ThisWorkbook.Close False
    Application.Quit
End Sub


Merci !
 
L'écriture de macros transportables demande un peu d'expérience.

Déjà, comme chemin d'accès, "C:\Users\oem\Desktop\DEVIS MAGILINE\" n'a évidemment aucun sens sur Mac. Pour le reste, ça devrait pouvoir aller, à vue de nez.

Mais ce serait bien que tu précises de quelle version d'Excel il est question, sur quelle version de Mac OS X...
 
Pas de remarque particulière chez moi, après modification du chemin :

Bloc de code:
Sub EnregistrerSous()
    Dim Fichier, Dossier
    Fichier = "MAGIfirst - " & ActiveSheet.Range("C4") & ".xlsm"
    Dossier = "/Users/oem/Desktop/DEVIS MAGILINE/"  ' pour Excel 2016
    'Dossier = "Startup B:Users:oem:Desktop:DEVIS MAGILINE:" ' pour Excel 2011
    ThisWorkbook.SaveCopyAs Dossier & Fichier
    With Workbooks.Open(Dossier & Fichier)
        With .VBProject.VBComponents
            .Remove .Item("Module2")
        End With
        .Worksheets("DEVIS").Shapes("Rectangle 1").Delete
    End With
    MsgBox "MAGIfirst -" & " " & Range("C4") & " " & "ouvert", , "MAGIfirst -" & " " & Range("C4")
    ThisWorkbook.Close False
    Application.Quit
End Sub

Je vérifie ce que ça donne sous Sierra (je suis sous Yosemite).

----------------------

Curieux, ça ne fonctionne pas sous Sierra. Faut que je creuse...
 
Dernière édition:
Je ne vois pas bien ce qu'on peut entendre par "confirmer que cela fonctionne à 100%". Tout ce que je peux dire, c'est que chez moi la macro telle que je l'ai corrigée fonctionne.

Pour ce qui est de rétrograder à Yosemite (ou peut-être à El Capitan, je n'ai pas testé non plus), ça dépend essentiellement de la machine que tu as : on ne peut jamais installer une version inférieure à celle qui a été fournie avec la machine. Si tu as une machine neuve, elle ne peut pas tourner sous Yosemite...
 
D'accord,

La machine que j'ai estun MacBook Pro 15' Touch Bar donc de base sous El Capitan je croit.

Après ce que je comprend pas c'estvpourquoi la macro fonctionne chez toi et non chez moi?

Tu es sous quel Excel? Le 2016 ou le 2011? Si le 2011 en quelle version?

Merci
 
J'ai testé avec les deux versions (2011 en 14.7.4 et 2016 en 15.36). Ça fonctionne sous Yosemite, mais pas sous ElCapitan ni sous Sierra. Ceci dit, je me demande si ce n'est pas un problème du fonctionnement en "bac à sable" (et donc un problème d'emplacement du dossier DEVIS MAGILINE). En tout cas sous Yosemite, j'ai la "classique" demande d'autorisation :

Capture d’écran.webp

Si j'ai cinq minutes, je regarderai si ça fonctionne en le plaçant dans un des dossiers qui restent accessibles aux applications (dans ~/Bibliothèque/Group Containers/UBF8T346G9.Office)...

-------------------------
Effectivement, en plaçant ce dossier dans ~/Bibliothèque/Group Containers/UBF8T346G9.Office/MyFolder, ça fonctionne sous El Capitan. Test sous Sierra en cours...
 
Dernière édition:
D'accord donc cela viendrais de l'OS et non du logiciel...

Quand je le fais sous Sierra avec le chemin indiqué je n'ai même pas de demande d'accès, j'ai juste l'erreur....

J'attend ton retour avec impatience
 
Test sous Sierra concluant, ça fonctionne sans problème. C'est bien le renforcement de la sécurité de Mac OS X qui est à l'origine du problème rencontré.

Il faut donc placer le dossier dans ~/Bibliothèque/Group Containers/UBF8T346G9.Office/MyFolder et modifier en conséquence la ligne dans la macro, elle devient donc :

Dossier = "/Users/oem/Bibliothèque/Group Containers/UBF8T346G9.Office/MyFolder" ' pour Office 2016


Note : le dossier "MyFolder" est à créer. Le nom n'est qu'un exemple, ça peut tout aussi bien être "Mon dossier" ou n'importe quoi.

Rappelons que, par défaut, le dossier ~/Bibliothèque (la Bibliothèque du compte utilisateur - à ne pas confondre avec celle qui est à la racine du disque dur ou celle qui est dans /Système) est masqué. On y accède par le menu "Aller" du Finder en tenant la touche "Option" enfoncée.
On peut aussi demander à ce que ce dossier ne soit plus masqué dans les "Options de présentation" du dossier "Départ" du compte utilisateur (celui avec l'icône de petite maison).
 
Oui, dans la mesure où il y a interaction avec une macro. Mais rien ne t'empêche de mettre un alias de ce dossier sur le bureau... ;)
 
Bon, même en changeant le chemin j'ai toujours une erreur....

Voici le code :
Bloc de code:
Sub EnregistrerSous()

    Dim Fichier, Dossier
    Fichier = " MAGIfirst - " & ActiveSheet.Range("C4") & ".xlsm"
    Dossier = "/Utilisateurs/pierrickrousset/Bibliothèque/Group Containers/UBF8T346G9.Office/NP PISCINES/DEVIS MAGILINE"
    ThisWorkbook.SaveCopyAs Dossier & Fichier
    With Workbooks.Open(Dossier & Fichier)
        With .VBProject.VBComponents
            .Remove .Item("Module2")
        End With
        .Worksheets("DEVIS").Shapes("Rectangle 1").Delete
    End With
    MsgBox "MAGIfirst -" & " " & Range("C4") & " " & "ouvert", , "MAGIfirst -" & " " & Range("C4")
    ThisWorkbook.Close False
    Application.Quit
End Sub

et voici l'erreur :
http://www.cjoint.com/c/GEAtSvTff0P

Merci =)
 
Et as-tu vérifié que le chemin d'accès correspond bien ? Si tu fais glisser le fichier dans une fenêtre du Terminal, tu obtiens bien ce chemin là, exactement ?
 
Quand je fais "Lire les informations" de mon dossier, l'emplacement est : DISQUE MAC > Utilisateurs > pierrickrousset > Bibliothèque > Group Containers > UBF8T346G9.Office > NP PISCINES > DEVIS MAGILINE

Donc ma ligne de macro est = "
Dossier = "/Utilisateurs/pierrickrousset/Bibliothèque/Group Containers/UBF8T346G9.Office/NP PISCINES/DEVIS MAGILINE""

Or j'ai une erreur sur la ligne "
ThisWorkbook.SaveCopyAs Dossier & Fichier", la même que je t'ai envoyé.

Merci
 
Essaye en mettant "/Utilisateurs/pierrickrousset/Library/Group Containers/UBF8T346G9.Office/NP PISCINES/DEVIS MAGILINE" (Library, plutôt que Bibliothèque)...
 
Tout en laissant "Utilisateurs" ou en mettant "Users"?

Edit: même en mettant "Library", j'ai la même erreur, il y aurait moyen que tu postes la macro qui fonctionne chez toi?

Edit2: En mettant "Users" à la place de "Utilisateurs", le fichier s'enregistre mais pas dans le dossier choisi et en se réouvrant, comme le demande la macro, me fait planter Excel
 
Dernière édition:
Oui, "Users", bien sûr (quand on est en chemin posix, c'est en US, a priori), possible que ça joue, là aussi. Je reconnais que je n'avais pas fait la correction (j'ai saisi les chemins à la main).

Bloc de code:
Sub EnregistrerSous()
    Dim Fichier, Dossier
    Fichier = "MAGIfirst - " & ActiveSheet.Range("C4") & ".xlsm"
    Dossier = "/Users/pierrickrousset/Library/Group Containers/UBF8T346G9.Office/MyProject/DEVIS MAGILINE/" ' pour Excel 2016
    'Dossier = "DISQUE MAC:Users/pierrickrousset/Library/Group Containers/UBF8T346G9.Office/MyProject/DEVIS MAGILINE/" ' pour Excel 2011
    ThisWorkbook.SaveCopyAs Dossier & Fichier
    With Workbooks.Open(Dossier & Fichier)
        With .VBProject.VBComponents
            .Remove .Item("Module2")
        End With
        .Worksheets("DEVIS").Shapes("Rectangle 1").Delete
    End With
    MsgBox "MAGIfirst -" & " " & Range("C4") & " " & "ouvert", , "MAGIfirst -" & " " & Range("C4")
    ThisWorkbook.Close False
    Application.Quit
End Sub

Et je confirme que ça fonctionne sans problème sous Sierra, chez moi... ;)