Bonjour
Toujours dans l'automation Excel.
Lorsque j'exécute la procédure ci-dessous, j'ai les résultats suivants:
1° essai : OK, mais un process Excel.exe existe encore après la fin de la
procédure.
Si je supprime ce process, au 2° essai, j'ai le message "Le serveur distant
n'existe pas ou n'est pas disponible"
Si je ne le supprime pas, au 2° essai j'ai le message "Variable objet ou
variable de bloc with non définie"
Si je ferme Access (ou même simplement ma base de données sans fermer
Access) après le 1° essai, le process Excel est supprimé en même temps.
Lorsque je redémarre Access, le 1° essai fonctionne,.... etc
Précision : lors du 2° essai, le process Excel est créé, puis est supprimé
après que j'ai cliqué OK dans le message d'erreur, mais les essais suivants
ne fonctionnent pas mieux.
Qu'est-ce que j'ai oublié?
Merci d'avance
Gilbert
Voici le code de ma procédure
Public Function AccessToExcelAutomation()
Const NbLignesAjoutees = 5
Dim rst As DAO.Recordset
Dim intCurrTask As Integer
Dim XL_Classeur As Excel.Workbook
Dim XL_Feuille As Excel.Worksheet
Dim rngCurr As Excel.Range
Dim fld As Field
Dim varColonne As Byte
Dim i As Integer
Dim j As Integer
Dim strtmp As String
On Error GoTo ErrorOLEAccessToExcel
Set rst = CurrentDb.OpenRecordset("Rqte_Tmp")
Set XL_App = CreateObject("Excel.Application")
Set XL_Classeur = XL_App.Workbooks.Open("D:Mes
documentsGilbertGretaModèlesModèle Heures.xlt")
Set XL_Feuille = XL_App.Sheets("Feuil1")
With XL_Feuille '-- Création des en-têtes de colonnes
varColonne = 1
For Each fld In rst.Fields
.Cells(1, varColonne).Value = fld.Name
varColonne = varColonne + 1
Next
End With
rst.MoveLast
rst.MoveFirst
'Copie des données
Set rngCurr = XL_Feuille.Range(XL_Feuille.Cells(3, 1), XL_Feuille.Cells(2 +
rst.RecordCount, 3))
rngCurr.CopyFromRecordset rst
'Début du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_Feuille.Columns("A:E").AutoFit
XL_Feuille.Columns("F:ZZ").ColumnWidth = 6
XL_Feuille.Rows("1:1").AutoFit
XL_Feuille.Cells(2, 2) = XL_Feuille.Cells(3, 1)
XL_Feuille.Cells(2, 2).Font.Bold = True
XL_Feuille.Cells(2, 2).Font.Italic = True
XL_Feuille.Cells(2, 2).Font.Size = 14
strtmp = XL_Feuille.Cells(3, 1)
i = 4
Do While XL_Feuille.Cells(i, 1) <> ""
If XL_Feuille.Cells(i, 1).Value <> strtmp Then
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Select
XL_Feuille.Rows(i & ":" & i).Select
For j = 1 To NbLignesAjoutees
'========================================================================== > 'C'est lors du premier passage sur cette ligne que se produisent les erreurs
Selection.Insert Shift:=xlUp
'========================================================================== > Next j
i = i + NbLignesAjoutees
XL_Feuille.Cells(i - 1, 2) = XL_Feuille.Cells(i, 1)
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Cells(i - 1, 2).Font.Bold = True
XL_Feuille.Cells(i - 1, 2).Font.Italic = True
XL_Feuille.Cells(i - 1, 2).Font.Size = 14
Rows(i - 1 & ":" & i - 1).Select
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
i = i + 1
Loop
XL_Feuille.Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
XL_Feuille.Cells(1, 1) = "Heures " & Chr(10) & "réalisées " & Chr(10) &
MoisAnnee_Complet
With XL_Feuille.PageSetup
.RightFooter = "Page &P sur &N"
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 1
.HeaderMargin = 0
.FooterMargin = 0
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
End With
'Fin du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_App.Visible = True
FinSub:
XL_App.DisplayAlerts = False
XL_App.ActiveWorkbook.SaveAs ("Heures réalisées " & MoisAnnee_Complet)
XL_App.DisplayAlerts = True
XL_App.ActiveWorkbook.Close
Set XL_Feuille = Nothing
Set XL_Classeur = Nothing
Set XL_App = Nothing
Exit Function
ErrorOLEAccessToExcel:
Beep
MsgBox "The Following OLE Error has occurred:" & vbCrLf &
err.Description, vbCritical, "OLE Error!"
Resume FinSub
End Function
Bonjour
Toujours dans l'automation Excel.
Lorsque j'exécute la procédure ci-dessous, j'ai les résultats suivants:
1° essai : OK, mais un process Excel.exe existe encore après la fin de la
procédure.
Si je supprime ce process, au 2° essai, j'ai le message "Le serveur distant
n'existe pas ou n'est pas disponible"
Si je ne le supprime pas, au 2° essai j'ai le message "Variable objet ou
variable de bloc with non définie"
Si je ferme Access (ou même simplement ma base de données sans fermer
Access) après le 1° essai, le process Excel est supprimé en même temps.
Lorsque je redémarre Access, le 1° essai fonctionne,.... etc
Précision : lors du 2° essai, le process Excel est créé, puis est supprimé
après que j'ai cliqué OK dans le message d'erreur, mais les essais suivants
ne fonctionnent pas mieux.
Qu'est-ce que j'ai oublié?
Merci d'avance
Gilbert
Voici le code de ma procédure
Public Function AccessToExcelAutomation()
Const NbLignesAjoutees = 5
Dim rst As DAO.Recordset
Dim intCurrTask As Integer
Dim XL_Classeur As Excel.Workbook
Dim XL_Feuille As Excel.Worksheet
Dim rngCurr As Excel.Range
Dim fld As Field
Dim varColonne As Byte
Dim i As Integer
Dim j As Integer
Dim strtmp As String
On Error GoTo ErrorOLEAccessToExcel
Set rst = CurrentDb.OpenRecordset("Rqte_Tmp")
Set XL_App = CreateObject("Excel.Application")
Set XL_Classeur = XL_App.Workbooks.Open("D:Mes
documentsGilbertGretaModèlesModèle Heures.xlt")
Set XL_Feuille = XL_App.Sheets("Feuil1")
With XL_Feuille '-- Création des en-têtes de colonnes
varColonne = 1
For Each fld In rst.Fields
.Cells(1, varColonne).Value = fld.Name
varColonne = varColonne + 1
Next
End With
rst.MoveLast
rst.MoveFirst
'Copie des données
Set rngCurr = XL_Feuille.Range(XL_Feuille.Cells(3, 1), XL_Feuille.Cells(2 +
rst.RecordCount, 3))
rngCurr.CopyFromRecordset rst
'Début du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_Feuille.Columns("A:E").AutoFit
XL_Feuille.Columns("F:ZZ").ColumnWidth = 6
XL_Feuille.Rows("1:1").AutoFit
XL_Feuille.Cells(2, 2) = XL_Feuille.Cells(3, 1)
XL_Feuille.Cells(2, 2).Font.Bold = True
XL_Feuille.Cells(2, 2).Font.Italic = True
XL_Feuille.Cells(2, 2).Font.Size = 14
strtmp = XL_Feuille.Cells(3, 1)
i = 4
Do While XL_Feuille.Cells(i, 1) <> ""
If XL_Feuille.Cells(i, 1).Value <> strtmp Then
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Select
XL_Feuille.Rows(i & ":" & i).Select
For j = 1 To NbLignesAjoutees
'========================================================================== > 'C'est lors du premier passage sur cette ligne que se produisent les erreurs
Selection.Insert Shift:=xlUp
'========================================================================== > Next j
i = i + NbLignesAjoutees
XL_Feuille.Cells(i - 1, 2) = XL_Feuille.Cells(i, 1)
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Cells(i - 1, 2).Font.Bold = True
XL_Feuille.Cells(i - 1, 2).Font.Italic = True
XL_Feuille.Cells(i - 1, 2).Font.Size = 14
Rows(i - 1 & ":" & i - 1).Select
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
i = i + 1
Loop
XL_Feuille.Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
XL_Feuille.Cells(1, 1) = "Heures " & Chr(10) & "réalisées " & Chr(10) &
MoisAnnee_Complet
With XL_Feuille.PageSetup
.RightFooter = "Page &P sur &N"
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 1
.HeaderMargin = 0
.FooterMargin = 0
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
End With
'Fin du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_App.Visible = True
FinSub:
XL_App.DisplayAlerts = False
XL_App.ActiveWorkbook.SaveAs ("Heures réalisées " & MoisAnnee_Complet)
XL_App.DisplayAlerts = True
XL_App.ActiveWorkbook.Close
Set XL_Feuille = Nothing
Set XL_Classeur = Nothing
Set XL_App = Nothing
Exit Function
ErrorOLEAccessToExcel:
Beep
MsgBox "The Following OLE Error has occurred:" & vbCrLf &
err.Description, vbCritical, "OLE Error!"
Resume FinSub
End Function
Bonjour
Toujours dans l'automation Excel.
Lorsque j'exécute la procédure ci-dessous, j'ai les résultats suivants:
1° essai : OK, mais un process Excel.exe existe encore après la fin de la
procédure.
Si je supprime ce process, au 2° essai, j'ai le message "Le serveur distant
n'existe pas ou n'est pas disponible"
Si je ne le supprime pas, au 2° essai j'ai le message "Variable objet ou
variable de bloc with non définie"
Si je ferme Access (ou même simplement ma base de données sans fermer
Access) après le 1° essai, le process Excel est supprimé en même temps.
Lorsque je redémarre Access, le 1° essai fonctionne,.... etc
Précision : lors du 2° essai, le process Excel est créé, puis est supprimé
après que j'ai cliqué OK dans le message d'erreur, mais les essais suivants
ne fonctionnent pas mieux.
Qu'est-ce que j'ai oublié?
Merci d'avance
Gilbert
Voici le code de ma procédure
Public Function AccessToExcelAutomation()
Const NbLignesAjoutees = 5
Dim rst As DAO.Recordset
Dim intCurrTask As Integer
Dim XL_Classeur As Excel.Workbook
Dim XL_Feuille As Excel.Worksheet
Dim rngCurr As Excel.Range
Dim fld As Field
Dim varColonne As Byte
Dim i As Integer
Dim j As Integer
Dim strtmp As String
On Error GoTo ErrorOLEAccessToExcel
Set rst = CurrentDb.OpenRecordset("Rqte_Tmp")
Set XL_App = CreateObject("Excel.Application")
Set XL_Classeur = XL_App.Workbooks.Open("D:Mes
documentsGilbertGretaModèlesModèle Heures.xlt")
Set XL_Feuille = XL_App.Sheets("Feuil1")
With XL_Feuille '-- Création des en-têtes de colonnes
varColonne = 1
For Each fld In rst.Fields
.Cells(1, varColonne).Value = fld.Name
varColonne = varColonne + 1
Next
End With
rst.MoveLast
rst.MoveFirst
'Copie des données
Set rngCurr = XL_Feuille.Range(XL_Feuille.Cells(3, 1), XL_Feuille.Cells(2 +
rst.RecordCount, 3))
rngCurr.CopyFromRecordset rst
'Début du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_Feuille.Columns("A:E").AutoFit
XL_Feuille.Columns("F:ZZ").ColumnWidth = 6
XL_Feuille.Rows("1:1").AutoFit
XL_Feuille.Cells(2, 2) = XL_Feuille.Cells(3, 1)
XL_Feuille.Cells(2, 2).Font.Bold = True
XL_Feuille.Cells(2, 2).Font.Italic = True
XL_Feuille.Cells(2, 2).Font.Size = 14
strtmp = XL_Feuille.Cells(3, 1)
i = 4
Do While XL_Feuille.Cells(i, 1) <> ""
If XL_Feuille.Cells(i, 1).Value <> strtmp Then
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Select
XL_Feuille.Rows(i & ":" & i).Select
For j = 1 To NbLignesAjoutees
'========================================================================== > 'C'est lors du premier passage sur cette ligne que se produisent les erreurs
Selection.Insert Shift:=xlUp
'========================================================================== > Next j
i = i + NbLignesAjoutees
XL_Feuille.Cells(i - 1, 2) = XL_Feuille.Cells(i, 1)
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Cells(i - 1, 2).Font.Bold = True
XL_Feuille.Cells(i - 1, 2).Font.Italic = True
XL_Feuille.Cells(i - 1, 2).Font.Size = 14
Rows(i - 1 & ":" & i - 1).Select
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
i = i + 1
Loop
XL_Feuille.Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
XL_Feuille.Cells(1, 1) = "Heures " & Chr(10) & "réalisées " & Chr(10) &
MoisAnnee_Complet
With XL_Feuille.PageSetup
.RightFooter = "Page &P sur &N"
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 1
.HeaderMargin = 0
.FooterMargin = 0
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
End With
'Fin du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_App.Visible = True
FinSub:
XL_App.DisplayAlerts = False
XL_App.ActiveWorkbook.SaveAs ("Heures réalisées " & MoisAnnee_Complet)
XL_App.DisplayAlerts = True
XL_App.ActiveWorkbook.Close
Set XL_Feuille = Nothing
Set XL_Classeur = Nothing
Set XL_App = Nothing
Exit Function
ErrorOLEAccessToExcel:
Beep
MsgBox "The Following OLE Error has occurred:" & vbCrLf &
err.Description, vbCritical, "OLE Error!"
Resume FinSub
End Function
bonjour
je vois pas de XL_App.Quit, je vois pas d'ailleurs de déclaration de
XL_App
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" a écrit dans le message de news:
uRYh#
Bonjour
Toujours dans l'automation Excel.
Lorsque j'exécute la procédure ci-dessous, j'ai les résultats suivants:
1° essai : OK, mais un process Excel.exe existe encore après la fin de
la
procédure.
Si je supprime ce process, au 2° essai, j'ai le message "Le serveur
distant
n'existe pas ou n'est pas disponible"
Si je ne le supprime pas, au 2° essai j'ai le message "Variable objet ou
variable de bloc with non définie"
Si je ferme Access (ou même simplement ma base de données sans fermer
Access) après le 1° essai, le process Excel est supprimé en même temps.
Lorsque je redémarre Access, le 1° essai fonctionne,.... etc
Précision : lors du 2° essai, le process Excel est créé, puis est
supprimé
après que j'ai cliqué OK dans le message d'erreur, mais les essais
suivants
ne fonctionnent pas mieux.
Qu'est-ce que j'ai oublié?
Merci d'avance
Gilbert
Voici le code de ma procédure
Public Function AccessToExcelAutomation()
Const NbLignesAjoutees = 5
Dim rst As DAO.Recordset
Dim intCurrTask As Integer
Dim XL_Classeur As Excel.Workbook
Dim XL_Feuille As Excel.Worksheet
Dim rngCurr As Excel.Range
Dim fld As Field
Dim varColonne As Byte
Dim i As Integer
Dim j As Integer
Dim strtmp As String
On Error GoTo ErrorOLEAccessToExcel
Set rst = CurrentDb.OpenRecordset("Rqte_Tmp")
Set XL_App = CreateObject("Excel.Application")
Set XL_Classeur = XL_App.Workbooks.Open("D:Mes
documentsGilbertGretaModèlesModèle Heures.xlt")
Set XL_Feuille = XL_App.Sheets("Feuil1")
With XL_Feuille '-- Création des en-têtes de colonnes
varColonne = 1
For Each fld In rst.Fields
.Cells(1, varColonne).Value = fld.Name
varColonne = varColonne + 1
Next
End With
rst.MoveLast
rst.MoveFirst
'Copie des données
Set rngCurr = XL_Feuille.Range(XL_Feuille.Cells(3, 1),
XL_Feuille.Cells(2 +
rst.RecordCount, 3))
rngCurr.CopyFromRecordset rst
'Début du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_Feuille.Columns("A:E").AutoFit
XL_Feuille.Columns("F:ZZ").ColumnWidth = 6
XL_Feuille.Rows("1:1").AutoFit
XL_Feuille.Cells(2, 2) = XL_Feuille.Cells(3, 1)
XL_Feuille.Cells(2, 2).Font.Bold = True
XL_Feuille.Cells(2, 2).Font.Italic = True
XL_Feuille.Cells(2, 2).Font.Size = 14
strtmp = XL_Feuille.Cells(3, 1)
i = 4
Do While XL_Feuille.Cells(i, 1) <> ""
If XL_Feuille.Cells(i, 1).Value <> strtmp Then
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Select
XL_Feuille.Rows(i & ":" & i).Select
For j = 1 To NbLignesAjoutees
'========================================================================== > > 'C'est lors du premier passage sur cette ligne que se produisent les
Selection.Insert Shift:=xlUp
'========================================================================== > > Next j
i = i + NbLignesAjoutees
XL_Feuille.Cells(i - 1, 2) = XL_Feuille.Cells(i, 1)
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Cells(i - 1, 2).Font.Bold = True
XL_Feuille.Cells(i - 1, 2).Font.Italic = True
XL_Feuille.Cells(i - 1, 2).Font.Size = 14
Rows(i - 1 & ":" & i - 1).Select
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
i = i + 1
Loop
XL_Feuille.Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
XL_Feuille.Cells(1, 1) = "Heures " & Chr(10) & "réalisées " & Chr(10) &
MoisAnnee_Complet
With XL_Feuille.PageSetup
.RightFooter = "Page &P sur &N"
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 1
.HeaderMargin = 0
.FooterMargin = 0
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
End With
'Fin du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_App.Visible = True
FinSub:
XL_App.DisplayAlerts = False
XL_App.ActiveWorkbook.SaveAs ("Heures réalisées " &
MoisAnnee_Complet)
XL_App.DisplayAlerts = True
XL_App.ActiveWorkbook.Close
Set XL_Feuille = Nothing
Set XL_Classeur = Nothing
Set XL_App = Nothing
Exit Function
ErrorOLEAccessToExcel:
Beep
MsgBox "The Following OLE Error has occurred:" & vbCrLf &
err.Description, vbCritical, "OLE Error!"
Resume FinSub
End Function
bonjour
je vois pas de XL_App.Quit, je vois pas d'ailleurs de déclaration de
XL_App
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" <ZZZgilbertvie@tiscali.fr> a écrit dans le message de news:
uRYh#MAvDHA.2244@TK2MSFTNGP09.phx.gbl...
Bonjour
Toujours dans l'automation Excel.
Lorsque j'exécute la procédure ci-dessous, j'ai les résultats suivants:
1° essai : OK, mais un process Excel.exe existe encore après la fin de
la
procédure.
Si je supprime ce process, au 2° essai, j'ai le message "Le serveur
distant
n'existe pas ou n'est pas disponible"
Si je ne le supprime pas, au 2° essai j'ai le message "Variable objet ou
variable de bloc with non définie"
Si je ferme Access (ou même simplement ma base de données sans fermer
Access) après le 1° essai, le process Excel est supprimé en même temps.
Lorsque je redémarre Access, le 1° essai fonctionne,.... etc
Précision : lors du 2° essai, le process Excel est créé, puis est
supprimé
après que j'ai cliqué OK dans le message d'erreur, mais les essais
suivants
ne fonctionnent pas mieux.
Qu'est-ce que j'ai oublié?
Merci d'avance
Gilbert
Voici le code de ma procédure
Public Function AccessToExcelAutomation()
Const NbLignesAjoutees = 5
Dim rst As DAO.Recordset
Dim intCurrTask As Integer
Dim XL_Classeur As Excel.Workbook
Dim XL_Feuille As Excel.Worksheet
Dim rngCurr As Excel.Range
Dim fld As Field
Dim varColonne As Byte
Dim i As Integer
Dim j As Integer
Dim strtmp As String
On Error GoTo ErrorOLEAccessToExcel
Set rst = CurrentDb.OpenRecordset("Rqte_Tmp")
Set XL_App = CreateObject("Excel.Application")
Set XL_Classeur = XL_App.Workbooks.Open("D:Mes
documentsGilbertGretaModèlesModèle Heures.xlt")
Set XL_Feuille = XL_App.Sheets("Feuil1")
With XL_Feuille '-- Création des en-têtes de colonnes
varColonne = 1
For Each fld In rst.Fields
.Cells(1, varColonne).Value = fld.Name
varColonne = varColonne + 1
Next
End With
rst.MoveLast
rst.MoveFirst
'Copie des données
Set rngCurr = XL_Feuille.Range(XL_Feuille.Cells(3, 1),
XL_Feuille.Cells(2 +
rst.RecordCount, 3))
rngCurr.CopyFromRecordset rst
'Début du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_Feuille.Columns("A:E").AutoFit
XL_Feuille.Columns("F:ZZ").ColumnWidth = 6
XL_Feuille.Rows("1:1").AutoFit
XL_Feuille.Cells(2, 2) = XL_Feuille.Cells(3, 1)
XL_Feuille.Cells(2, 2).Font.Bold = True
XL_Feuille.Cells(2, 2).Font.Italic = True
XL_Feuille.Cells(2, 2).Font.Size = 14
strtmp = XL_Feuille.Cells(3, 1)
i = 4
Do While XL_Feuille.Cells(i, 1) <> ""
If XL_Feuille.Cells(i, 1).Value <> strtmp Then
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Select
XL_Feuille.Rows(i & ":" & i).Select
For j = 1 To NbLignesAjoutees
'========================================================================== > > 'C'est lors du premier passage sur cette ligne que se produisent les
Selection.Insert Shift:=xlUp
'========================================================================== > > Next j
i = i + NbLignesAjoutees
XL_Feuille.Cells(i - 1, 2) = XL_Feuille.Cells(i, 1)
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Cells(i - 1, 2).Font.Bold = True
XL_Feuille.Cells(i - 1, 2).Font.Italic = True
XL_Feuille.Cells(i - 1, 2).Font.Size = 14
Rows(i - 1 & ":" & i - 1).Select
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
i = i + 1
Loop
XL_Feuille.Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
XL_Feuille.Cells(1, 1) = "Heures " & Chr(10) & "réalisées " & Chr(10) &
MoisAnnee_Complet
With XL_Feuille.PageSetup
.RightFooter = "Page &P sur &N"
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 1
.HeaderMargin = 0
.FooterMargin = 0
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
End With
'Fin du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_App.Visible = True
FinSub:
XL_App.DisplayAlerts = False
XL_App.ActiveWorkbook.SaveAs ("Heures réalisées " &
MoisAnnee_Complet)
XL_App.DisplayAlerts = True
XL_App.ActiveWorkbook.Close
Set XL_Feuille = Nothing
Set XL_Classeur = Nothing
Set XL_App = Nothing
Exit Function
ErrorOLEAccessToExcel:
Beep
MsgBox "The Following OLE Error has occurred:" & vbCrLf &
err.Description, vbCritical, "OLE Error!"
Resume FinSub
End Function
bonjour
je vois pas de XL_App.Quit, je vois pas d'ailleurs de déclaration de
XL_App
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" a écrit dans le message de news:
uRYh#
Bonjour
Toujours dans l'automation Excel.
Lorsque j'exécute la procédure ci-dessous, j'ai les résultats suivants:
1° essai : OK, mais un process Excel.exe existe encore après la fin de
la
procédure.
Si je supprime ce process, au 2° essai, j'ai le message "Le serveur
distant
n'existe pas ou n'est pas disponible"
Si je ne le supprime pas, au 2° essai j'ai le message "Variable objet ou
variable de bloc with non définie"
Si je ferme Access (ou même simplement ma base de données sans fermer
Access) après le 1° essai, le process Excel est supprimé en même temps.
Lorsque je redémarre Access, le 1° essai fonctionne,.... etc
Précision : lors du 2° essai, le process Excel est créé, puis est
supprimé
après que j'ai cliqué OK dans le message d'erreur, mais les essais
suivants
ne fonctionnent pas mieux.
Qu'est-ce que j'ai oublié?
Merci d'avance
Gilbert
Voici le code de ma procédure
Public Function AccessToExcelAutomation()
Const NbLignesAjoutees = 5
Dim rst As DAO.Recordset
Dim intCurrTask As Integer
Dim XL_Classeur As Excel.Workbook
Dim XL_Feuille As Excel.Worksheet
Dim rngCurr As Excel.Range
Dim fld As Field
Dim varColonne As Byte
Dim i As Integer
Dim j As Integer
Dim strtmp As String
On Error GoTo ErrorOLEAccessToExcel
Set rst = CurrentDb.OpenRecordset("Rqte_Tmp")
Set XL_App = CreateObject("Excel.Application")
Set XL_Classeur = XL_App.Workbooks.Open("D:Mes
documentsGilbertGretaModèlesModèle Heures.xlt")
Set XL_Feuille = XL_App.Sheets("Feuil1")
With XL_Feuille '-- Création des en-têtes de colonnes
varColonne = 1
For Each fld In rst.Fields
.Cells(1, varColonne).Value = fld.Name
varColonne = varColonne + 1
Next
End With
rst.MoveLast
rst.MoveFirst
'Copie des données
Set rngCurr = XL_Feuille.Range(XL_Feuille.Cells(3, 1),
XL_Feuille.Cells(2 +
rst.RecordCount, 3))
rngCurr.CopyFromRecordset rst
'Début du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_Feuille.Columns("A:E").AutoFit
XL_Feuille.Columns("F:ZZ").ColumnWidth = 6
XL_Feuille.Rows("1:1").AutoFit
XL_Feuille.Cells(2, 2) = XL_Feuille.Cells(3, 1)
XL_Feuille.Cells(2, 2).Font.Bold = True
XL_Feuille.Cells(2, 2).Font.Italic = True
XL_Feuille.Cells(2, 2).Font.Size = 14
strtmp = XL_Feuille.Cells(3, 1)
i = 4
Do While XL_Feuille.Cells(i, 1) <> ""
If XL_Feuille.Cells(i, 1).Value <> strtmp Then
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Select
XL_Feuille.Rows(i & ":" & i).Select
For j = 1 To NbLignesAjoutees
'========================================================================== > > 'C'est lors du premier passage sur cette ligne que se produisent les
Selection.Insert Shift:=xlUp
'========================================================================== > > Next j
i = i + NbLignesAjoutees
XL_Feuille.Cells(i - 1, 2) = XL_Feuille.Cells(i, 1)
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Cells(i - 1, 2).Font.Bold = True
XL_Feuille.Cells(i - 1, 2).Font.Italic = True
XL_Feuille.Cells(i - 1, 2).Font.Size = 14
Rows(i - 1 & ":" & i - 1).Select
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
i = i + 1
Loop
XL_Feuille.Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
XL_Feuille.Cells(1, 1) = "Heures " & Chr(10) & "réalisées " & Chr(10) &
MoisAnnee_Complet
With XL_Feuille.PageSetup
.RightFooter = "Page &P sur &N"
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 1
.HeaderMargin = 0
.FooterMargin = 0
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
End With
'Fin du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_App.Visible = True
FinSub:
XL_App.DisplayAlerts = False
XL_App.ActiveWorkbook.SaveAs ("Heures réalisées " &
MoisAnnee_Complet)
XL_App.DisplayAlerts = True
XL_App.ActiveWorkbook.Close
Set XL_Feuille = Nothing
Set XL_Classeur = Nothing
Set XL_App = Nothing
Exit Function
ErrorOLEAccessToExcel:
Beep
MsgBox "The Following OLE Error has occurred:" & vbCrLf &
err.Description, vbCritical, "OLE Error!"
Resume FinSub
End Function
Bonjour Pierre et merci de ta réponse.
La déclaration est publique dans un autre module.
Pour la fermeture j'utilise XL_App.ActiveWorkbook.Close.
J'ai ajouté la ligne XL_App.Quit, mais ça ne change rien au problème.
Gilbert
"Pierre CFI [mvp]" a écrit dans le message de
news:bonjour
je vois pas de XL_App.Quit, je vois pas d'ailleurs de déclaration de
XL_App
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" a écrit dans le message de news:
uRYh#Bonjour
Toujours dans l'automation Excel.
Lorsque j'exécute la procédure ci-dessous, j'ai les résultats suivants:
1° essai : OK, mais un process Excel.exe existe encore après la fin de
laprocédure.
Si je supprime ce process, au 2° essai, j'ai le message "Le serveur
distantn'existe pas ou n'est pas disponible"
Si je ne le supprime pas, au 2° essai j'ai le message "Variable objet ou
variable de bloc with non définie"
Si je ferme Access (ou même simplement ma base de données sans fermer
Access) après le 1° essai, le process Excel est supprimé en même temps.
Lorsque je redémarre Access, le 1° essai fonctionne,.... etc
Précision : lors du 2° essai, le process Excel est créé, puis est
suppriméaprès que j'ai cliqué OK dans le message d'erreur, mais les essais
suivantsne fonctionnent pas mieux.
Qu'est-ce que j'ai oublié?
Merci d'avance
Gilbert
Voici le code de ma procédure
Public Function AccessToExcelAutomation()
Const NbLignesAjoutees = 5
Dim rst As DAO.Recordset
Dim intCurrTask As Integer
Dim XL_Classeur As Excel.Workbook
Dim XL_Feuille As Excel.Worksheet
Dim rngCurr As Excel.Range
Dim fld As Field
Dim varColonne As Byte
Dim i As Integer
Dim j As Integer
Dim strtmp As String
On Error GoTo ErrorOLEAccessToExcel
Set rst = CurrentDb.OpenRecordset("Rqte_Tmp")
Set XL_App = CreateObject("Excel.Application")
Set XL_Classeur = XL_App.Workbooks.Open("D:Mes
documentsGilbertGretaModèlesModèle Heures.xlt")
Set XL_Feuille = XL_App.Sheets("Feuil1")
With XL_Feuille '-- Création des en-têtes de colonnes
varColonne = 1
For Each fld In rst.Fields
.Cells(1, varColonne).Value = fld.Name
varColonne = varColonne + 1
Next
End With
rst.MoveLast
rst.MoveFirst
'Copie des données
Set rngCurr = XL_Feuille.Range(XL_Feuille.Cells(3, 1),
XL_Feuille.Cells(2 +rst.RecordCount, 3))
rngCurr.CopyFromRecordset rst
'Début du traitement du fichier
Excel -----------------------------------------------------------------------
XL_Feuille.Columns("A:E").AutoFit
XL_Feuille.Columns("F:ZZ").ColumnWidth = 6
XL_Feuille.Rows("1:1").AutoFit
XL_Feuille.Cells(2, 2) = XL_Feuille.Cells(3, 1)
XL_Feuille.Cells(2, 2).Font.Bold = True
XL_Feuille.Cells(2, 2).Font.Italic = True
XL_Feuille.Cells(2, 2).Font.Size = 14
strtmp = XL_Feuille.Cells(3, 1)
i = 4
Do While XL_Feuille.Cells(i, 1) <> ""
If XL_Feuille.Cells(i, 1).Value <> strtmp Then
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Select
XL_Feuille.Rows(i & ":" & i).Select
For j = 1 To NbLignesAjoutees
'========================================================================== > > > 'C'est lors du premier passage sur cette ligne que se produisent les
erreursSelection.Insert Shift:=xlUp
'========================================================================== > > > Next ji = i + NbLignesAjoutees
XL_Feuille.Cells(i - 1, 2) = XL_Feuille.Cells(i, 1)
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Cells(i - 1, 2).Font.Bold = True
XL_Feuille.Cells(i - 1, 2).Font.Italic = True
XL_Feuille.Cells(i - 1, 2).Font.Size = 14
Rows(i - 1 & ":" & i - 1).Select
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
i = i + 1
Loop
XL_Feuille.Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
XL_Feuille.Cells(1, 1) = "Heures " & Chr(10) & "réalisées " & Chr(10) &
MoisAnnee_Complet
With XL_Feuille.PageSetup
.RightFooter = "Page &P sur &N"
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 1
.HeaderMargin = 0
.FooterMargin = 0
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
End With
'Fin du traitement du fichier
Excel -----------------------------------------------------------------------
XL_App.Visible = True
FinSub:
XL_App.DisplayAlerts = False
XL_App.ActiveWorkbook.SaveAs ("Heures réalisées " &
MoisAnnee_Complet)XL_App.DisplayAlerts = True
XL_App.ActiveWorkbook.Close
Set XL_Feuille = Nothing
Set XL_Classeur = Nothing
Set XL_App = Nothing
Exit Function
ErrorOLEAccessToExcel:
Beep
MsgBox "The Following OLE Error has occurred:" & vbCrLf &
err.Description, vbCritical, "OLE Error!"
Resume FinSub
End Function
Bonjour Pierre et merci de ta réponse.
La déclaration est publique dans un autre module.
Pour la fermeture j'utilise XL_App.ActiveWorkbook.Close.
J'ai ajouté la ligne XL_App.Quit, mais ça ne change rien au problème.
Gilbert
"Pierre CFI [mvp]" <XXX_pierresalaun@aol.com> a écrit dans le message de
news: OwKFQbAvDHA.1908@TK2MSFTNGP10.phx.gbl...
bonjour
je vois pas de XL_App.Quit, je vois pas d'ailleurs de déclaration de
XL_App
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" <ZZZgilbertvie@tiscali.fr> a écrit dans le message de news:
uRYh#MAvDHA.2244@TK2MSFTNGP09.phx.gbl...
Bonjour
Toujours dans l'automation Excel.
Lorsque j'exécute la procédure ci-dessous, j'ai les résultats suivants:
1° essai : OK, mais un process Excel.exe existe encore après la fin de
la
procédure.
Si je supprime ce process, au 2° essai, j'ai le message "Le serveur
distant
n'existe pas ou n'est pas disponible"
Si je ne le supprime pas, au 2° essai j'ai le message "Variable objet ou
variable de bloc with non définie"
Si je ferme Access (ou même simplement ma base de données sans fermer
Access) après le 1° essai, le process Excel est supprimé en même temps.
Lorsque je redémarre Access, le 1° essai fonctionne,.... etc
Précision : lors du 2° essai, le process Excel est créé, puis est
supprimé
après que j'ai cliqué OK dans le message d'erreur, mais les essais
suivants
ne fonctionnent pas mieux.
Qu'est-ce que j'ai oublié?
Merci d'avance
Gilbert
Voici le code de ma procédure
Public Function AccessToExcelAutomation()
Const NbLignesAjoutees = 5
Dim rst As DAO.Recordset
Dim intCurrTask As Integer
Dim XL_Classeur As Excel.Workbook
Dim XL_Feuille As Excel.Worksheet
Dim rngCurr As Excel.Range
Dim fld As Field
Dim varColonne As Byte
Dim i As Integer
Dim j As Integer
Dim strtmp As String
On Error GoTo ErrorOLEAccessToExcel
Set rst = CurrentDb.OpenRecordset("Rqte_Tmp")
Set XL_App = CreateObject("Excel.Application")
Set XL_Classeur = XL_App.Workbooks.Open("D:Mes
documentsGilbertGretaModèlesModèle Heures.xlt")
Set XL_Feuille = XL_App.Sheets("Feuil1")
With XL_Feuille '-- Création des en-têtes de colonnes
varColonne = 1
For Each fld In rst.Fields
.Cells(1, varColonne).Value = fld.Name
varColonne = varColonne + 1
Next
End With
rst.MoveLast
rst.MoveFirst
'Copie des données
Set rngCurr = XL_Feuille.Range(XL_Feuille.Cells(3, 1),
XL_Feuille.Cells(2 +
rst.RecordCount, 3))
rngCurr.CopyFromRecordset rst
'Début du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_Feuille.Columns("A:E").AutoFit
XL_Feuille.Columns("F:ZZ").ColumnWidth = 6
XL_Feuille.Rows("1:1").AutoFit
XL_Feuille.Cells(2, 2) = XL_Feuille.Cells(3, 1)
XL_Feuille.Cells(2, 2).Font.Bold = True
XL_Feuille.Cells(2, 2).Font.Italic = True
XL_Feuille.Cells(2, 2).Font.Size = 14
strtmp = XL_Feuille.Cells(3, 1)
i = 4
Do While XL_Feuille.Cells(i, 1) <> ""
If XL_Feuille.Cells(i, 1).Value <> strtmp Then
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Select
XL_Feuille.Rows(i & ":" & i).Select
For j = 1 To NbLignesAjoutees
'========================================================================== > > > 'C'est lors du premier passage sur cette ligne que se produisent les
erreurs
Selection.Insert Shift:=xlUp
'========================================================================== > > > Next j
i = i + NbLignesAjoutees
XL_Feuille.Cells(i - 1, 2) = XL_Feuille.Cells(i, 1)
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Cells(i - 1, 2).Font.Bold = True
XL_Feuille.Cells(i - 1, 2).Font.Italic = True
XL_Feuille.Cells(i - 1, 2).Font.Size = 14
Rows(i - 1 & ":" & i - 1).Select
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
i = i + 1
Loop
XL_Feuille.Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
XL_Feuille.Cells(1, 1) = "Heures " & Chr(10) & "réalisées " & Chr(10) &
MoisAnnee_Complet
With XL_Feuille.PageSetup
.RightFooter = "Page &P sur &N"
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 1
.HeaderMargin = 0
.FooterMargin = 0
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
End With
'Fin du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_App.Visible = True
FinSub:
XL_App.DisplayAlerts = False
XL_App.ActiveWorkbook.SaveAs ("Heures réalisées " &
MoisAnnee_Complet)
XL_App.DisplayAlerts = True
XL_App.ActiveWorkbook.Close
Set XL_Feuille = Nothing
Set XL_Classeur = Nothing
Set XL_App = Nothing
Exit Function
ErrorOLEAccessToExcel:
Beep
MsgBox "The Following OLE Error has occurred:" & vbCrLf &
err.Description, vbCritical, "OLE Error!"
Resume FinSub
End Function
Bonjour Pierre et merci de ta réponse.
La déclaration est publique dans un autre module.
Pour la fermeture j'utilise XL_App.ActiveWorkbook.Close.
J'ai ajouté la ligne XL_App.Quit, mais ça ne change rien au problème.
Gilbert
"Pierre CFI [mvp]" a écrit dans le message de
news:bonjour
je vois pas de XL_App.Quit, je vois pas d'ailleurs de déclaration de
XL_App
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" a écrit dans le message de news:
uRYh#Bonjour
Toujours dans l'automation Excel.
Lorsque j'exécute la procédure ci-dessous, j'ai les résultats suivants:
1° essai : OK, mais un process Excel.exe existe encore après la fin de
laprocédure.
Si je supprime ce process, au 2° essai, j'ai le message "Le serveur
distantn'existe pas ou n'est pas disponible"
Si je ne le supprime pas, au 2° essai j'ai le message "Variable objet ou
variable de bloc with non définie"
Si je ferme Access (ou même simplement ma base de données sans fermer
Access) après le 1° essai, le process Excel est supprimé en même temps.
Lorsque je redémarre Access, le 1° essai fonctionne,.... etc
Précision : lors du 2° essai, le process Excel est créé, puis est
suppriméaprès que j'ai cliqué OK dans le message d'erreur, mais les essais
suivantsne fonctionnent pas mieux.
Qu'est-ce que j'ai oublié?
Merci d'avance
Gilbert
Voici le code de ma procédure
Public Function AccessToExcelAutomation()
Const NbLignesAjoutees = 5
Dim rst As DAO.Recordset
Dim intCurrTask As Integer
Dim XL_Classeur As Excel.Workbook
Dim XL_Feuille As Excel.Worksheet
Dim rngCurr As Excel.Range
Dim fld As Field
Dim varColonne As Byte
Dim i As Integer
Dim j As Integer
Dim strtmp As String
On Error GoTo ErrorOLEAccessToExcel
Set rst = CurrentDb.OpenRecordset("Rqte_Tmp")
Set XL_App = CreateObject("Excel.Application")
Set XL_Classeur = XL_App.Workbooks.Open("D:Mes
documentsGilbertGretaModèlesModèle Heures.xlt")
Set XL_Feuille = XL_App.Sheets("Feuil1")
With XL_Feuille '-- Création des en-têtes de colonnes
varColonne = 1
For Each fld In rst.Fields
.Cells(1, varColonne).Value = fld.Name
varColonne = varColonne + 1
Next
End With
rst.MoveLast
rst.MoveFirst
'Copie des données
Set rngCurr = XL_Feuille.Range(XL_Feuille.Cells(3, 1),
XL_Feuille.Cells(2 +rst.RecordCount, 3))
rngCurr.CopyFromRecordset rst
'Début du traitement du fichier
Excel -----------------------------------------------------------------------
XL_Feuille.Columns("A:E").AutoFit
XL_Feuille.Columns("F:ZZ").ColumnWidth = 6
XL_Feuille.Rows("1:1").AutoFit
XL_Feuille.Cells(2, 2) = XL_Feuille.Cells(3, 1)
XL_Feuille.Cells(2, 2).Font.Bold = True
XL_Feuille.Cells(2, 2).Font.Italic = True
XL_Feuille.Cells(2, 2).Font.Size = 14
strtmp = XL_Feuille.Cells(3, 1)
i = 4
Do While XL_Feuille.Cells(i, 1) <> ""
If XL_Feuille.Cells(i, 1).Value <> strtmp Then
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Select
XL_Feuille.Rows(i & ":" & i).Select
For j = 1 To NbLignesAjoutees
'========================================================================== > > > 'C'est lors du premier passage sur cette ligne que se produisent les
erreursSelection.Insert Shift:=xlUp
'========================================================================== > > > Next ji = i + NbLignesAjoutees
XL_Feuille.Cells(i - 1, 2) = XL_Feuille.Cells(i, 1)
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Cells(i - 1, 2).Font.Bold = True
XL_Feuille.Cells(i - 1, 2).Font.Italic = True
XL_Feuille.Cells(i - 1, 2).Font.Size = 14
Rows(i - 1 & ":" & i - 1).Select
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
i = i + 1
Loop
XL_Feuille.Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
XL_Feuille.Cells(1, 1) = "Heures " & Chr(10) & "réalisées " & Chr(10) &
MoisAnnee_Complet
With XL_Feuille.PageSetup
.RightFooter = "Page &P sur &N"
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 1
.HeaderMargin = 0
.FooterMargin = 0
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
End With
'Fin du traitement du fichier
Excel -----------------------------------------------------------------------
XL_App.Visible = True
FinSub:
XL_App.DisplayAlerts = False
XL_App.ActiveWorkbook.SaveAs ("Heures réalisées " &
MoisAnnee_Complet)XL_App.DisplayAlerts = True
XL_App.ActiveWorkbook.Close
Set XL_Feuille = Nothing
Set XL_Classeur = Nothing
Set XL_App = Nothing
Exit Function
ErrorOLEAccessToExcel:
Beep
MsgBox "The Following OLE Error has occurred:" & vbCrLf &
err.Description, vbCritical, "OLE Error!"
Resume FinSub
End Function
bonjour
sinon va entre autre ici
http://rp.developpez.com/vb/tutoriels/faq/?page=Systeme#tuer_process
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" a écrit dans le message de news:
#YSEG$
Bonjour Pierre et merci de ta réponse.
La déclaration est publique dans un autre module.
Pour la fermeture j'utilise XL_App.ActiveWorkbook.Close.
J'ai ajouté la ligne XL_App.Quit, mais ça ne change rien au problème.
Gilbert
"Pierre CFI [mvp]" a écrit dans le message de
news:bonjour
je vois pas de XL_App.Quit, je vois pas d'ailleurs de déclaration de
XL_App
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" a écrit dans le message de news:
uRYh#Bonjour
Toujours dans l'automation Excel.
Lorsque j'exécute la procédure ci-dessous, j'ai les résultats
suivants:
1° essai : OK, mais un process Excel.exe existe encore après la fin
de
laprocédure.
Si je supprime ce process, au 2° essai, j'ai le message "Le serveur
distantn'existe pas ou n'est pas disponible"
Si je ne le supprime pas, au 2° essai j'ai le message "Variable
objet ou
variable de bloc with non définie"
Si je ferme Access (ou même simplement ma base de données sans
fermer
Access) après le 1° essai, le process Excel est supprimé en même
temps.
Lorsque je redémarre Access, le 1° essai fonctionne,.... etc
Précision : lors du 2° essai, le process Excel est créé, puis est
suppriméaprès que j'ai cliqué OK dans le message d'erreur, mais les essais
suivantsne fonctionnent pas mieux.
Qu'est-ce que j'ai oublié?
Merci d'avance
Gilbert
Voici le code de ma procédure
Public Function AccessToExcelAutomation()
Const NbLignesAjoutees = 5
Dim rst As DAO.Recordset
Dim intCurrTask As Integer
Dim XL_Classeur As Excel.Workbook
Dim XL_Feuille As Excel.Worksheet
Dim rngCurr As Excel.Range
Dim fld As Field
Dim varColonne As Byte
Dim i As Integer
Dim j As Integer
Dim strtmp As String
On Error GoTo ErrorOLEAccessToExcel
Set rst = CurrentDb.OpenRecordset("Rqte_Tmp")
Set XL_App = CreateObject("Excel.Application")
Set XL_Classeur = XL_App.Workbooks.Open("D:Mes
documentsGilbertGretaModèlesModèle Heures.xlt")
Set XL_Feuille = XL_App.Sheets("Feuil1")
With XL_Feuille '-- Création des en-têtes de colonnes
varColonne = 1
For Each fld In rst.Fields
.Cells(1, varColonne).Value = fld.Name
varColonne = varColonne + 1
Next
End With
rst.MoveLast
rst.MoveFirst
'Copie des données
Set rngCurr = XL_Feuille.Range(XL_Feuille.Cells(3, 1),
XL_Feuille.Cells(2 +rst.RecordCount, 3))
rngCurr.CopyFromRecordset rst
'Début du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_Feuille.Columns("A:E").AutoFit
XL_Feuille.Columns("F:ZZ").ColumnWidth = 6
XL_Feuille.Rows("1:1").AutoFit
XL_Feuille.Cells(2, 2) = XL_Feuille.Cells(3, 1)
XL_Feuille.Cells(2, 2).Font.Bold = True
XL_Feuille.Cells(2, 2).Font.Italic = True
XL_Feuille.Cells(2, 2).Font.Size = 14
strtmp = XL_Feuille.Cells(3, 1)
i = 4
Do While XL_Feuille.Cells(i, 1) <> ""
If XL_Feuille.Cells(i, 1).Value <> strtmp Then
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Select
XL_Feuille.Rows(i & ":" & i).Select
For j = 1 To NbLignesAjoutees
'========================================================================== > > > > 'C'est lors du premier passage sur cette ligne que se produisent les
erreursSelection.Insert Shift:=xlUp
'========================================================================== > > > > Next j
i = i + NbLignesAjoutees
XL_Feuille.Cells(i - 1, 2) = XL_Feuille.Cells(i, 1)
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Cells(i - 1, 2).Font.Bold = True
XL_Feuille.Cells(i - 1, 2).Font.Italic = True
XL_Feuille.Cells(i - 1, 2).Font.Size = 14
Rows(i - 1 & ":" & i - 1).Select
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
i = i + 1
Loop
XL_Feuille.Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
XL_Feuille.Cells(1, 1) = "Heures " & Chr(10) & "réalisées " &
Chr(10) &
MoisAnnee_Complet
With XL_Feuille.PageSetup
.RightFooter = "Page &P sur &N"
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 1
.HeaderMargin = 0
.FooterMargin = 0
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
End With
'Fin du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_App.Visible = True
FinSub:
XL_App.DisplayAlerts = False
XL_App.ActiveWorkbook.SaveAs ("Heures réalisées " &
MoisAnnee_Complet)XL_App.DisplayAlerts = True
XL_App.ActiveWorkbook.Close
Set XL_Feuille = Nothing
Set XL_Classeur = Nothing
Set XL_App = Nothing
Exit Function
ErrorOLEAccessToExcel:
Beep
MsgBox "The Following OLE Error has occurred:" & vbCrLf &
err.Description, vbCritical, "OLE Error!"
Resume FinSub
End Function
bonjour
sinon va entre autre ici
http://rp.developpez.com/vb/tutoriels/faq/?page=Systeme#tuer_process
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" <ZZZgilbertvie@tiscali.fr> a écrit dans le message de news:
#YSEG$KvDHA.2520@TK2MSFTNGP10.phx.gbl...
Bonjour Pierre et merci de ta réponse.
La déclaration est publique dans un autre module.
Pour la fermeture j'utilise XL_App.ActiveWorkbook.Close.
J'ai ajouté la ligne XL_App.Quit, mais ça ne change rien au problème.
Gilbert
"Pierre CFI [mvp]" <XXX_pierresalaun@aol.com> a écrit dans le message de
news: OwKFQbAvDHA.1908@TK2MSFTNGP10.phx.gbl...
bonjour
je vois pas de XL_App.Quit, je vois pas d'ailleurs de déclaration de
XL_App
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" <ZZZgilbertvie@tiscali.fr> a écrit dans le message de news:
uRYh#MAvDHA.2244@TK2MSFTNGP09.phx.gbl...
Bonjour
Toujours dans l'automation Excel.
Lorsque j'exécute la procédure ci-dessous, j'ai les résultats
suivants:
1° essai : OK, mais un process Excel.exe existe encore après la fin
de
la
procédure.
Si je supprime ce process, au 2° essai, j'ai le message "Le serveur
distant
n'existe pas ou n'est pas disponible"
Si je ne le supprime pas, au 2° essai j'ai le message "Variable
objet ou
variable de bloc with non définie"
Si je ferme Access (ou même simplement ma base de données sans
fermer
Access) après le 1° essai, le process Excel est supprimé en même
temps.
Lorsque je redémarre Access, le 1° essai fonctionne,.... etc
Précision : lors du 2° essai, le process Excel est créé, puis est
supprimé
après que j'ai cliqué OK dans le message d'erreur, mais les essais
suivants
ne fonctionnent pas mieux.
Qu'est-ce que j'ai oublié?
Merci d'avance
Gilbert
Voici le code de ma procédure
Public Function AccessToExcelAutomation()
Const NbLignesAjoutees = 5
Dim rst As DAO.Recordset
Dim intCurrTask As Integer
Dim XL_Classeur As Excel.Workbook
Dim XL_Feuille As Excel.Worksheet
Dim rngCurr As Excel.Range
Dim fld As Field
Dim varColonne As Byte
Dim i As Integer
Dim j As Integer
Dim strtmp As String
On Error GoTo ErrorOLEAccessToExcel
Set rst = CurrentDb.OpenRecordset("Rqte_Tmp")
Set XL_App = CreateObject("Excel.Application")
Set XL_Classeur = XL_App.Workbooks.Open("D:Mes
documentsGilbertGretaModèlesModèle Heures.xlt")
Set XL_Feuille = XL_App.Sheets("Feuil1")
With XL_Feuille '-- Création des en-têtes de colonnes
varColonne = 1
For Each fld In rst.Fields
.Cells(1, varColonne).Value = fld.Name
varColonne = varColonne + 1
Next
End With
rst.MoveLast
rst.MoveFirst
'Copie des données
Set rngCurr = XL_Feuille.Range(XL_Feuille.Cells(3, 1),
XL_Feuille.Cells(2 +
rst.RecordCount, 3))
rngCurr.CopyFromRecordset rst
'Début du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_Feuille.Columns("A:E").AutoFit
XL_Feuille.Columns("F:ZZ").ColumnWidth = 6
XL_Feuille.Rows("1:1").AutoFit
XL_Feuille.Cells(2, 2) = XL_Feuille.Cells(3, 1)
XL_Feuille.Cells(2, 2).Font.Bold = True
XL_Feuille.Cells(2, 2).Font.Italic = True
XL_Feuille.Cells(2, 2).Font.Size = 14
strtmp = XL_Feuille.Cells(3, 1)
i = 4
Do While XL_Feuille.Cells(i, 1) <> ""
If XL_Feuille.Cells(i, 1).Value <> strtmp Then
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Select
XL_Feuille.Rows(i & ":" & i).Select
For j = 1 To NbLignesAjoutees
'========================================================================== > > > > 'C'est lors du premier passage sur cette ligne que se produisent les
erreurs
Selection.Insert Shift:=xlUp
'========================================================================== > > > > Next j
i = i + NbLignesAjoutees
XL_Feuille.Cells(i - 1, 2) = XL_Feuille.Cells(i, 1)
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Cells(i - 1, 2).Font.Bold = True
XL_Feuille.Cells(i - 1, 2).Font.Italic = True
XL_Feuille.Cells(i - 1, 2).Font.Size = 14
Rows(i - 1 & ":" & i - 1).Select
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
i = i + 1
Loop
XL_Feuille.Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
XL_Feuille.Cells(1, 1) = "Heures " & Chr(10) & "réalisées " &
Chr(10) &
MoisAnnee_Complet
With XL_Feuille.PageSetup
.RightFooter = "Page &P sur &N"
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 1
.HeaderMargin = 0
.FooterMargin = 0
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
End With
'Fin du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_App.Visible = True
FinSub:
XL_App.DisplayAlerts = False
XL_App.ActiveWorkbook.SaveAs ("Heures réalisées " &
MoisAnnee_Complet)
XL_App.DisplayAlerts = True
XL_App.ActiveWorkbook.Close
Set XL_Feuille = Nothing
Set XL_Classeur = Nothing
Set XL_App = Nothing
Exit Function
ErrorOLEAccessToExcel:
Beep
MsgBox "The Following OLE Error has occurred:" & vbCrLf &
err.Description, vbCritical, "OLE Error!"
Resume FinSub
End Function
bonjour
sinon va entre autre ici
http://rp.developpez.com/vb/tutoriels/faq/?page=Systeme#tuer_process
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" a écrit dans le message de news:
#YSEG$
Bonjour Pierre et merci de ta réponse.
La déclaration est publique dans un autre module.
Pour la fermeture j'utilise XL_App.ActiveWorkbook.Close.
J'ai ajouté la ligne XL_App.Quit, mais ça ne change rien au problème.
Gilbert
"Pierre CFI [mvp]" a écrit dans le message de
news:bonjour
je vois pas de XL_App.Quit, je vois pas d'ailleurs de déclaration de
XL_App
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" a écrit dans le message de news:
uRYh#Bonjour
Toujours dans l'automation Excel.
Lorsque j'exécute la procédure ci-dessous, j'ai les résultats
suivants:
1° essai : OK, mais un process Excel.exe existe encore après la fin
de
laprocédure.
Si je supprime ce process, au 2° essai, j'ai le message "Le serveur
distantn'existe pas ou n'est pas disponible"
Si je ne le supprime pas, au 2° essai j'ai le message "Variable
objet ou
variable de bloc with non définie"
Si je ferme Access (ou même simplement ma base de données sans
fermer
Access) après le 1° essai, le process Excel est supprimé en même
temps.
Lorsque je redémarre Access, le 1° essai fonctionne,.... etc
Précision : lors du 2° essai, le process Excel est créé, puis est
suppriméaprès que j'ai cliqué OK dans le message d'erreur, mais les essais
suivantsne fonctionnent pas mieux.
Qu'est-ce que j'ai oublié?
Merci d'avance
Gilbert
Voici le code de ma procédure
Public Function AccessToExcelAutomation()
Const NbLignesAjoutees = 5
Dim rst As DAO.Recordset
Dim intCurrTask As Integer
Dim XL_Classeur As Excel.Workbook
Dim XL_Feuille As Excel.Worksheet
Dim rngCurr As Excel.Range
Dim fld As Field
Dim varColonne As Byte
Dim i As Integer
Dim j As Integer
Dim strtmp As String
On Error GoTo ErrorOLEAccessToExcel
Set rst = CurrentDb.OpenRecordset("Rqte_Tmp")
Set XL_App = CreateObject("Excel.Application")
Set XL_Classeur = XL_App.Workbooks.Open("D:Mes
documentsGilbertGretaModèlesModèle Heures.xlt")
Set XL_Feuille = XL_App.Sheets("Feuil1")
With XL_Feuille '-- Création des en-têtes de colonnes
varColonne = 1
For Each fld In rst.Fields
.Cells(1, varColonne).Value = fld.Name
varColonne = varColonne + 1
Next
End With
rst.MoveLast
rst.MoveFirst
'Copie des données
Set rngCurr = XL_Feuille.Range(XL_Feuille.Cells(3, 1),
XL_Feuille.Cells(2 +rst.RecordCount, 3))
rngCurr.CopyFromRecordset rst
'Début du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_Feuille.Columns("A:E").AutoFit
XL_Feuille.Columns("F:ZZ").ColumnWidth = 6
XL_Feuille.Rows("1:1").AutoFit
XL_Feuille.Cells(2, 2) = XL_Feuille.Cells(3, 1)
XL_Feuille.Cells(2, 2).Font.Bold = True
XL_Feuille.Cells(2, 2).Font.Italic = True
XL_Feuille.Cells(2, 2).Font.Size = 14
strtmp = XL_Feuille.Cells(3, 1)
i = 4
Do While XL_Feuille.Cells(i, 1) <> ""
If XL_Feuille.Cells(i, 1).Value <> strtmp Then
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Select
XL_Feuille.Rows(i & ":" & i).Select
For j = 1 To NbLignesAjoutees
'========================================================================== > > > > 'C'est lors du premier passage sur cette ligne que se produisent les
erreursSelection.Insert Shift:=xlUp
'========================================================================== > > > > Next j
i = i + NbLignesAjoutees
XL_Feuille.Cells(i - 1, 2) = XL_Feuille.Cells(i, 1)
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Cells(i - 1, 2).Font.Bold = True
XL_Feuille.Cells(i - 1, 2).Font.Italic = True
XL_Feuille.Cells(i - 1, 2).Font.Size = 14
Rows(i - 1 & ":" & i - 1).Select
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
i = i + 1
Loop
XL_Feuille.Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
XL_Feuille.Cells(1, 1) = "Heures " & Chr(10) & "réalisées " &
Chr(10) &
MoisAnnee_Complet
With XL_Feuille.PageSetup
.RightFooter = "Page &P sur &N"
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 1
.HeaderMargin = 0
.FooterMargin = 0
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
End With
'Fin du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_App.Visible = True
FinSub:
XL_App.DisplayAlerts = False
XL_App.ActiveWorkbook.SaveAs ("Heures réalisées " &
MoisAnnee_Complet)XL_App.DisplayAlerts = True
XL_App.ActiveWorkbook.Close
Set XL_Feuille = Nothing
Set XL_Classeur = Nothing
Set XL_App = Nothing
Exit Function
ErrorOLEAccessToExcel:
Beep
MsgBox "The Following OLE Error has occurred:" & vbCrLf &
err.Description, vbCritical, "OLE Error!"
Resume FinSub
End Function
bonjour
sinon va entre autre ici
http://rp.developpez.com/vb/tutoriels/faq/?page=Systeme#tuer_process
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" a écrit dans le message de news:
#YSEG$
Bonjour Pierre et merci de ta réponse.
La déclaration est publique dans un autre module.
Pour la fermeture j'utilise XL_App.ActiveWorkbook.Close.
J'ai ajouté la ligne XL_App.Quit, mais ça ne change rien au problème.
Gilbert
"Pierre CFI [mvp]" a écrit dans le message de
news:bonjour
je vois pas de XL_App.Quit, je vois pas d'ailleurs de déclaration de
XL_App
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" a écrit dans le message de news:
uRYh#Bonjour
Toujours dans l'automation Excel.
Lorsque j'exécute la procédure ci-dessous, j'ai les résultats
suivants:
1° essai : OK, mais un process Excel.exe existe encore après la fin
de
laprocédure.
Si je supprime ce process, au 2° essai, j'ai le message "Le serveur
distantn'existe pas ou n'est pas disponible"
Si je ne le supprime pas, au 2° essai j'ai le message "Variable
objet ou
variable de bloc with non définie"
Si je ferme Access (ou même simplement ma base de données sans
fermer
Access) après le 1° essai, le process Excel est supprimé en même
temps.
Lorsque je redémarre Access, le 1° essai fonctionne,.... etc
Précision : lors du 2° essai, le process Excel est créé, puis est
suppriméaprès que j'ai cliqué OK dans le message d'erreur, mais les essais
suivantsne fonctionnent pas mieux.
Qu'est-ce que j'ai oublié?
Merci d'avance
Gilbert
Voici le code de ma procédure
Public Function AccessToExcelAutomation()
Const NbLignesAjoutees = 5
Dim rst As DAO.Recordset
Dim intCurrTask As Integer
Dim XL_Classeur As Excel.Workbook
Dim XL_Feuille As Excel.Worksheet
Dim rngCurr As Excel.Range
Dim fld As Field
Dim varColonne As Byte
Dim i As Integer
Dim j As Integer
Dim strtmp As String
On Error GoTo ErrorOLEAccessToExcel
Set rst = CurrentDb.OpenRecordset("Rqte_Tmp")
Set XL_App = CreateObject("Excel.Application")
Set XL_Classeur = XL_App.Workbooks.Open("D:Mes
documentsGilbertGretaModèlesModèle Heures.xlt")
Set XL_Feuille = XL_App.Sheets("Feuil1")
With XL_Feuille '-- Création des en-têtes de colonnes
varColonne = 1
For Each fld In rst.Fields
.Cells(1, varColonne).Value = fld.Name
varColonne = varColonne + 1
Next
End With
rst.MoveLast
rst.MoveFirst
'Copie des données
Set rngCurr = XL_Feuille.Range(XL_Feuille.Cells(3, 1),
XL_Feuille.Cells(2 +rst.RecordCount, 3))
rngCurr.CopyFromRecordset rst
'Début du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_Feuille.Columns("A:E").AutoFit
XL_Feuille.Columns("F:ZZ").ColumnWidth = 6
XL_Feuille.Rows("1:1").AutoFit
XL_Feuille.Cells(2, 2) = XL_Feuille.Cells(3, 1)
XL_Feuille.Cells(2, 2).Font.Bold = True
XL_Feuille.Cells(2, 2).Font.Italic = True
XL_Feuille.Cells(2, 2).Font.Size = 14
strtmp = XL_Feuille.Cells(3, 1)
i = 4
Do While XL_Feuille.Cells(i, 1) <> ""
If XL_Feuille.Cells(i, 1).Value <> strtmp Then
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Select
XL_Feuille.Rows(i & ":" & i).Select
For j = 1 To NbLignesAjoutees
'========================================================================== > > > > 'C'est lors du premier passage sur cette ligne que se produisent les
erreursSelection.Insert Shift:=xlUp
'========================================================================== > > > > Next j
i = i + NbLignesAjoutees
XL_Feuille.Cells(i - 1, 2) = XL_Feuille.Cells(i, 1)
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Cells(i - 1, 2).Font.Bold = True
XL_Feuille.Cells(i - 1, 2).Font.Italic = True
XL_Feuille.Cells(i - 1, 2).Font.Size = 14
Rows(i - 1 & ":" & i - 1).Select
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
i = i + 1
Loop
XL_Feuille.Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
XL_Feuille.Cells(1, 1) = "Heures " & Chr(10) & "réalisées " &
Chr(10) &
MoisAnnee_Complet
With XL_Feuille.PageSetup
.RightFooter = "Page &P sur &N"
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 1
.HeaderMargin = 0
.FooterMargin = 0
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
End With
'Fin du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_App.Visible = True
FinSub:
XL_App.DisplayAlerts = False
XL_App.ActiveWorkbook.SaveAs ("Heures réalisées " &
MoisAnnee_Complet)XL_App.DisplayAlerts = True
XL_App.ActiveWorkbook.Close
Set XL_Feuille = Nothing
Set XL_Classeur = Nothing
Set XL_App = Nothing
Exit Function
ErrorOLEAccessToExcel:
Beep
MsgBox "The Following OLE Error has occurred:" & vbCrLf &
err.Description, vbCritical, "OLE Error!"
Resume FinSub
End Function
bonjour
sinon va entre autre ici
http://rp.developpez.com/vb/tutoriels/faq/?page=Systeme#tuer_process
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" <ZZZgilbertvie@tiscali.fr> a écrit dans le message de news:
#YSEG$KvDHA.2520@TK2MSFTNGP10.phx.gbl...
Bonjour Pierre et merci de ta réponse.
La déclaration est publique dans un autre module.
Pour la fermeture j'utilise XL_App.ActiveWorkbook.Close.
J'ai ajouté la ligne XL_App.Quit, mais ça ne change rien au problème.
Gilbert
"Pierre CFI [mvp]" <XXX_pierresalaun@aol.com> a écrit dans le message de
news: OwKFQbAvDHA.1908@TK2MSFTNGP10.phx.gbl...
bonjour
je vois pas de XL_App.Quit, je vois pas d'ailleurs de déclaration de
XL_App
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" <ZZZgilbertvie@tiscali.fr> a écrit dans le message de news:
uRYh#MAvDHA.2244@TK2MSFTNGP09.phx.gbl...
Bonjour
Toujours dans l'automation Excel.
Lorsque j'exécute la procédure ci-dessous, j'ai les résultats
suivants:
1° essai : OK, mais un process Excel.exe existe encore après la fin
de
la
procédure.
Si je supprime ce process, au 2° essai, j'ai le message "Le serveur
distant
n'existe pas ou n'est pas disponible"
Si je ne le supprime pas, au 2° essai j'ai le message "Variable
objet ou
variable de bloc with non définie"
Si je ferme Access (ou même simplement ma base de données sans
fermer
Access) après le 1° essai, le process Excel est supprimé en même
temps.
Lorsque je redémarre Access, le 1° essai fonctionne,.... etc
Précision : lors du 2° essai, le process Excel est créé, puis est
supprimé
après que j'ai cliqué OK dans le message d'erreur, mais les essais
suivants
ne fonctionnent pas mieux.
Qu'est-ce que j'ai oublié?
Merci d'avance
Gilbert
Voici le code de ma procédure
Public Function AccessToExcelAutomation()
Const NbLignesAjoutees = 5
Dim rst As DAO.Recordset
Dim intCurrTask As Integer
Dim XL_Classeur As Excel.Workbook
Dim XL_Feuille As Excel.Worksheet
Dim rngCurr As Excel.Range
Dim fld As Field
Dim varColonne As Byte
Dim i As Integer
Dim j As Integer
Dim strtmp As String
On Error GoTo ErrorOLEAccessToExcel
Set rst = CurrentDb.OpenRecordset("Rqte_Tmp")
Set XL_App = CreateObject("Excel.Application")
Set XL_Classeur = XL_App.Workbooks.Open("D:Mes
documentsGilbertGretaModèlesModèle Heures.xlt")
Set XL_Feuille = XL_App.Sheets("Feuil1")
With XL_Feuille '-- Création des en-têtes de colonnes
varColonne = 1
For Each fld In rst.Fields
.Cells(1, varColonne).Value = fld.Name
varColonne = varColonne + 1
Next
End With
rst.MoveLast
rst.MoveFirst
'Copie des données
Set rngCurr = XL_Feuille.Range(XL_Feuille.Cells(3, 1),
XL_Feuille.Cells(2 +
rst.RecordCount, 3))
rngCurr.CopyFromRecordset rst
'Début du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_Feuille.Columns("A:E").AutoFit
XL_Feuille.Columns("F:ZZ").ColumnWidth = 6
XL_Feuille.Rows("1:1").AutoFit
XL_Feuille.Cells(2, 2) = XL_Feuille.Cells(3, 1)
XL_Feuille.Cells(2, 2).Font.Bold = True
XL_Feuille.Cells(2, 2).Font.Italic = True
XL_Feuille.Cells(2, 2).Font.Size = 14
strtmp = XL_Feuille.Cells(3, 1)
i = 4
Do While XL_Feuille.Cells(i, 1) <> ""
If XL_Feuille.Cells(i, 1).Value <> strtmp Then
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Select
XL_Feuille.Rows(i & ":" & i).Select
For j = 1 To NbLignesAjoutees
'========================================================================== > > > > 'C'est lors du premier passage sur cette ligne que se produisent les
erreurs
Selection.Insert Shift:=xlUp
'========================================================================== > > > > Next j
i = i + NbLignesAjoutees
XL_Feuille.Cells(i - 1, 2) = XL_Feuille.Cells(i, 1)
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Cells(i - 1, 2).Font.Bold = True
XL_Feuille.Cells(i - 1, 2).Font.Italic = True
XL_Feuille.Cells(i - 1, 2).Font.Size = 14
Rows(i - 1 & ":" & i - 1).Select
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
i = i + 1
Loop
XL_Feuille.Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
XL_Feuille.Cells(1, 1) = "Heures " & Chr(10) & "réalisées " &
Chr(10) &
MoisAnnee_Complet
With XL_Feuille.PageSetup
.RightFooter = "Page &P sur &N"
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 1
.HeaderMargin = 0
.FooterMargin = 0
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
End With
'Fin du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_App.Visible = True
FinSub:
XL_App.DisplayAlerts = False
XL_App.ActiveWorkbook.SaveAs ("Heures réalisées " &
MoisAnnee_Complet)
XL_App.DisplayAlerts = True
XL_App.ActiveWorkbook.Close
Set XL_Feuille = Nothing
Set XL_Classeur = Nothing
Set XL_App = Nothing
Exit Function
ErrorOLEAccessToExcel:
Beep
MsgBox "The Following OLE Error has occurred:" & vbCrLf &
err.Description, vbCritical, "OLE Error!"
Resume FinSub
End Function
bonjour
sinon va entre autre ici
http://rp.developpez.com/vb/tutoriels/faq/?page=Systeme#tuer_process
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" a écrit dans le message de news:
#YSEG$
Bonjour Pierre et merci de ta réponse.
La déclaration est publique dans un autre module.
Pour la fermeture j'utilise XL_App.ActiveWorkbook.Close.
J'ai ajouté la ligne XL_App.Quit, mais ça ne change rien au problème.
Gilbert
"Pierre CFI [mvp]" a écrit dans le message de
news:bonjour
je vois pas de XL_App.Quit, je vois pas d'ailleurs de déclaration de
XL_App
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Gilbert" a écrit dans le message de news:
uRYh#Bonjour
Toujours dans l'automation Excel.
Lorsque j'exécute la procédure ci-dessous, j'ai les résultats
suivants:
1° essai : OK, mais un process Excel.exe existe encore après la fin
de
laprocédure.
Si je supprime ce process, au 2° essai, j'ai le message "Le serveur
distantn'existe pas ou n'est pas disponible"
Si je ne le supprime pas, au 2° essai j'ai le message "Variable
objet ou
variable de bloc with non définie"
Si je ferme Access (ou même simplement ma base de données sans
fermer
Access) après le 1° essai, le process Excel est supprimé en même
temps.
Lorsque je redémarre Access, le 1° essai fonctionne,.... etc
Précision : lors du 2° essai, le process Excel est créé, puis est
suppriméaprès que j'ai cliqué OK dans le message d'erreur, mais les essais
suivantsne fonctionnent pas mieux.
Qu'est-ce que j'ai oublié?
Merci d'avance
Gilbert
Voici le code de ma procédure
Public Function AccessToExcelAutomation()
Const NbLignesAjoutees = 5
Dim rst As DAO.Recordset
Dim intCurrTask As Integer
Dim XL_Classeur As Excel.Workbook
Dim XL_Feuille As Excel.Worksheet
Dim rngCurr As Excel.Range
Dim fld As Field
Dim varColonne As Byte
Dim i As Integer
Dim j As Integer
Dim strtmp As String
On Error GoTo ErrorOLEAccessToExcel
Set rst = CurrentDb.OpenRecordset("Rqte_Tmp")
Set XL_App = CreateObject("Excel.Application")
Set XL_Classeur = XL_App.Workbooks.Open("D:Mes
documentsGilbertGretaModèlesModèle Heures.xlt")
Set XL_Feuille = XL_App.Sheets("Feuil1")
With XL_Feuille '-- Création des en-têtes de colonnes
varColonne = 1
For Each fld In rst.Fields
.Cells(1, varColonne).Value = fld.Name
varColonne = varColonne + 1
Next
End With
rst.MoveLast
rst.MoveFirst
'Copie des données
Set rngCurr = XL_Feuille.Range(XL_Feuille.Cells(3, 1),
XL_Feuille.Cells(2 +rst.RecordCount, 3))
rngCurr.CopyFromRecordset rst
'Début du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_Feuille.Columns("A:E").AutoFit
XL_Feuille.Columns("F:ZZ").ColumnWidth = 6
XL_Feuille.Rows("1:1").AutoFit
XL_Feuille.Cells(2, 2) = XL_Feuille.Cells(3, 1)
XL_Feuille.Cells(2, 2).Font.Bold = True
XL_Feuille.Cells(2, 2).Font.Italic = True
XL_Feuille.Cells(2, 2).Font.Size = 14
strtmp = XL_Feuille.Cells(3, 1)
i = 4
Do While XL_Feuille.Cells(i, 1) <> ""
If XL_Feuille.Cells(i, 1).Value <> strtmp Then
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Select
XL_Feuille.Rows(i & ":" & i).Select
For j = 1 To NbLignesAjoutees
'========================================================================== > > > > 'C'est lors du premier passage sur cette ligne que se produisent les
erreursSelection.Insert Shift:=xlUp
'========================================================================== > > > > Next j
i = i + NbLignesAjoutees
XL_Feuille.Cells(i - 1, 2) = XL_Feuille.Cells(i, 1)
strtmp = XL_Feuille.Cells(i, 1)
XL_Feuille.Cells(i - 1, 2).Font.Bold = True
XL_Feuille.Cells(i - 1, 2).Font.Italic = True
XL_Feuille.Cells(i - 1, 2).Font.Size = 14
Rows(i - 1 & ":" & i - 1).Select
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
i = i + 1
Loop
XL_Feuille.Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
XL_Feuille.Cells(1, 1) = "Heures " & Chr(10) & "réalisées " &
Chr(10) &
MoisAnnee_Complet
With XL_Feuille.PageSetup
.RightFooter = "Page &P sur &N"
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 1
.HeaderMargin = 0
.FooterMargin = 0
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
End With
'Fin du traitement du fichier
Excel ----------------------------------------------------------------------
-
XL_App.Visible = True
FinSub:
XL_App.DisplayAlerts = False
XL_App.ActiveWorkbook.SaveAs ("Heures réalisées " &
MoisAnnee_Complet)XL_App.DisplayAlerts = True
XL_App.ActiveWorkbook.Close
Set XL_Feuille = Nothing
Set XL_Classeur = Nothing
Set XL_App = Nothing
Exit Function
ErrorOLEAccessToExcel:
Beep
MsgBox "The Following OLE Error has occurred:" & vbCrLf &
err.Description, vbCritical, "OLE Error!"
Resume FinSub
End Function