Fermeture d'un fichier ouvert avec ActiveWorkbook.SaveAs Filename

  • Initiateur de la discussion Initiateur de la discussion jlp035
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jlp035

XLDnaute Occasionnel
Bonjour,
mon morceau de programme copie la feuille active dans un nouveau fichier et le convertit en pdf( ar version excel 2003).
Mais à partir la ligne "ActiveWorkbook.Close " le programme ne semble plus repondre..
Je suis donc à la recherche d'une astuce ou solution qui me fasse reveveir dans mon document source apres avoir creer le document en pdf.

Merci par avance.
 

Pièces jointes

Re : Fermeture d'un fichier ouvert avec ActiveWorkbook.SaveAs Filename

Bonjour jp035

Vois si tu peux t'inspirer de ce code

Code:
Sub test()
MonNOm = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:="Nfa"
Workbooks.Open (MonNOm)
Workbooks("Nfa.xls").Close
End Sub
 
Re : Fermeture d'un fichier ouvert avec ActiveWorkbook.SaveAs Filename

Bonjour,

Code:
Sub test()
   
   ' Créer un nouveau classeur
    Dim wkDeTravail As Workbook
    Set wkDeTravail = Workbooks.Add(xlWBATWorksheet)
    
    ' Sélection de la feuille à copier
    Dim wsACopier As Worksheet
    Set wsACopier = ThisWorkbook.Worksheets("Documents")
    Dim sPath As String
    sPath = Workbooks(ThisWorkbook.Name).Path
    
    ' Copier / Coller la feuille
    wsACopier.Copy After:=wkDeTravail.Sheets(wkDeTravail.Sheets.Count)
    
    ' Sélection de la feuille du fichier créé
    Dim wsDeTravail As Worksheet
    Set wsDeTravail = wkDeTravail.Worksheets("Documents")
   
    ' Chemin du fichier copier
    Sta = sPath & "\Test1_" & Format(Now, "ss") & ".pdf"
    Nfa = sPath & "\Test2_" & Format(Now, "ss") & ".pdf"
        
    ' Enregistrer le nouveau classeur
    wsDeTravail.SaveAs Filename:=Nfa

    ' Test
    If IsEmpty(wsDeTravail.UsedRange) Then Exit Sub
   
        Set pdfjob = New PDFCreator.clsPDFCreator
        With pdfjob
            If .cStart("/NoProcessingAtStartup") = False Then
                MsgBox "Can't initialize PDFCreator.", vbCritical + _
                        vbOKOnly, "PrtPDFCreator"
   
                Exit Sub
            End If
 
            .cOption("UseAutosave") = 1
            .cOption("UseAutosaveDirectory") = 1
            .cOption("AutosaveDirectory") = Cra
            .cOption("AutosaveFilename") = Nfa 'sPDFName
            .cOption("AutosaveFormat") = 0 ' 0 = PDF
            .cClearCache
        End With
 
    'Imprime le document en PDF
    wsDeTravail.PrintOut copies:=1, ActivePrinter:="PDFCreator"
    'Attend que le document soit entré dans la file d'impression
    Do Until pdfjob.cCountOfPrintjobs = 1
        DoEvents
    Loop
    pdfjob.cPrinterStop = False
    
    'Attend que l'impression du document soit terminée
    Do Until pdfjob.cCountOfPrintjobs = 0
        DoEvents
    Loop
    pdfjob.cClose
    Set pdfjob = Nothing
            
    MsgBox "la feuille en Pdf à ètè copièe dans :" & vbCrLf & " le fichier documents de l'affaire:" & vbCrLf & Sta
    wkDeTravail.Close
' A partir de ThisWorKbook.Close le programme plante
   
     
   'Windows(Che & "\" & Fic).Activate
   'Windows("2012_02_05 documents(pdf).xls").Activate
   'Sheets("Documents").Select
   'ActiveWindow.SmallScroll Down:=-35

End Sub

Le fichier Pdf généré ne semble pas être valide....

Gdal
 
Re : Fermeture d'un fichier ouvert avec ActiveWorkbook.SaveAs Filename

Bonjour PierreJean et Gdal,
Je vous remercie de vous interresser à mon cas..
Le morceau de programme de PierreJean semble ouvrir une nouvelle fois le programme .
Le morceau de programme de Gdal génere un fichier pdf qui ne semble pas reconnu.
Peut etre qu'en récuperer quels bouts de programmes je trouverai la solution ?..
En attedant si quelqu'un à la solution ou une idée, il est le bienvenue.
 
Re : Fermeture d'un fichier ouvert avec ActiveWorkbook.SaveAs Filename

Salut,

Pour ma part, j'ai simplement rajouté cette partie de code:
Code:
   ' Créer un nouveau classeur
    Dim wkDeTravail As Workbook
    Set wkDeTravail = Workbooks.Add(xlWBATWorksheet)
   
    ' Sélection de la feuille à copier
    Dim wsACopier As Worksheet
    Set wsACopier = ThisWorkbook.Worksheets("Documents")
    Dim sPath As String
    sPath = Workbooks(ThisWorkbook.Name).Path
   
    ' Copier / Coller la feuille
    wsACopier.Copy After:=wkDeTravail.Sheets(wkDeTravail.Sheets.Count)
   
    ' Sélection de la feuille du fichier créé
    Dim wsDeTravail As Worksheet
    Set wsDeTravail = wkDeTravail.Worksheets("Documents")

Et ajouté wsDeTravail là ou tu utilisais ta feuille... Si l'on met un point d'arrêt sur la dernière ligne de cette partie de code, on voit que Excel a créé un nouveau classeur contenant la feuille "Documents".
Je n'ai pas touché à la partie pdf....
Par contre j'ai supprimé une référence qui était manquant.

Gdal
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

A
  • Résolu(e)
Réponses
4
Affichages
892
A
Réponses
14
Affichages
1 K
Arnaud59000
A
M
Réponses
5
Affichages
2 K
MOA_Excel
M
M
Réponses
29
Affichages
6 K
Retour