Comment fermer un classeur créé par une macro sans l'enregistrer
Fermé
FMas09600
Messages postés
26
Date d'inscription
mercredi 20 février 2019
Statut
Membre
Dernière intervention
2 octobre 2019
-
23 mars 2019 à 15:21
FMas09600 Messages postés 26 Date d'inscription mercredi 20 février 2019 Statut Membre Dernière intervention 2 octobre 2019 - 24 mars 2019 à 16:05
FMas09600 Messages postés 26 Date d'inscription mercredi 20 février 2019 Statut Membre Dernière intervention 2 octobre 2019 - 24 mars 2019 à 16:05
A voir également:
- Comment fermer un classeur créé par une macro sans l'enregistrer
- Audacity enregistrer son pc - Guide
- Comment créer un groupe whatsapp - Guide
- Comment enregistrer une video youtube - Guide
- Cree un compte google - Guide
- Comment enregistrer une musique sur youtube en mp3 - Guide
4 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié le 23 mars 2019 à 16:13
Modifié le 23 mars 2019 à 16:13
Bonjour
Il faut :
- Déclarer une variable classeur (par exemple Dim wbk As Workbook)
- Y affecter le nouveau classeur créé (Set wbk = ...)
- et fermer le classeur (wbk.Close)
Il faut :
- Déclarer une variable classeur (par exemple Dim wbk As Workbook)
- Y affecter le nouveau classeur créé (Set wbk = ...)
- et fermer le classeur (wbk.Close)
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
23 mars 2019 à 23:09
23 mars 2019 à 23:09
Bonjour,
ou bien, comme le dernier classeur créé est l'actif :
eric
ou bien, comme le dernier classeur créé est l'actif :
ActiveWorkbook.close
eric
FMas09600
Messages postés
26
Date d'inscription
mercredi 20 février 2019
Statut
Membre
Dernière intervention
2 octobre 2019
Modifié le 24 mars 2019 à 14:22
Modifié le 24 mars 2019 à 14:22
Sub EnregisterProjetDecompte2()
'
' EnregisterProjetDecompte
Calculate
Range("A1:G630").Select
Selection.Copy
Dim Emplacement As String
Emplacement = Cells(10, 3)
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues
Selection.PasteSpecial Paste:=xlPasteFormats
Selection.PasteSpecial Paste:=xlPasteColumnWidths
' largeur colonne'
Columns("A:A").ColumnWidth = 0
Columns("B:B").ColumnWidth = 10
Columns("C:C").ColumnWidth = 48
Columns("D").ColumnWidth = 5
Columns("E:E").ColumnWidth = 7
Columns("F:F").ColumnWidth = 10
Columns("G:G").ColumnWidth = 12
' HAUTEUR des lignes
Rows.AutoFit
' Select enreg avec code<>0
ActiveSheet.Range("$A$5:$A$630").AutoFilter Field:=1, Criteria1:="1", _
Operator:=xlAnd
' mise en page MARGES '
With ActiveSheet.PageSetup
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftMargin = Application.InchesToPoints(0.196850393700787)
.RightMargin = Application.InchesToPoints(0.196850393700787)
.TopMargin = Application.InchesToPoints(0.9)
.BottomMargin = Application.InchesToPoints(0.590551181102362)
.HeaderMargin = Application.InchesToPoints(0.196850393700787)
.FooterMargin = Application.InchesToPoints(0.393700787401575)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = True
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
End With
' fin de mise en page marges '
' Mise en page en portrait avec date impression et n° page ; le tout dans 1 seule page avec logo'
ActiveSheet.PageSetup.PrintArea = "$A$1:$G$630"
With ActiveSheet.PageSetup
.LeftHeaderPicture.Filename = _
"C:\Users\NOM DU FICHIER.JPG"
.RightHeader = "Page &P de &N"
.LeftHeader = "&G"
.Orientation = xlPortrait
.LeftFooter = "adresse Socièté"
.CenterFooterPicture.Filename = _
"C:\Users\LOGO.jpg"
.CenterFooter = "&G"
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
'----------Enregistrement sous nom de fichier à sauvegarder ------------
If Emplacement <> "" Then
' désignation emplacement des fichiers sauvegardés '
ChDir "C:\Users\NOM DU DOSSIER" '
Application.DisplayAlerts = False
' création fichier XLS '
fichier = Emplacement & "_" & Format(Now, "yyyy-mm-dd-hhmmss")
nomFichier = "X1" & ".xls"
ActiveWorkbook.SaveAs Filename:=nomFichier, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
' création fichier PDF'
fichier = Emplacement & "_" & Format(Now, "yyyy-mm-dd-hhmmss")
nomFichier2 = "Projet_" & fichier & ".pdf"
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nomFichier2, _
Quality:=xlQualityStandard, OpenAfterPublish:=True
' Fermeture tableau excel ... mais il est quand meme enregistré '
Workbooks(X1.xls).Close SaveChanges:=False
Else
Answer = MsgBox(Prompt:=" Le nom du fichier n'est pas spécifié (Cellule C10), l'enregistrement n'est pas fait.", Buttons:=vbYes)
End If
' EffaceProjetDécompte
ActiveWindow.SmallScroll Down:=6
Range("C10,E15:E606,E609").Select
Range("E609").Activate
Selection.ClearContents
ActiveWindow.ScrollRow = 1
Range("C10").Select
End Sub
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié le 24 mars 2019 à 13:52
Modifié le 24 mars 2019 à 13:52
Bonjour,
tu as l'icone <> pour garder l'indentation et la présentation du code.
Là c'est dur pour les yeux...
comme disait Patrice ne fonctionne pas ?
eric
tu as l'icone <> pour garder l'indentation et la présentation du code.
Là c'est dur pour les yeux...
Dim wb As Workbook '... Set wb=Workbooks.Add '... wb.close
comme disait Patrice ne fonctionne pas ?
eric
FMas09600
Messages postés
26
Date d'inscription
mercredi 20 février 2019
Statut
Membre
Dernière intervention
2 octobre 2019
24 mars 2019 à 14:27
24 mars 2019 à 14:27
Re
à la demande d'Eric, j'essaie l'icone <>, ...
je mets la macro originale (pour mémoire, je souhaite si c'est possible que le nouveau classeur -X1- ne s'enregistre pas et qu'il se ferme après l'ouverture de la page PDF):
donc, si possible, je souhaiterai que le classeur X1 ne s'enregistre pas dans le dossier mais en plus pouvoir le fermer automatiquement.
merci pour votre aide
PS : la macro "rame" peut être du à des ligne qui n'ont pas lieu d'être ou qui font tourner le programme en boucle surtout dans la mise en page. si vous pouviez améliorer...
à la demande d'Eric, j'essaie l'icone <>, ...
je mets la macro originale (pour mémoire, je souhaite si c'est possible que le nouveau classeur -X1- ne s'enregistre pas et qu'il se ferme après l'ouverture de la page PDF):
Sub EnregisterProjetDecompte2()
'
' EnregisterProjetDecompte
Calculate
Range("A1:G630").Select
Selection.Copy
Dim Emplacement As String
Emplacement = Cells(10, 3)
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues
Selection.PasteSpecial Paste:=xlPasteFormats
Selection.PasteSpecial Paste:=xlPasteColumnWidths
' largeur colonne'
Columns("A:A").ColumnWidth = 0
Columns("B:B").ColumnWidth = 10
Columns("C:C").ColumnWidth = 48
Columns("D:D").ColumnWidth = 5
Columns("E:E").ColumnWidth = 7
Columns("F:F").ColumnWidth = 10
Columns("G:G").ColumnWidth = 12
' HAUTEUR des lignes
Rows.AutoFit
' Select enreg avec code<>0
ActiveSheet.Range("$A$5:$A$630").AutoFilter Field:=1, Criteria1:="1", _
Operator:=xlAnd
' mise en page MARGES '
With ActiveSheet.PageSetup
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftMargin = Application.InchesToPoints(0.196850393700787)
.RightMargin = Application.InchesToPoints(0.196850393700787)
.TopMargin = Application.InchesToPoints(0.9)
.BottomMargin = Application.InchesToPoints(0.590551181102362)
.HeaderMargin = Application.InchesToPoints(0.196850393700787)
.FooterMargin = Application.InchesToPoints(0.393700787401575)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = True
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
End With
' fin de mise en page marges '
' Mise en page en portrait avec date impression et n° page ; le tout dans 1 seule page avec logo'
ActiveSheet.PageSetup.PrintArea = "$A$1:$G$630"
With ActiveSheet.PageSetup
.LeftHeaderPicture.Filename = _
"C:\Users\NOM DU FICHIER.JPG"
.RightHeader = "Page &P de &N"
.LeftHeader = "&G"
.Orientation = xlPortrait
.LeftFooter = "adresse Socièté"
.CenterFooterPicture.Filename = _
"C:\Users\LOGO.jpg"
.CenterFooter = "&G"
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
'----------Enregistrement sous nom de fichier à sauvegarder ------------
If Emplacement <> "" Then
' désignation emplacement des fichiers sauvegardés '
ChDir "C:\Users\NOM DU DOSSIER" '
Application.DisplayAlerts = False
' création fichier XLS '
fichier = Emplacement & "_" & Format(Now, "yyyy-mm-dd-hhmmss")
nomFichier = "X1" & ".xls"
ActiveWorkbook.SaveAs Filename:=nomFichier, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
' création fichier PDF'
fichier = Emplacement & "_" & Format(Now, "yyyy-mm-dd-hhmmss")
nomFichier2 = "Projet_" & fichier & ".pdf"
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nomFichier2, _
Quality:=xlQualityStandard, OpenAfterPublish:=True
' Fermeture tableau excel ... mais il est quand meme enregistré '
Workbooks(X1.xls).Close SaveChanges:=False
Else
Answer = MsgBox(Prompt:=" Le nom du fichier n'est pas spécifié (Cellule C10), l'enregistrement n'est pas fait.", Buttons:=vbYes)
End If
' EffaceProjetDécompte
ActiveWindow.SmallScroll Down:=6
Range("C10,E15:E606,E609").Select
Range("E609").Activate
Selection.ClearContents
ActiveWindow.ScrollRow = 1
Range("C10").Select
End Sub
donc, si possible, je souhaiterai que le classeur X1 ne s'enregistre pas dans le dossier mais en plus pouvoir le fermer automatiquement.
merci pour votre aide
PS : la macro "rame" peut être du à des ligne qui n'ont pas lieu d'être ou qui font tourner le programme en boucle surtout dans la mise en page. si vous pouviez améliorer...
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié le 24 mars 2019 à 14:43
Modifié le 24 mars 2019 à 14:43
Perso je ne vois aucun essai d'une proposition ou de l'autre.
Et il faut indenter ton code. Ca te permet de voir certaines erreurs (pas forcément ici). Tu devrais installer l'addin SmartIndent
Edit : en plus tu postes sur plusieurs forums, j'abandonne donc ici.
Et il faut indenter ton code. Ca te permet de voir certaines erreurs (pas forcément ici). Tu devrais installer l'addin SmartIndent
Edit : en plus tu postes sur plusieurs forums, j'abandonne donc ici.
FMas09600
Messages postés
26
Date d'inscription
mercredi 20 février 2019
Statut
Membre
Dernière intervention
2 octobre 2019
>
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
24 mars 2019 à 16:05
24 mars 2019 à 16:05
MERCI tout de même, et désolé pour le post sur plusieurs forum mais le délai pour finir ma macro arrive a échéance mercredi.