Excel VBA sous Mac

Fermé
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 - Modifié le 13 mai 2017 à 17:51
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 - 15 mai 2017 à 14:32
Bonjour,
Sur le forum Excel sur dans une discussion je me casse les dents sur un code en VBA pour fichier Excel sous Mac
Et ça m’énerve de ne pas trouver.
J’ai un répertoire dans lequel se trouve un fichier Excel et un sous répertoire d’archivage
Dans le fichier Excel j’ai écrit ce code VBA avec un compteur cellule E5
Une copie de la Feuille Devis est créée et archivée dans le sous répertoire, ce code fonctionne parfaitement Sur PC
Sub Archivage_Devis()
chemin = ActiveWorkbook.Path
nom = Format([E5], "0000") & ".xls"
'---------------------------------------Création du fichier temporaire
On Error Resume Next
Application.DisplayAlerts = False '-------Annulation des alertes
'---------------------Nom du fichier à créerr extension xls
ActiveSheet.Shapes.Range(Array("Bouton")).Visible = False
Sheets("Devis").Copy
' --------------------------------------- syntaxe pour PC
ActiveWorkbook.SaveAs chemin & "\Archives Devis\" & nom, FileFormat:=xlExcel8 ' ou adresse si le nom est dans une cellule Range("E2").Value & ".xls"
' -------------------------------------- syntaxe pour Mac
ActiveWindow.Close
Application.DisplayAlerts = True '-------rétablissement des alertes
'---------------------------------------Après l'archivage le fichier se réinitialise
ActiveSheet.Shapes.Range(Array("Bouton")).Visible = True
Range("E4,A13:G15,D17:F20,B22:F25,B27,F28").ClearContents
If Range("I5").Value <> 1 Then
Range("E5").Value = Range("E5").Value + 1
End If
[E5].Select
ActiveWorkbook.Save
End Sub

Ce code doit également être utilisé sur Mac et là ça pêche et n’arrive pas à enregistrer le fichier d’archivage dans le sous répertoire, quel que soit le code, il s’enregistre dans le répertoire source
J’ai testé des dizaines de lignes avec le même résultat
ActiveWorkbook.SaveAs chemin + Application.PathSeparator + Archives Devis + nom, FileFormat:=xlExcel8
Ou encore
ActiveWorkbook.SaveAs chemin & Application.PathSeparator & Archives Devis & nom, FileFormat:=xlExcel8
Etc … le fichier d'archivage s'enregistre dans le répertoire source et non dans le sous répertoire
Si un Excelliste sur Mac a la réponse je suis preneur, si non je déplacerais plus tard la discussion sur le forum programmation

A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
A voir également:

6 réponses

Aliboron Martin Messages postés 3440 Date d'inscription samedi 1 janvier 2011 Statut Contributeur Dernière intervention 18 avril 2024 927
13 mai 2017 à 18:17
De quelle version d'Excel est-il question ? Qu'est-ce que c'est que ces antislash dans le chemin d'accès ? Sur Mac c'est soit : (Excle 2011), soit / (Excel 2016). Le mieux c'est d'utiliser une variable Application.PathSeparator, comme ça, pas de souci !

Chez moi, en tout cas, ton code fonctionne sans problème, aussi bien avec Excel 2011 qu'avec Excel 20126 (du moins pour la partie création et enregistrement d'une copie de la feuille "Devis").

0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
Modifié le 13 mai 2017 à 21:02
Bonsoir Aliboron,

Le code sur PC fonctionne parfaitement quelque soit la version Excel 2007, 2010 etc
sur PC il faut utiliser les antislash comme séparateur.

Le problème est sur mac le fichier s'enregistre dans le répertoire et non dans le sous répertoire même en utilisant la syntaxe Application.PathSeparator ce que j'ai déjà fait
ActiveWorkbook.SaveAs chemin + Application.PathSeparator + Archives Devis + nom, FileFormat:=xlExcel8

Ou encore
ActiveWorkbook.SaveAs chemin & Application.PathSeparator & Archives Devis & nom, FileFormat:=xlExcel8


il faudrait que la copie s'enregistre dans le sous répertoire nommée Archives Devis, et cet cette ligne de commande qui fonctionne parfaitement sur PC mais coince sur mac
ActiveWorkbook.SaveAs chemin & "\Archives Devis\" & nom, FileFormat:=xlExcel8

A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
0
Aliboron Martin Messages postés 3440 Date d'inscription samedi 1 janvier 2011 Statut Contributeur Dernière intervention 18 avril 2024 927
Modifié le 14 mai 2017 à 00:17
Mike-31 :
il faudrait que la copie s'enregistre dans le sous répertoire nommée Archives Devis, et cet cette ligne de commande qui fonctionne parfaitement sur PC mais coince sur mac
ActiveWorkbook.SaveAs chemin & "\Archives Devis\" & nom, FileFormat:=xlExcel8

Mais comme vu, ça fonctionne sans problème chez moi, aussi bien avec Excel 2011 (séparateur :) qu'avec Excel 2016 (séparateur /) et sous Windows (séparateur \) :



La seule différence, chez moi, c'est que j'ai mis en commentaire la ligne ActiveSheet.Shapes.Range(Array("Bouton")).Visible = False parce que j'avais la flemme d'ajouter un bouton (inutile).

Dans ton exemple, tu n'as pas mis de guillemets à "Archive Devis", mais je suppose que c'est dans la transcription. En réalité, tu as bien ça, je présume :
PathSep = Application.PathSeparator
ActiveWorkbook.SaveAs chemin & PathSep & "Archives Devis" & PathSep & nom, FileFormat:=xlExcel8


Quand tu exécutes en pas à pas, tout se passe bien ?


Bonjour chez vous !
Bernard
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
15 mai 2017 à 10:31
Salut Aliboron,

ok ça marche, le fichier s'enregistre bien dans le sous répertoire.

mais j'ai un autre problème sous toujours sur PC avant la création d'une copie de ma feuille Excel dont le nom est renseignée par la cellule E5 je testais si le fichier existait déjà avec cette ligne de commande
If Dir(chemin & "\Archives Devis\" & nom) <> "" Then
MsgBox "Un devis nommé " & [E5] & ".xls" & " est déjà archivé !", , "demande rejetée."
Exit Sub
End If


bien évidemment cette ligne ne fonctionne pas sous Mac alors j'ai essayé de bidouiller sans succès à partir de ta ligne de code
If Dir(chemin & PathSep & "Archives Devis" & PathSep & nom) <> "" Then
MsgBox "Un devis nommé " & [E5] & ".xls" & " est déjà archivé !", , "demande rejetée."
Exit Sub
End If


quelque soit les modifications apportées il me retourne que le fichier existe déjà alors qu'il ne figure pas dans le sous répertoire.
vois tu ou le code pêche.
difficile de passer de PC qui n'a plus trop de secret à Mac, je te remercie pour ton aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Aliboron Martin Messages postés 3440 Date d'inscription samedi 1 janvier 2011 Statut Contributeur Dernière intervention 18 avril 2024 927
Modifié le 15 mai 2017 à 11:33
Ah, bienvenue dans le monde merveilleux du développement de macros compatibles Windows et Mac, de la compilation conditionnelle, etc.

Le mieux, c'est de voir tout ce qu'a déjà écrit Ron de Bruin à ce sujet sur son site. Et plus particulièrement, concernant la commande Dir, cette page-ci. Tu as de grandes découvertes devant toi... ;-)


Bonjour chez vous !
Bernard
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
15 mai 2017 à 14:32
Re,

Merci pour tes encouragement, je vais me procurer des l'aspirine et me plonger dans ces codes compatibles, mais à petite dose
0