Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL pour MAC Vba - Macro enregistrer sous...

ArnaudSi

XLDnaute Nouveau
Bonjour,

J'essaye en vain d'exécuter une macro pour enregistrer un fichier sur un dossier en particulier.

Le défi ici consiste à ce que la macro enregistre le fichier sur un dossier précis ( dossier en réseau de type Dropbox ) sur chaque poste.

Est ce posible?

Merci.

Ci joint le code :

VB:
Sub Enregistrer_Fichiers()
Dim chemin As String, Fichier As String
With ThisWorkbook
nom = Environ("USER")
chemin = "Macintosh HD/Utilisateurs/" & nom & "/Synologydrive/Hello/Suivi/"
    With Sheets("Commande").Select
    Fichier = "Sauvegarde " & Range("B5").Value & " Ref " & Range("G5").Value & " Saisie le " & Format(Now(), "dd-mm-yyyy à Hh-Nn") & ".xls" 'Nom du fichier avec le nom du client
        ActiveWorkbook.SaveAs Filename:= _
        chemin & Fichier, _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    End With
    Sheets("Calcul").Select
    MsgBox Fichier & (" a été sauvegardé dans le dossier.")
End With
End Sub
 

job75

XLDnaute Barbatruc
Bonsoir ArnaudSi,

Ce n'est vraiment pas un défi d'enregistrer dans un dossier précis s'il existe...

Mais votre code ne va pas, remplacez ces 2 lignes :
VB:
With Sheets("Commande").Select
Fichier = "Sauvegarde " & Range("B5").Value & " Ref " & Range("G5").Value & " Saisie le " & Format(Now(), "dd-mm-yyyy à Hh-Nn") & ".xls" 'Nom du fichier avec le nom du client
par celles-ci :
Code:
With Sheets("Commande")
    Fichier = "Sauvegarde " & .Range("B5") & " Ref " & .Range("G5") & " Saisie le " & Format(Now, "dd-mm-yyyy à hh-mm")
Avec SaveAs le fichier sera enregistré en .xlsm, pour l'enregistrer en .xls il faut modifier le FileFormat.

A+
 

ArnaudSi

XLDnaute Nouveau
Bonjour Job57,

Merci pour votre réponse.

Une fenêtre m'indique :
Erreur d'exécution "1004" :
Vos modifications n'ont pas pu être enregistrées dans "Sauvegarde Ref Saisie le 13-11-2020 à 08-370" en raison d'une violation de partage. Essayez d'enregistrer vos modifications dans un fichier différents.

J'ai essayé de changer le chemin vers un dossier non partagé mais une autre erreur d'exécution 1004 apparait aussi.

Merci.
 

ArnaudSi

XLDnaute Nouveau
Merci pour votre réponse.

Après quelques recherches je crois que le problème est que lorsque je demande le nom d'utilisateur je reçoit une réponse de type "nom" & " " & "prénom"; alors que la réponse attendu pour trouver le chemin est "nomprénom" (Il ne doit pas y avoir d'espace entre le nom et le prénom) .

VB:
MsgBox "Current user is " & Application.UserName


Mais pour obtenir ce résultat j'ai trouver une formule pour palier ce problème :

Code:
Function GetUserNameMac() As String
    Dim sMyScript As String

    sMyScript = "set userName to short user name of (system info)" & vbNewLine & "return userName"

    GetUserNameMac = MacScript(sMyScript)
End Function


Mais je ne sais pas comment l'intégrer dans la macro :

Code:
Sub Enregistrer_Fichiers()
Dim chemin As String, Fichier As String
With ThisWorkbook
nom = Environ("USER")
chemin = "Macintosh HD/Utilisateurs/" & nom & "/Synologydrive/Hello/Suivi/"
    With Sheets("Commande")
    Fichier = "Sauvegarde " & .Range("B5") & " Ref " & .Range("G5") & " Saisie le " & Format(Now, "dd-mm-yyyy à hh-mm")'Nom du fichier avec le nom du client
        ActiveWorkbook.SaveAs Filename:= _
        chemin & Fichier, _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    End With
    Sheets("Calcul").Select
    MsgBox Fichier & (" a été sauvegardé dans le dossier.")
End With
End Sub
 

ArnaudSi

XLDnaute Nouveau
Bonjour

J'ai trouvé une solution qui fonctionne :

VB:
Sub Enregistrer_Fichiersvs_2()
Dim chemin As String, Fichier As String
With ThisWorkbook
nom = Environ("USER")
chemin = "Macintosh HD/Utilisateurs/" & nom & "/Synologydrive/Hello/Suivi/"
    With Sheets("Commande")
    Fichier = "Sauvegarde " & .Range("B5") & " Ref " & .Range("G5") & " Saisie le " & Format(Now, "dd-mm-yyyy à hh-mm")
    ChDir "/Users/" & nom & "/SynologyDrive/Hello/Suivi/"
    ActiveWorkbook.SaveAs FileName:= _
         "/Users/" & nom & "/SynologyDrive/Hello/Suivi/" & Fichier & ".xlsm", _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    End With
        Sheets("Calcul").Select
    MsgBox Fichier & (" a été sauvegardé dans le dossier.")
End With
End Sub

Merci encore,
À bientôt!
 

Discussions similaires

Réponses
3
Affichages
742
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…