Application.SaveAs Filename avec Word depuis Excel

Bonjour à tous,

j'ai ici une macro que je fais évoluer depuis longtemps.

Le but est de copier un tableau Excel dans un document Word préexistant (chemin),

et c'est à la fin que je reste coincé depuis plusieurs jours...

Je souhaite que le nom par défaut apparaisant dans la boite de dialogue "wordapp.FileDialog(msoFileDialogSaveAs)" .

Cependant j'ai un message d'erreur à la ligne Application.SaveAs Filename:=.SelectedItems(1) & "\" & VariableNom .

"Erreur 438: propriété ou méthode non gérée par cet objet"

Quelqu'un a t'il une piste?

Merci.

Sub Fichierderef()

'Obtention du chemin d'accs ˆ comparer
ThisWorkbook.Sheets("En tête compte rendu").Range("i1") = Application.GetOpenFilename(, , "Veuillez choisir le fichier vierge pour compte rendu")

End Sub
Sub ouvrirdoc()

'Attribution de variables
Dim Chemin As String
Dim test As String
Dim Numb As Integer
Dim REP As FileDialog
Dim VariableNom As String

'Attribution d'une valeur de base aux variables
Chemin = Sheets("En tête compte rendu").Range("i1")
Numb = ActiveCell.Row - 1
VariableNom = Sheets("Récapitulatif").Cells(Numb + 1, 5) & " " & Sheets("Récapitulatif").Cells(Numb + 1, 6) & " " & "PSY-CONF" & ".doc"
'Test presence document Compte rendu vierge"
If Sheets("En tête compte rendu").Range("i1") = "" Or Sheets("En tête compte rendu").Range("i1") = Faux Or Dir(Chemin) = "" Then
MsgBox "Veuillez assigner un modèle de compte rendu Word.", vbInformation
ThisWorkbook.Sheets("En tête compte rendu").Range("i1") = Application.GetOpenFilename(, , "Veuillez choisir le fichier vierge pour compte rendu")
If ThisWorkbook.Sheets("En tête compte rendu").Range("i1") = False Then
Exit Sub
End If
End If

'Désactivation rafraichissement d'écran
screenupdate = False

'Attribution de la nouvelle valeure aux variables
Chemin = Sheets("En tête compte rendu").Range("i1")

'CopierCompteRendu et retour sur onglet Récapitulatif
Sheets("En tête compte rendu").Range("A1:C21").Copy

'Ouverture du fichier word
Set wordapp = CreateObject("word.Application")
wordapp.Visible = True
wordapp.Documents.Open Chemin
wordapp.ActiveWindow.ActivePane.VerticalPercentScrolled = 1

'Sélection de l'application, de tout le contenu, et collage du contenu Excel
With wordapp.Selection
.WholeStory
.Select
.Paste
End With

'Word apparait au premier plan et le document est présenté à partir du haut de page
With wordapp
.Activate
.ActiveWindow.ActivePane.VerticalPercentScrolled = 1

'Apparition dans Word d'une boite de dialogue d'enregistrement ET nom par défaut

    Set REP = wordapp.FileDialog(msoFileDialogSaveAs)
    With REP
        .AllowMultiSelect = False
        .InitialFileName = VariableNom
        If .Show = True Then
       wordapp.SaveAs Filename:=.SelectedItems(1)
        End If
    End With

'En arrière fond, Excel retourne à l'onglet "Récapitulatif"
Sheets("Récapitulatif").Activate

'Boite de dialogue pour enregistrer le document automatiquement avec le nom
End With
End Sub

Bonjour,

modifie l'ordre des méthodes appelées dans fileDialog, dans ton code tu donnes le nom initial après l'affichage de la boite de dialogue.

With wordapp.FileDialog(msoFileDialogSaveAs)
        .InitialFileName = "Bubu"
        .Show
    End With

Merci de cette proposition.

je rencontre à présent ce problème que ça n'enregistre pas.

J'ai donc choisi la méthode consistant à enregistrer la valeur de la MSOFileDialog dans une variable puis d'ffectuer un application.saveas. (code mis à jour dans le premier post: je sais ça fait désordre, désolé).

Cependant, impossible de me dépétrer avec la ligne wordapp.SaveAs Filename:=.SelectedItems(1)

Elle génère une erreur.

Si tu as une idée, je suis preneur.

merci de ton aide

Bonsoir,

essaie ceci

Sub ouvrirdoc()

'Attribution de variables
    Dim Chemin As String
    Dim test As String
    Dim Numb As Integer
    Dim REP As FileDialog
    Dim VariableNom As String

    'Attribution d'une valeur de base aux variables
    Chemin = Sheets("En tête compte rendu").Range("i1")
    Numb = ActiveCell.Row - 1
    VariableNom = Sheets("Récapitulatif").Cells(Numb + 1, 5) & " " & Sheets("Récapitulatif").Cells(Numb + 1, 6) & " " & "PSY-CONF" & ".doc"
    'Test presence document Compte rendu vierge"
    If Sheets("En tête compte rendu").Range("i1") = "" Or Sheets("En tête compte rendu").Range("i1") = Faux Or Dir(Chemin) = "" Then
        MsgBox "Veuillez assigner un modèle de compte rendu Word.", vbInformation
        ThisWorkbook.Sheets("En tête compte rendu").Range("i1") = Application.GetOpenFilename(, , "Veuillez choisir le fichier vierge pour compte rendu")
        If ThisWorkbook.Sheets("En tête compte rendu").Range("i1") = False Then
            Exit Sub
        End If
    End If

    'Désactivation rafraichissement d'écran
    screenupdate = False

    'Attribution de la nouvelle valeure aux variables
    Chemin = Sheets("En tête compte rendu").Range("i1")

    'CopierCompteRendu et retour sur onglet Récapitulatif
    Sheets("En tête compte rendu").Range("A1:C21").Copy

    'Ouverture du fichier word
    Set wordapp = CreateObject("word.Application")
    wordapp.Visible = True
    wordapp.Documents.Open Chemin
    wordapp.ActiveWindow.ActivePane.VerticalPercentScrolled = 1
    Set LeDoc = activedocument

    'Sélection de l'application, de tout le contenu, et collage du contenu Excel
    With wordapp.Selection
        .WholeStory
        .Select
        .Paste
    End With

    'Word apparait au premier plan et le document est présenté à partir du haut de page
    With wordapp
        .Activate
        .ActiveWindow.ActivePane.VerticalPercentScrolled = 1

        'Apparition dans Word d'une boite de dialogue d'enregistrement ET nom par défaut

        Set REP = wordapp.FileDialog(msoFileDialogSaveAs)
        With REP
            .AllowMultiSelect = False
            .InitialFileName = VariableNom
            If .Show = True Then
                LeDoc.SaveAs Filename:=.SelectedItems(1)
            End If
        End With

        'En arrière fond, Excel retourne à l'onglet "Récapitulatif"
        Sheets("Récapitulatif").Activate

        'Boite de dialogue pour enregistrer le document automatiquement avec le nom
    End With
End Sub

Bonjour H2SO4,

merci de ta réponse.

Je regarde dès mon retour sur le poste de travail et te dis.

Bonne journée

Bonjour H2So4,

toujours le message d'erreur: erreur d'exécution '438' Propriété ou méthode non gérée par cet objet.

SI tu as une nouvelle idée je suis preneur.

H2SO4

j'ai trouvé, il manquait simplement l'objet wordapp dans ta proposition

LeDoc=wordapp.activedocument

Merci beaucoup de ton aide en tout cas.

C'était précieux;

Rechercher des sujets similaires à "application saveas filename word"