Bonjour,
Voilà, je suis en train de créer un fichier Access qui me permet d'envoyer
des
données sur Excel. Jusque là pas de soucis (pour ainsi dire)
Mon bouton qui me permet de faire l'export marche bien au 1er clique, par
contre au 2ème, j'ai droit au message suivant:
"la méthode 'sheets' de l'objet '_global' a échoué"
Le truc c'est que je peux être amené à faire 2 fois (ou plus) le transfert
car
ca se fait a chaque fois en fonction de date.
Si je ferme le fichier Acces et que je le réouvre, alors pas de soucis, je
peux
faire un export.... mais pas 2!
Je vous donne mon code, si dès fois quelqu'un avait une idée il m'aiderait
grandement.
On Error GoTo Err_Commande4_Click
Dim xlApp As Excel.Application
Dim wbk As Excel.Workbook
Dim sht As Excel.Worksheet
Dim rst As DAO.Recordset
Dim maFeuil As String
' Créer un objet Excel (ce qui équivaut à démarrer Excel à distance)
Set xlApp = CreateObject("Excel.Application")
' Rendre Excel visible
xlApp.Visible = True
' xlApp.Visible = False
' Ouvrir Classeur
Set wbk = xlApp.Workbooks.Open("C:C'pil & face.xls")
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = True
End If
Next
' Regarde si la feuille STAT du mois existe
maFeuil = "Stat-" & Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
' Efface puis Rentre les données de Stat
With wbk.Sheets(maFeuil)
'Effacer destination
.Range("A2:C65535").Clear
End With
xlApp.Range("A2").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = "Stat-" & Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ajouter en entête des colonnes
xlApp.Range("A1").Value = "Dates (mois)"
xlApp.Range("B1").Value = "Villes"
xlApp.Range("C1").Value = "Nbr"
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
End If
' Regarde si la feuille du mois existe
maFeuil = Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
xlApp.Range("A1").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("I:I").Delete
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ajouter en entête des colonnes
Dim intI As Integer
For intI = 0 To rst.Fields.Count - 1
sht.Cells(1, intI + 1).Value = rst.Fields(intI).Name
Next
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("D:D").NumberFormat = "# ##0.00 €"
xlApp.Columns("E:E").NumberFormat = "# ##0.00 €"
xlApp.Columns("F:F").NumberFormat = "0.00%"
xlApp.Columns("G:G").NumberFormat = "# ##0.00 €"
xlApp.Columns("H:H").Delete
End If
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = False
End If
Next
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
' Valide l'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Mise_a_Jour_Export", , acAdd
DoCmd.SetWarnings True
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
Merci par avance !
Bonjour,
Voilà, je suis en train de créer un fichier Access qui me permet d'envoyer
des
données sur Excel. Jusque là pas de soucis (pour ainsi dire)
Mon bouton qui me permet de faire l'export marche bien au 1er clique, par
contre au 2ème, j'ai droit au message suivant:
"la méthode 'sheets' de l'objet '_global' a échoué"
Le truc c'est que je peux être amené à faire 2 fois (ou plus) le transfert
car
ca se fait a chaque fois en fonction de date.
Si je ferme le fichier Acces et que je le réouvre, alors pas de soucis, je
peux
faire un export.... mais pas 2!
Je vous donne mon code, si dès fois quelqu'un avait une idée il m'aiderait
grandement.
On Error GoTo Err_Commande4_Click
Dim xlApp As Excel.Application
Dim wbk As Excel.Workbook
Dim sht As Excel.Worksheet
Dim rst As DAO.Recordset
Dim maFeuil As String
' Créer un objet Excel (ce qui équivaut à démarrer Excel à distance)
Set xlApp = CreateObject("Excel.Application")
' Rendre Excel visible
xlApp.Visible = True
' xlApp.Visible = False
' Ouvrir Classeur
Set wbk = xlApp.Workbooks.Open("C:C'pil & face.xls")
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = True
End If
Next
' Regarde si la feuille STAT du mois existe
maFeuil = "Stat-" & Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
' Efface puis Rentre les données de Stat
With wbk.Sheets(maFeuil)
'Effacer destination
.Range("A2:C65535").Clear
End With
xlApp.Range("A2").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = "Stat-" & Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ajouter en entête des colonnes
xlApp.Range("A1").Value = "Dates (mois)"
xlApp.Range("B1").Value = "Villes"
xlApp.Range("C1").Value = "Nbr"
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
End If
' Regarde si la feuille du mois existe
maFeuil = Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
xlApp.Range("A1").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("I:I").Delete
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ajouter en entête des colonnes
Dim intI As Integer
For intI = 0 To rst.Fields.Count - 1
sht.Cells(1, intI + 1).Value = rst.Fields(intI).Name
Next
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("D:D").NumberFormat = "# ##0.00 €"
xlApp.Columns("E:E").NumberFormat = "# ##0.00 €"
xlApp.Columns("F:F").NumberFormat = "0.00%"
xlApp.Columns("G:G").NumberFormat = "# ##0.00 €"
xlApp.Columns("H:H").Delete
End If
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = False
End If
Next
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
' Valide l'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Mise_a_Jour_Export", , acAdd
DoCmd.SetWarnings True
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
Merci par avance !
Bonjour,
Voilà, je suis en train de créer un fichier Access qui me permet d'envoyer
des
données sur Excel. Jusque là pas de soucis (pour ainsi dire)
Mon bouton qui me permet de faire l'export marche bien au 1er clique, par
contre au 2ème, j'ai droit au message suivant:
"la méthode 'sheets' de l'objet '_global' a échoué"
Le truc c'est que je peux être amené à faire 2 fois (ou plus) le transfert
car
ca se fait a chaque fois en fonction de date.
Si je ferme le fichier Acces et que je le réouvre, alors pas de soucis, je
peux
faire un export.... mais pas 2!
Je vous donne mon code, si dès fois quelqu'un avait une idée il m'aiderait
grandement.
On Error GoTo Err_Commande4_Click
Dim xlApp As Excel.Application
Dim wbk As Excel.Workbook
Dim sht As Excel.Worksheet
Dim rst As DAO.Recordset
Dim maFeuil As String
' Créer un objet Excel (ce qui équivaut à démarrer Excel à distance)
Set xlApp = CreateObject("Excel.Application")
' Rendre Excel visible
xlApp.Visible = True
' xlApp.Visible = False
' Ouvrir Classeur
Set wbk = xlApp.Workbooks.Open("C:C'pil & face.xls")
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = True
End If
Next
' Regarde si la feuille STAT du mois existe
maFeuil = "Stat-" & Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
' Efface puis Rentre les données de Stat
With wbk.Sheets(maFeuil)
'Effacer destination
.Range("A2:C65535").Clear
End With
xlApp.Range("A2").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = "Stat-" & Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ajouter en entête des colonnes
xlApp.Range("A1").Value = "Dates (mois)"
xlApp.Range("B1").Value = "Villes"
xlApp.Range("C1").Value = "Nbr"
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
End If
' Regarde si la feuille du mois existe
maFeuil = Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
xlApp.Range("A1").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("I:I").Delete
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ajouter en entête des colonnes
Dim intI As Integer
For intI = 0 To rst.Fields.Count - 1
sht.Cells(1, intI + 1).Value = rst.Fields(intI).Name
Next
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("D:D").NumberFormat = "# ##0.00 €"
xlApp.Columns("E:E").NumberFormat = "# ##0.00 €"
xlApp.Columns("F:F").NumberFormat = "0.00%"
xlApp.Columns("G:G").NumberFormat = "# ##0.00 €"
xlApp.Columns("H:H").Delete
End If
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = False
End If
Next
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
' Valide l'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Mise_a_Jour_Export", , acAdd
DoCmd.SetWarnings True
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
Merci par avance !
...
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
...
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
...
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
Selon : Bonjour ou bonsoir
Ah ! et tu ne dis pas que c'est l'erreur 1004 !
Dis nous à quelle ligne ça cloche, cela nous aiderais !
Cdt, Blaise
---- ---- ----
"amsa" a écrit dans le
message de news:Bonjour,
Voilà, je suis en train de créer un fichier Access qui me permet
d'envoyer
des
données sur Excel. Jusque là pas de soucis (pour ainsi dire)
Mon bouton qui me permet de faire l'export marche bien au 1er clique, par
contre au 2ème, j'ai droit au message suivant:
"la méthode 'sheets' de l'objet '_global' a
échoué"
Le truc c'est que je peux être amené à faire 2 fois (ou
plus) le transfert
car
ca se fait a chaque fois en fonction de date.
Si je ferme le fichier Acces et que je le réouvre, alors pas de soucis,
je
peux
faire un export.... mais pas 2!
Je vous donne mon code, si dès fois quelqu'un avait une idée il
m'aiderait
grandement.
On Error GoTo Err_Commande4_Click
Dim xlApp As Excel.Application
Dim wbk As Excel.Workbook
Dim sht As Excel.Worksheet
Dim rst As DAO.Recordset
Dim maFeuil As String
' Créer un objet Excel (ce qui équivaut à démarrer
Excel à distance)
Set xlApp = CreateObject("Excel.Application")
' Rendre Excel visible
xlApp.Visible = True
' xlApp.Visible = False
' Ouvrir Classeur
Set wbk = xlApp.Workbooks.Open("C:C'pil & face.xls")
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = True
End If
Next
' Regarde si la feuille STAT du mois existe
maFeuil = "Stat-" & Month(Calendar) & "-" &
Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
' Efface puis Rentre les données de Stat
With wbk.Sheets(maFeuil)
'Effacer destination
.Range("A2:C65535").Clear
End With
xlApp.Range("A2").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = "Stat-" & Month(Calendar) & "-" &
Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ajouter en entête des colonnes
xlApp.Range("A1").Value = "Dates (mois)"
xlApp.Range("B1").Value = "Villes"
xlApp.Range("C1").Value = "Nbr"
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
End If
' Regarde si la feuille du mois existe
maFeuil = Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
xlApp.Range("A1").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("I:I").Delete
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ajouter en entête des colonnes
Dim intI As Integer
For intI = 0 To rst.Fields.Count - 1
sht.Cells(1, intI + 1).Value = rst.Fields(intI).Name
Next
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("D:D").NumberFormat = "# ##0.00 €"
xlApp.Columns("E:E").NumberFormat = "# ##0.00 €"
xlApp.Columns("F:F").NumberFormat = "0.00%"
xlApp.Columns("G:G").NumberFormat = "# ##0.00 €"
xlApp.Columns("H:H").Delete
End If
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = False
End If
Next
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
' Valide l'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Mise_a_Jour_Export", , acAdd
DoCmd.SetWarnings True
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
Merci par avance !
Selon : Bonjour ou bonsoir
Ah ! et tu ne dis pas que c'est l'erreur 1004 !
Dis nous à quelle ligne ça cloche, cela nous aiderais !
Cdt, Blaise
---- ---- ----
"amsa" a écrit dans le
message de news:
Bonjour,
Voilà, je suis en train de créer un fichier Access qui me permet
d'envoyer
des
données sur Excel. Jusque là pas de soucis (pour ainsi dire)
Mon bouton qui me permet de faire l'export marche bien au 1er clique, par
contre au 2ème, j'ai droit au message suivant:
"la méthode 'sheets' de l'objet '_global' a
échoué"
Le truc c'est que je peux être amené à faire 2 fois (ou
plus) le transfert
car
ca se fait a chaque fois en fonction de date.
Si je ferme le fichier Acces et que je le réouvre, alors pas de soucis,
je
peux
faire un export.... mais pas 2!
Je vous donne mon code, si dès fois quelqu'un avait une idée il
m'aiderait
grandement.
On Error GoTo Err_Commande4_Click
Dim xlApp As Excel.Application
Dim wbk As Excel.Workbook
Dim sht As Excel.Worksheet
Dim rst As DAO.Recordset
Dim maFeuil As String
' Créer un objet Excel (ce qui équivaut à démarrer
Excel à distance)
Set xlApp = CreateObject("Excel.Application")
' Rendre Excel visible
xlApp.Visible = True
' xlApp.Visible = False
' Ouvrir Classeur
Set wbk = xlApp.Workbooks.Open("C:C'pil & face.xls")
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = True
End If
Next
' Regarde si la feuille STAT du mois existe
maFeuil = "Stat-" & Month(Calendar) & "-" &
Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
' Efface puis Rentre les données de Stat
With wbk.Sheets(maFeuil)
'Effacer destination
.Range("A2:C65535").Clear
End With
xlApp.Range("A2").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = "Stat-" & Month(Calendar) & "-" &
Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ajouter en entête des colonnes
xlApp.Range("A1").Value = "Dates (mois)"
xlApp.Range("B1").Value = "Villes"
xlApp.Range("C1").Value = "Nbr"
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
End If
' Regarde si la feuille du mois existe
maFeuil = Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
xlApp.Range("A1").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("I:I").Delete
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ajouter en entête des colonnes
Dim intI As Integer
For intI = 0 To rst.Fields.Count - 1
sht.Cells(1, intI + 1).Value = rst.Fields(intI).Name
Next
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("D:D").NumberFormat = "# ##0.00 €"
xlApp.Columns("E:E").NumberFormat = "# ##0.00 €"
xlApp.Columns("F:F").NumberFormat = "0.00%"
xlApp.Columns("G:G").NumberFormat = "# ##0.00 €"
xlApp.Columns("H:H").Delete
End If
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = False
End If
Next
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
' Valide l'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Mise_a_Jour_Export", , acAdd
DoCmd.SetWarnings True
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
Merci par avance !
Selon : Bonjour ou bonsoir
Ah ! et tu ne dis pas que c'est l'erreur 1004 !
Dis nous à quelle ligne ça cloche, cela nous aiderais !
Cdt, Blaise
---- ---- ----
"amsa" a écrit dans le
message de news:Bonjour,
Voilà, je suis en train de créer un fichier Access qui me permet
d'envoyer
des
données sur Excel. Jusque là pas de soucis (pour ainsi dire)
Mon bouton qui me permet de faire l'export marche bien au 1er clique, par
contre au 2ème, j'ai droit au message suivant:
"la méthode 'sheets' de l'objet '_global' a
échoué"
Le truc c'est que je peux être amené à faire 2 fois (ou
plus) le transfert
car
ca se fait a chaque fois en fonction de date.
Si je ferme le fichier Acces et que je le réouvre, alors pas de soucis,
je
peux
faire un export.... mais pas 2!
Je vous donne mon code, si dès fois quelqu'un avait une idée il
m'aiderait
grandement.
On Error GoTo Err_Commande4_Click
Dim xlApp As Excel.Application
Dim wbk As Excel.Workbook
Dim sht As Excel.Worksheet
Dim rst As DAO.Recordset
Dim maFeuil As String
' Créer un objet Excel (ce qui équivaut à démarrer
Excel à distance)
Set xlApp = CreateObject("Excel.Application")
' Rendre Excel visible
xlApp.Visible = True
' xlApp.Visible = False
' Ouvrir Classeur
Set wbk = xlApp.Workbooks.Open("C:C'pil & face.xls")
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = True
End If
Next
' Regarde si la feuille STAT du mois existe
maFeuil = "Stat-" & Month(Calendar) & "-" &
Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
' Efface puis Rentre les données de Stat
With wbk.Sheets(maFeuil)
'Effacer destination
.Range("A2:C65535").Clear
End With
xlApp.Range("A2").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = "Stat-" & Month(Calendar) & "-" &
Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ajouter en entête des colonnes
xlApp.Range("A1").Value = "Dates (mois)"
xlApp.Range("B1").Value = "Villes"
xlApp.Range("C1").Value = "Nbr"
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
End If
' Regarde si la feuille du mois existe
maFeuil = Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
xlApp.Range("A1").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("I:I").Delete
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ajouter en entête des colonnes
Dim intI As Integer
For intI = 0 To rst.Fields.Count - 1
sht.Cells(1, intI + 1).Value = rst.Fields(intI).Name
Next
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("D:D").NumberFormat = "# ##0.00 €"
xlApp.Columns("E:E").NumberFormat = "# ##0.00 €"
xlApp.Columns("F:F").NumberFormat = "0.00%"
xlApp.Columns("G:G").NumberFormat = "# ##0.00 €"
xlApp.Columns("H:H").Delete
End If
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = False
End If
Next
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
' Valide l'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Mise_a_Jour_Export", , acAdd
DoCmd.SetWarnings True
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
Merci par avance !
amsa a écrit :
>...
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
Peut-être en ajoutant ici :
Set rst=Nothing
db
amsa a écrit :
>
...
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
Peut-être en ajoutant ici :
Set rst=Nothing
db
amsa a écrit :
>...
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
Peut-être en ajoutant ici :
Set rst=Nothing
db
Bonjour,
Voilà, je suis en train de créer un fichier Access qui me permet d'envoyer
données sur Excel. Jusque là pas de soucis (pour ainsi dire)
Mon bouton qui me permet de faire l'export marche bien au 1er clique, par
contre au 2ème, j'ai droit au message suivant:
"la méthode 'sheets' de l'objet '_global' a échoué"
Le truc c'est que je peux être amené à faire 2 fois (ou plus) le transfert
ca se fait a chaque fois en fonction de date.
Si je ferme le fichier Acces et que je le réouvre, alors pas de soucis, je
faire un export.... mais pas 2!
Je vous donne mon code, si dès fois quelqu'un avait une idée il m'aiderait
grandement.
On Error GoTo Err_Commande4_Click
Dim xlApp As Excel.Application
Dim wbk As Excel.Workbook
Dim sht As Excel.Worksheet
Dim rst As DAO.Recordset
Dim maFeuil As String
' Créer un objet Excel (ce qui équivaut à démarrer Excel à distance)
Set xlApp = CreateObject("Excel.Application")
' Rendre Excel visible
xlApp.Visible = True
' xlApp.Visible = False
' Ouvrir Classeur
Set wbk = xlApp.Workbooks.Open("C:C'pil & face.xls")
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = True
End If
Next
' Regarde si la feuille STAT du mois existe
maFeuil = "Stat-" & Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
' Efface puis Rentre les données de Stat
With wbk.Sheets(maFeuil)
'Effacer destination
.Range("A2:C65535").Clear
End With
xlApp.Range("A2").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = "Stat-" & Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ajouter en entête des colonnes
xlApp.Range("A1").Value = "Dates (mois)"
xlApp.Range("B1").Value = "Villes"
xlApp.Range("C1").Value = "Nbr"
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
End If
' Regarde si la feuille du mois existe
maFeuil = Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
xlApp.Range("A1").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("I:I").Delete
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ajouter en entête des colonnes
Dim intI As Integer
For intI = 0 To rst.Fields.Count - 1
sht.Cells(1, intI + 1).Value = rst.Fields(intI).Name
Next
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("D:D").NumberFormat = "# ##0.00 €"
xlApp.Columns("E:E").NumberFormat = "# ##0.00 €"
xlApp.Columns("F:F").NumberFormat = "0.00%"
xlApp.Columns("G:G").NumberFormat = "# ##0.00 €"
xlApp.Columns("H:H").Delete
End If
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = False
End If
Next
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
' Valide l'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Mise_a_Jour_Export", , acAdd
DoCmd.SetWarnings True
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
Merci par avance !
Bonjour,
Voilà, je suis en train de créer un fichier Access qui me permet d'envoyer
données sur Excel. Jusque là pas de soucis (pour ainsi dire)
Mon bouton qui me permet de faire l'export marche bien au 1er clique, par
contre au 2ème, j'ai droit au message suivant:
"la méthode 'sheets' de l'objet '_global' a échoué"
Le truc c'est que je peux être amené à faire 2 fois (ou plus) le transfert
ca se fait a chaque fois en fonction de date.
Si je ferme le fichier Acces et que je le réouvre, alors pas de soucis, je
faire un export.... mais pas 2!
Je vous donne mon code, si dès fois quelqu'un avait une idée il m'aiderait
grandement.
On Error GoTo Err_Commande4_Click
Dim xlApp As Excel.Application
Dim wbk As Excel.Workbook
Dim sht As Excel.Worksheet
Dim rst As DAO.Recordset
Dim maFeuil As String
' Créer un objet Excel (ce qui équivaut à démarrer Excel à distance)
Set xlApp = CreateObject("Excel.Application")
' Rendre Excel visible
xlApp.Visible = True
' xlApp.Visible = False
' Ouvrir Classeur
Set wbk = xlApp.Workbooks.Open("C:C'pil & face.xls")
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = True
End If
Next
' Regarde si la feuille STAT du mois existe
maFeuil = "Stat-" & Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
' Efface puis Rentre les données de Stat
With wbk.Sheets(maFeuil)
'Effacer destination
.Range("A2:C65535").Clear
End With
xlApp.Range("A2").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = "Stat-" & Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ajouter en entête des colonnes
xlApp.Range("A1").Value = "Dates (mois)"
xlApp.Range("B1").Value = "Villes"
xlApp.Range("C1").Value = "Nbr"
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
End If
' Regarde si la feuille du mois existe
maFeuil = Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
xlApp.Range("A1").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("I:I").Delete
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ajouter en entête des colonnes
Dim intI As Integer
For intI = 0 To rst.Fields.Count - 1
sht.Cells(1, intI + 1).Value = rst.Fields(intI).Name
Next
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("D:D").NumberFormat = "# ##0.00 €"
xlApp.Columns("E:E").NumberFormat = "# ##0.00 €"
xlApp.Columns("F:F").NumberFormat = "0.00%"
xlApp.Columns("G:G").NumberFormat = "# ##0.00 €"
xlApp.Columns("H:H").Delete
End If
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = False
End If
Next
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
' Valide l'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Mise_a_Jour_Export", , acAdd
DoCmd.SetWarnings True
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
Merci par avance !
Bonjour,
Voilà, je suis en train de créer un fichier Access qui me permet d'envoyer
données sur Excel. Jusque là pas de soucis (pour ainsi dire)
Mon bouton qui me permet de faire l'export marche bien au 1er clique, par
contre au 2ème, j'ai droit au message suivant:
"la méthode 'sheets' de l'objet '_global' a échoué"
Le truc c'est que je peux être amené à faire 2 fois (ou plus) le transfert
ca se fait a chaque fois en fonction de date.
Si je ferme le fichier Acces et que je le réouvre, alors pas de soucis, je
faire un export.... mais pas 2!
Je vous donne mon code, si dès fois quelqu'un avait une idée il m'aiderait
grandement.
On Error GoTo Err_Commande4_Click
Dim xlApp As Excel.Application
Dim wbk As Excel.Workbook
Dim sht As Excel.Worksheet
Dim rst As DAO.Recordset
Dim maFeuil As String
' Créer un objet Excel (ce qui équivaut à démarrer Excel à distance)
Set xlApp = CreateObject("Excel.Application")
' Rendre Excel visible
xlApp.Visible = True
' xlApp.Visible = False
' Ouvrir Classeur
Set wbk = xlApp.Workbooks.Open("C:C'pil & face.xls")
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = True
End If
Next
' Regarde si la feuille STAT du mois existe
maFeuil = "Stat-" & Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
' Efface puis Rentre les données de Stat
With wbk.Sheets(maFeuil)
'Effacer destination
.Range("A2:C65535").Clear
End With
xlApp.Range("A2").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = "Stat-" & Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ajouter en entête des colonnes
xlApp.Range("A1").Value = "Dates (mois)"
xlApp.Range("B1").Value = "Villes"
xlApp.Range("C1").Value = "Nbr"
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
End If
' Regarde si la feuille du mois existe
maFeuil = Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
xlApp.Range("A1").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("I:I").Delete
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ajouter en entête des colonnes
Dim intI As Integer
For intI = 0 To rst.Fields.Count - 1
sht.Cells(1, intI + 1).Value = rst.Fields(intI).Name
Next
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("D:D").NumberFormat = "# ##0.00 €"
xlApp.Columns("E:E").NumberFormat = "# ##0.00 €"
xlApp.Columns("F:F").NumberFormat = "0.00%"
xlApp.Columns("G:G").NumberFormat = "# ##0.00 €"
xlApp.Columns("H:H").Delete
End If
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = False
End If
Next
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
' Valide l'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Mise_a_Jour_Export", , acAdd
DoCmd.SetWarnings True
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
Merci par avance !
Bonjour,
Peut-être en remplaçant
For Each sht In Sheets()
par
For Each sht In wbk.Sheets()
--
Cordialement,
Gilbert
"amsa" a écrit dans le
message de
news:Bonjour,
Voilà, je suis en train de créer un fichier Access qui me permet
d'envoyer
desdonnées sur Excel. Jusque là pas de soucis (pour ainsi dire)
Mon bouton qui me permet de faire l'export marche bien au 1er clique, par
contre au 2ème, j'ai droit au message suivant:
"la méthode 'sheets' de l'objet '_global' a
échoué"
Le truc c'est que je peux être amené à faire 2 fois (ou
plus) le transfert
carca se fait a chaque fois en fonction de date.
Si je ferme le fichier Acces et que je le réouvre, alors pas de soucis,
je
peuxfaire un export.... mais pas 2!
Je vous donne mon code, si dès fois quelqu'un avait une idée il
m'aiderait
grandement.
On Error GoTo Err_Commande4_Click
Dim xlApp As Excel.Application
Dim wbk As Excel.Workbook
Dim sht As Excel.Worksheet
Dim rst As DAO.Recordset
Dim maFeuil As String
' Créer un objet Excel (ce qui équivaut à démarrer
Excel à distance)
Set xlApp = CreateObject("Excel.Application")
' Rendre Excel visible
xlApp.Visible = True
' xlApp.Visible = False
' Ouvrir Classeur
Set wbk = xlApp.Workbooks.Open("C:C'pil & face.xls")
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = True
End If
Next
' Regarde si la feuille STAT du mois existe
maFeuil = "Stat-" & Month(Calendar) & "-" &
Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
' Efface puis Rentre les données de Stat
With wbk.Sheets(maFeuil)
'Effacer destination
.Range("A2:C65535").Clear
End With
xlApp.Range("A2").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = "Stat-" & Month(Calendar) & "-" &
Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ajouter en entête des colonnes
xlApp.Range("A1").Value = "Dates (mois)"
xlApp.Range("B1").Value = "Villes"
xlApp.Range("C1").Value = "Nbr"
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
End If
' Regarde si la feuille du mois existe
maFeuil = Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
xlApp.Range("A1").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("I:I").Delete
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ajouter en entête des colonnes
Dim intI As Integer
For intI = 0 To rst.Fields.Count - 1
sht.Cells(1, intI + 1).Value = rst.Fields(intI).Name
Next
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("D:D").NumberFormat = "# ##0.00 €"
xlApp.Columns("E:E").NumberFormat = "# ##0.00 €"
xlApp.Columns("F:F").NumberFormat = "0.00%"
xlApp.Columns("G:G").NumberFormat = "# ##0.00 €"
xlApp.Columns("H:H").Delete
End If
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = False
End If
Next
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
' Valide l'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Mise_a_Jour_Export", , acAdd
DoCmd.SetWarnings True
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
Merci par avance !
Bonjour,
Peut-être en remplaçant
For Each sht In Sheets()
par
For Each sht In wbk.Sheets()
--
Cordialement,
Gilbert
"amsa" a écrit dans le
message de
news:
Bonjour,
Voilà, je suis en train de créer un fichier Access qui me permet
d'envoyer
des
données sur Excel. Jusque là pas de soucis (pour ainsi dire)
Mon bouton qui me permet de faire l'export marche bien au 1er clique, par
contre au 2ème, j'ai droit au message suivant:
"la méthode 'sheets' de l'objet '_global' a
échoué"
Le truc c'est que je peux être amené à faire 2 fois (ou
plus) le transfert
car
ca se fait a chaque fois en fonction de date.
Si je ferme le fichier Acces et que je le réouvre, alors pas de soucis,
je
peux
faire un export.... mais pas 2!
Je vous donne mon code, si dès fois quelqu'un avait une idée il
m'aiderait
grandement.
On Error GoTo Err_Commande4_Click
Dim xlApp As Excel.Application
Dim wbk As Excel.Workbook
Dim sht As Excel.Worksheet
Dim rst As DAO.Recordset
Dim maFeuil As String
' Créer un objet Excel (ce qui équivaut à démarrer
Excel à distance)
Set xlApp = CreateObject("Excel.Application")
' Rendre Excel visible
xlApp.Visible = True
' xlApp.Visible = False
' Ouvrir Classeur
Set wbk = xlApp.Workbooks.Open("C:C'pil & face.xls")
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = True
End If
Next
' Regarde si la feuille STAT du mois existe
maFeuil = "Stat-" & Month(Calendar) & "-" &
Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
' Efface puis Rentre les données de Stat
With wbk.Sheets(maFeuil)
'Effacer destination
.Range("A2:C65535").Clear
End With
xlApp.Range("A2").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = "Stat-" & Month(Calendar) & "-" &
Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ajouter en entête des colonnes
xlApp.Range("A1").Value = "Dates (mois)"
xlApp.Range("B1").Value = "Villes"
xlApp.Range("C1").Value = "Nbr"
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
End If
' Regarde si la feuille du mois existe
maFeuil = Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
xlApp.Range("A1").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("I:I").Delete
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ajouter en entête des colonnes
Dim intI As Integer
For intI = 0 To rst.Fields.Count - 1
sht.Cells(1, intI + 1).Value = rst.Fields(intI).Name
Next
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("D:D").NumberFormat = "# ##0.00 €"
xlApp.Columns("E:E").NumberFormat = "# ##0.00 €"
xlApp.Columns("F:F").NumberFormat = "0.00%"
xlApp.Columns("G:G").NumberFormat = "# ##0.00 €"
xlApp.Columns("H:H").Delete
End If
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = False
End If
Next
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
' Valide l'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Mise_a_Jour_Export", , acAdd
DoCmd.SetWarnings True
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
Merci par avance !
Bonjour,
Peut-être en remplaçant
For Each sht In Sheets()
par
For Each sht In wbk.Sheets()
--
Cordialement,
Gilbert
"amsa" a écrit dans le
message de
news:Bonjour,
Voilà, je suis en train de créer un fichier Access qui me permet
d'envoyer
desdonnées sur Excel. Jusque là pas de soucis (pour ainsi dire)
Mon bouton qui me permet de faire l'export marche bien au 1er clique, par
contre au 2ème, j'ai droit au message suivant:
"la méthode 'sheets' de l'objet '_global' a
échoué"
Le truc c'est que je peux être amené à faire 2 fois (ou
plus) le transfert
carca se fait a chaque fois en fonction de date.
Si je ferme le fichier Acces et que je le réouvre, alors pas de soucis,
je
peuxfaire un export.... mais pas 2!
Je vous donne mon code, si dès fois quelqu'un avait une idée il
m'aiderait
grandement.
On Error GoTo Err_Commande4_Click
Dim xlApp As Excel.Application
Dim wbk As Excel.Workbook
Dim sht As Excel.Worksheet
Dim rst As DAO.Recordset
Dim maFeuil As String
' Créer un objet Excel (ce qui équivaut à démarrer
Excel à distance)
Set xlApp = CreateObject("Excel.Application")
' Rendre Excel visible
xlApp.Visible = True
' xlApp.Visible = False
' Ouvrir Classeur
Set wbk = xlApp.Workbooks.Open("C:C'pil & face.xls")
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = True
End If
Next
' Regarde si la feuille STAT du mois existe
maFeuil = "Stat-" & Month(Calendar) & "-" &
Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
' Efface puis Rentre les données de Stat
With wbk.Sheets(maFeuil)
'Effacer destination
.Range("A2:C65535").Clear
End With
xlApp.Range("A2").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = "Stat-" & Month(Calendar) & "-" &
Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Stat_Export"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_2")
' Ajouter en entête des colonnes
xlApp.Range("A1").Value = "Dates (mois)"
xlApp.Range("B1").Value = "Villes"
xlApp.Range("C1").Value = "Nbr"
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
End If
' Regarde si la feuille du mois existe
maFeuil = Month(Calendar) & "-" & Year(Calendar)
If FeuilleExiste(wbk, maFeuil) Then
wbk.Worksheets(maFeuil).Activate
xlApp.Range("A1").Select
While IsEmpty(xlApp.ActiveCell) = False
xlApp.ActiveCell.Offset(1, 0).Activate
Wend
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ecrire les valeurs
xlApp.ActiveCell.CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("I:I").Delete
Else
' Instancier la feuille active dans le classeur
Set sht = wbk.Worksheets.Add
Set sht = wbk.ActiveSheet
sht.Name = Month(Calendar) & "-" & Year(Calendar)
' Ouverture de la requête d'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Requête_Export_Final"
DoCmd.SetWarnings True
Set rst = CurrentDb.OpenRecordset("Temporaire_1")
' Ajouter en entête des colonnes
Dim intI As Integer
For intI = 0 To rst.Fields.Count - 1
sht.Cells(1, intI + 1).Value = rst.Fields(intI).Name
Next
' Ecrire les valeurs
xlApp.Range("A2").CopyFromRecordset rst
' Mise en Forme
xlApp.Columns("D:D").NumberFormat = "# ##0.00 €"
xlApp.Columns("E:E").NumberFormat = "# ##0.00 €"
xlApp.Columns("F:F").NumberFormat = "0.00%"
xlApp.Columns("G:G").NumberFormat = "# ##0.00 €"
xlApp.Columns("H:H").Delete
End If
' Affiche les onglets cachés
For Each sht In Sheets()
If sht.Index > Sheets("Accueil").Index Then
sht.Visible = False
End If
Next
' Sauvegarder et fermer le classeur
wbk.Worksheets("Accueil").Activate
wbk.Save
wbk.Close
' Quitter Excel
xlApp.Quit
' Libérer les variables objet
Set sht = Nothing
Set wbk = Nothing
Set xlApp = Nothing
' Valide l'Exportation
DoCmd.SetWarnings False
DoCmd.OpenQuery "Mise_a_Jour_Export", , acAdd
DoCmd.SetWarnings True
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
Merci par avance !