Plantage Excel après impression VBA
Bonjour,
Petite presentation rapide (premier post oblige :) )
J'ai 29 ans, je bose dans une entreprise d'automatisme. J'aime bien tout ce qui touche à l'informatique, les jeux videos,... En ce moment StarcraftII.
Je fait appel à vous car j'ai un soucis avec une des mes macros Excel qui permet d'imprimer, de sauvegarder le fichier excel et de fermer le fichiers. En metant certaine partie de mon code en commentaire, j'ai l'impression que ces les lignes permettant l'impression qui me pose le problème suivant:
1- lancement de mes macros. Execution OK
2- lancement macros permettant l'impression, sauvegarde et fermeture
3- Deux cas possible :
3.1- L'impression se lance mais l'application Excel plante. Plus précisement, j'ai droit à une fenetre windows indiquant: l'application excel à rencontrer un problème et doit être fermé (voulez vous envoyer le rapport d'erreur)
3.2- Tout ce passe bien. Mais lorsque que je reouvre le fichier de base, l'application escel plante (idem que sur le 3.1).
Ceci etant la premiere fois pour moi que je poste sur le forum, je ne sais pas trop des données que vous avez besoin pour m'aider. Donc voici celle que je pense pertinante :
1- Ceci est ma premiere macro Excel
2- Les macros excel me permette de remplir des feuilles de differentes données qui sont stocké sur une base SQL Microsoft SQL Server 2005.
3- Voici ma fonction Print,Save,Close
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| Function SavePrintClose()
'Déclaration des variables Internes
Dim RepSave As String
Dim Name As String
Dim NameDate As String
Dim NameDate_jj As String
Dim NameDate_mm As String
Dim NameDate_aaaa As String
Dim NameHeure As String
Dim NbrePage As String
'Supression des alertes
Application.DisplayAlerts = False
'Initialisation des variables internes
RepSave = Worksheets("Sauvegarde").Range("D6").Value
NameDate = Worksheets("Supervision").Range("D6").Value
NameDate = Left(NameDate, 10)
NameDate_jj = Left(NameDate, 2)
NameDate_mm = Mid(NameDate, 4, 2)
NameDate_aaaa = Right(NameDate, 4)
NameDate = NameDate_aaaa & NameDate_mm & NameDate_jj
'NameDate = Replace(NameDate, "/", "_")
NameHeure = Worksheets("Supervision").Range("D6").Value
NameHeure = Right(NameHeure, 8)
NameHeure = Replace(NameHeure, ":", "")
Name = NameDate & "_" & NameHeure & "_" & Worksheets("Rapport Serie").Range("C1").Value & "_Serie.xls"
NbrePage = (Offset / 54) + 1
'Supression des onglet non nécessaire avant sauvegarde et impression
'Application.DisplayAlerts = False
Worksheets("Sauvegarde").Delete
Worksheets("Info Base SQL").Delete
Worksheets("Supervision").Delete
'Réalisation de l'impression
Sheets("Rapport Serie").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=NbrePage, Copies:=1, Collate:=True
'Sauvegarde du Fichier
ActiveWorkbook.SaveAs Filename:=RepSave & Name, FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
'Fermeture du fichier
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Function |
4- A un moment donnée j'avais rajouter un attente de 10s qui encadre l'impression avec le code suivant:
Code:
1 2 3 4 5 6
| 'Ajout d'attente
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 10
waittime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait (waittime) |
Merci d'avance de votre Aide qui me sera très précieuse.
Cordialement