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

Microsoft 365 Worksheet.saveas

Trotilde

XLDnaute Nouveau
Bonjour,

Je souhaite réaliser une macro qui me permette
1. à l'ouverture de mon fichier : OK trouvé
2. d'ouvrir le pop up Save As : OK trouvé
3. d'automatiquement sélectionner un chemin d'accès qui contient le nom d'utilisateur Windows
Ex type C:\Users\UserName\NO BACKUP\ [oui il y a en plus un espace dans le nom de dossier ...]
avec UserName étant récupéré de la session Windows de l'utilisateur
4. laisser le choix à l'utilisateur de choisir le nom de fichier
5. Enregistrer sous format .xlsx le fichier [alors que le format initial était .xlsm]

Points 1 et 2 ok avec le 4.

Le code ci-dessous fonctionne mais m'enregistre un fichier dans un format inconnu que je n'arrive pas à ouvrir (car pas d'extension).
Si je change la liste ThisWorkbook.SaveAs a par ThisWorkbook.SaveAs a & ".xlsx", j'obtiens l'erreur 1004 lorsque je clique sur Enregistrer.

VB:
Private Sub Workbook_Open()

Dim a As String

Dim Msg, Style, Title, Response
Msg = "Message"    ' Define message.
Style = vbOKOnly + vbInformation  ' Define buttons.
Title = "User Box"    ' Define title.

        ' Display message.
Response = MsgBox(Msg, Style, Title)
If Response = vbOK Then    ' User chose OK.
      a = Application.GetSaveAsFilename
        If Format(a) <> False Then
            ThisWorkbook.SaveAs a
        End If ' Perform some action.
Else         ' Perform no action.
End If

End Sub

Les points 3 et 5 ne sont donc pas résolus... pourriez vous m'aider svp ?

Merci d'avance
 
Solution
Bonjour Trotilde, bonjour le forum,

Peut-être comme ça :

VB:
Private Sub Workbook_Open()
Dim Msg As String, Style As Integer, Title As String, Response As Integer
Dim UN As String
Dim CA As String
Dim A As Variant

Msg = "Message"
Style = vbOKOnly + vbInformation
Title = "User Box"
UN = Application.UserName
CA = "C:\Users\" & UN & "\Documents\NO BACKUP\"
Response = MsgBox(Msg, Style, Title)
If Response = vbOK Then
    A = Application.GetSaveAsFilename(CA, "Fichier Excel,*.xlsx")
    If A <> False Then ThisWorkbook.SaveAs A, FileFormat:=-4143
End If
End Sub

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Trotilde, bonjour le forum,

Peut-être comme ça :

VB:
Private Sub Workbook_Open()
Dim Msg As String, Style As Integer, Title As String, Response As Integer
Dim UN As String
Dim CA As String
Dim A As Variant

Msg = "Message"
Style = vbOKOnly + vbInformation
Title = "User Box"
UN = Application.UserName
CA = "C:\Users\" & UN & "\Documents\NO BACKUP\"
Response = MsgBox(Msg, Style, Title)
If Response = vbOK Then
    A = Application.GetSaveAsFilename(CA, "Fichier Excel,*.xlsx")
    If A <> False Then ThisWorkbook.SaveAs A, FileFormat:=-4143
End If
End Sub
 

Discussions similaires

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