Bonjour,
Je ne sais si le problème est résolu, mais voici un exemple de code qui m'a permis de le solutionner.
Private Sub cmd_envoiexcel_Click()
Dim objWkb As Excel.Workbook
Dim objFont As Excel.Font
Dim objPageSetup, objPageSetup2 As Excel.PageSetup
Dim objApp As Application
' procédure permettant l'export de la matrice sous EXCEL
' ouverture d'EXCEL
' le traitement effectué sous EXCEL ne pas visible
' le classeur EXCEL ne comporte q'une feuille dont l'index contiend le code fournisseur
Set DocExcel = New Excel.Application
DocExcel.Visible = False
DocExcel.DisplayAlerts = False
Set objWkb = DocExcel.Workbooks.Add
DocExcel.Sheets("Feuil2").Select
DocExcel.ActiveWindow.SelectedSheets.Delete
DocExcel.Sheets("Feuil3").Select
DocExcel.ActiveWindow.SelectedSheets.Delete
DocExcel.Sheets("Feuil1").Select
DocExcel.ActiveWindow.DisplayGridlines = False
DocExcel.Sheets("Feuil1").Name = gscdfour
'select de la page pour attribution des caractéristques par défaut
' récupération de la hauteur standard d'une ligne
' pour le calcull de la hauteur du corps du bon de commande
pdhautligne = DocExcel.Rows("1:1").RowHeight
pd2hauteur = pdhautligne * 2
pdhauteurtotal = pdhautligne * 20
DocExcel.Cells.Select
Set objFont = DocExcel.Selection.Font
With objFont
.Name = "Arial"
.Size = 8
End With
With DocExcel.Selection
.Locked = True
End With
DocExcel.Range("z100:aa150").Select
With DocExcel.Selection
.HorizontalAlignment = xlCenter
.WrapText = True
End With
DocExcel.Columns("a:x").ColumnWidth = 3
DocExcel.Columns("z:z").ColumnWidth = 39
DocExcel.Columns("aa:aa").ColumnWidth = 9
' la hauteur des lignes 17 à 40 est calculée dynamiquement
DocExcel.Rows("17:39").RowHeight = 0
DocExcel.Rows("40:40").RowHeight = 1
DocExcel.Rows("16:16").RowHeight = 26.25
' définition de la zone d'impression et demande d'impression sur 1 page
DocExcel.Range(DocExcel.Cells(1, 1), DocExcel.Cells(piligne + 1, 24)).Select
Set objPageSetup = DocExcel.ActiveSheet.PageSetup
With objPageSetup
.PrintArea = "A1:X55"
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
Set objPageSetup2 = DocExcel.ActiveSheet.PageSetup
With objPageSetup2
.PrintArea = "A1:X55"
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = DocExcel.InchesToPoints(0.787401575)
.RightMargin = DocExcel.InchesToPoints(0.787401575)
.TopMargin = DocExcel.InchesToPoints(0.984251969)
.BottomMargin = DocExcel.InchesToPoints(0.984251969)
.HeaderMargin = DocExcel.InchesToPoints(0.4921259845)
.FooterMargin = DocExcel.InchesToPoints(0.4921259845)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
' protection du document
DocExcel.ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
gsnommatrice = gsgdimatricexcel & gscdfour & "_" & gsnommatricetext & ".xls"
pvnomxls = gsnommatrice
' Sauvegarde du workbook
DocExcel.ActiveWorkbook.SaveAs FileName:=pvnomxls, Password:="", writerespassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
' Effacement du formulaire d'attente
Unload Frm_ExportEXCEL
pitemselect = 0
' fermeture d'EXCEL
objWkb.Close 0
DocExcel.Application.Quit
DoEvents
Set objPageSetup2 = Nothing
Set objPageSetup = Nothing
Set objFont = Nothing
Set objWkb = Nothing
Set DocExcel = Nothing
DoEvents
' information de l'enregistrement de la matrice sous EXCEL
MsgBox "Export de la matrice " & gsnommatricetext & " effectuée", vbOKOnly, "Export matrice"
gsnommatricetext = ""
cmd_retour_Click
End Sub
Il est évident que certaines lignes sont inutiles, car spécifiques à mon application, les principales sont celles se rattachant aux zones définies au début de procédures.
Cordialement,
PPE52

-------------------------------
Réponse au message :
-------------------------------
> Bonjour tout le monde,
> J'ai bien décortiqué toutes les discussions sur le sujet mais rien qui ne fonctionne. Voici mon code :
>
> Set MyAppli = New Excel.Application
> MyAppli.Workbooks.Open filename:=CommonDialog1.filename
> MyAppli.activeworkbook.activesheet.Columns(1).Sort key1:=Columns(1), order1:=xlDescending
> ...
> MyAppli.activeworkbook.close
> set MyAppli.activeworkbbok=nothing
> MyAppli.close
> set MyAppli = nothing
>
> J'ai bien tout qui se décharge, plus rien à l'écran mais dans les processus, j'ai toujours un Excel.exe qui tourne ! Seul solution, terminer mon appli ou le killer. Je suppose donc qu'une référence n'est pas déchargée mais alors laquelle ???