Le code ci-dessous est ex=E9cut=E9 dans Access 2002. Il fonctionne une
premi=E8re fois parfaitement. Lorsque je veux l'ex=E9cuter une deuxi=E8me
(3=E8me et +) fois, j'ai l'erreur 1004.
=AB la m=E9thode 'Cells' de l'objet '_Global' a =E9chou=E9 =BB ou =AB la m=
=E9thode
'Range' de l'objet '_Worksheet' a =E9chou=E9 =BB
Je ne comprends pas cette inconstance : le code fonctionne une fois et
puis plus jamais, =E0 moins de relancer vba
avec mes meilleures salutations
Dim xlApp As Excel.Application
Dim xlSheet As Excel.Worksheet
Dim xlBook As Excel.Workbook
(...)
Set xlApp =3D CreateObject("Excel.Application")
Set xlBook =3D xlApp.Workbooks.Add
xlApp.Visible =3D True
Set xlSheet =3D xlBook.Worksheets.Add
(...)
Temp$ =3D Fn_Expurge(Left$(Rst("Act_Code_Pub") & " - " & Rst
("Act_Denomination"), 31))
xlSheet.Name =3D Temp$
xlSheet.Cells(2, 2) =3D "Client : " & Rst("Cli_Nom_Entreprise")
xlSheet.Cells(3, 2) =3D "Action : " & Rst("Act_Code_Pub") & " -
" & Rst("Act_Denomination")
xlSheet.Range(Cells(2, 2), Cells(3, 2)).Font.Size =3D 15
(erreur juste ici dessus) ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
^ ^ ^
(...)
Set xlSheet =3D Nothing
Set xlBook =3D Nothing
Set xlApp =3D Nothing
Cells n'est pas un objet, mais une *propriété*. C'est pour cela qu'elle a besoin de son objet worksheet.
Mais bon, chacun sait qu'une difficulté de la programmation objet est de différentier tous ces "trucs". Il fut même un moment où je disais que « "l'objet" chez Microsoft est le "truc" chez l'enfant en mal de vocabulaire ». À notre décharge, l'aide nous induit en erreur. Extrait : « Range et Cells Pour renvoyer un objet Range, spécifiez Range(cell1, cell2), cell1 et cell2 étant des objets Range spécifiant les cellules de début et de fin. L'exemple suivant montre comment définir le style de la bordure des cellules A1:J10.
With Worksheets(1) .Range(.Cells(1, 1), _ .Cells(10, 10)).Borders.LineStyle = xlThick End WithNotez le point devant chaque occurrence de la propriété Cells. Le point est nécessaire si le résultat de l'instruction With précédente doit être appliqué à la propriété Cells ; dans le cas présent, il permet d'indiquer que les cellules se trouvent dans la feuille de calcul 1 (sans le point, la propriété Cells renverrait les cellules de la feuille active).
»
Bonne et agréable soirée
Cdt, Blaise ---- ---- ----
"Blaise Cacramp" a écrit dans le message de news: %
Mon frère Pascal,
C'est, comme tu le connais, toujours le même problème en VBA automation : il faut être très explicite pour les manipulations d'objets hors application porteuse. Donc comme tu es dans ACCESS, les objets EXCEL.
En cause ici : l'objet Cells (syntaxe 2) dans l'objet Range. Pour la syntaxe 1 (références de type "A1"), cela ne pose pas de problème.
Et Microsoft le dit : « Ce comportement est inhérent au produit. » http://support.microsoft.com/kb/178510/fr
Et comme je sais que tu as une foule de lignes a changer, bon courage pour demain
Cdt, Blaise ---- ---- ----
a écrit dans le message de news:
Bonjour.
Le code ci-dessous est exécuté dans Access 2002. Il fonctionne une première fois parfaitement. Lorsque je veux l'exécuter une deuxième (3ème et +) fois, j'ai l'erreur 1004. « la méthode 'Cells' de l'objet '_Global' a échoué » ou « la méthode 'Range' de l'objet '_Worksheet' a échoué »
Je ne comprends pas cette inconstance : le code fonctionne une fois et puis plus jamais, à moins de relancer vba
avec mes meilleures salutations
Dim xlApp As Excel.Application Dim xlSheet As Excel.Worksheet Dim xlBook As Excel.Workbook (...) Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add xlApp.Visible = True Set xlSheet = xlBook.Worksheets.Add (...) Temp$ = Fn_Expurge(Left$(Rst("Act_Code_Pub") & " - " & Rst ("Act_Denomination"), 31)) xlSheet.Name = Temp$ xlSheet.Cells(2, 2) = "Client : " & Rst("Cli_Nom_Entreprise") xlSheet.Cells(3, 2) = "Action : " & Rst("Act_Code_Pub") & " - " & Rst("Act_Denomination") xlSheet.Range(Cells(2, 2), Cells(3, 2)).Font.Size = 15 (erreur juste ici dessus) ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ (...) Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing
Bonjour ou bonsoir, selon.
Rectification importante :
Cells n'est pas un objet, mais une *propriété*. C'est pour cela qu'elle a
besoin de son objet worksheet.
Mais bon, chacun sait qu'une difficulté de la programmation objet est de
différentier tous ces "trucs".
Il fut même un moment où je disais que « "l'objet" chez Microsoft est le
"truc" chez l'enfant en mal de vocabulaire ».
À notre décharge, l'aide nous induit en erreur. Extrait :
«
Range et Cells
Pour renvoyer un objet Range, spécifiez Range(cell1, cell2), cell1 et cell2
étant des objets Range spécifiant les cellules de début et de fin. L'exemple
suivant montre comment définir le style de la bordure des cellules A1:J10.
With Worksheets(1)
.Range(.Cells(1, 1), _
.Cells(10, 10)).Borders.LineStyle = xlThick
End WithNotez le point devant chaque occurrence de la propriété Cells. Le
point est nécessaire si le résultat de l'instruction With précédente doit
être appliqué à la propriété Cells ; dans le cas présent, il permet
d'indiquer que les cellules se trouvent dans la feuille de calcul 1 (sans le
point, la propriété Cells renverrait les cellules de la feuille active).
»
Bonne et agréable soirée
Cdt, Blaise
---- ---- ----
"Blaise Cacramp" <Devinez@gmail.com> a écrit dans le message de news:
%23zNPBotXJHA.3516@TK2MSFTNGP02.phx.gbl...
Mon frère Pascal,
C'est, comme tu le connais, toujours le même problème en VBA automation :
il faut être très explicite pour les manipulations d'objets hors
application porteuse. Donc comme tu es dans ACCESS, les objets EXCEL.
En cause ici : l'objet Cells (syntaxe 2) dans l'objet Range.
Pour la syntaxe 1 (références de type "A1"), cela ne pose pas de problème.
Et Microsoft le dit : « Ce comportement est inhérent au produit. »
http://support.microsoft.com/kb/178510/fr
Et comme je sais que tu as une foule de lignes a changer, bon courage pour
demain
Cdt, Blaise
---- ---- ----
<pascal.cambier@gmail.com> a écrit dans le message de news:
136465ff-8034-4ea2-8ecd-b51c9917c437@p2g2000prn.googlegroups.com...
Bonjour.
Le code ci-dessous est exécuté dans Access 2002. Il fonctionne une
première fois parfaitement. Lorsque je veux l'exécuter une deuxième
(3ème et +) fois, j'ai l'erreur 1004.
« la méthode 'Cells' de l'objet '_Global' a échoué » ou « la méthode
'Range' de l'objet '_Worksheet' a échoué »
Je ne comprends pas cette inconstance : le code fonctionne une fois et
puis plus jamais, à moins de relancer vba
avec mes meilleures salutations
Dim xlApp As Excel.Application
Dim xlSheet As Excel.Worksheet
Dim xlBook As Excel.Workbook
(...)
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
xlApp.Visible = True
Set xlSheet = xlBook.Worksheets.Add
(...)
Temp$ = Fn_Expurge(Left$(Rst("Act_Code_Pub") & " - " & Rst
("Act_Denomination"), 31))
xlSheet.Name = Temp$
xlSheet.Cells(2, 2) = "Client : " & Rst("Cli_Nom_Entreprise")
xlSheet.Cells(3, 2) = "Action : " & Rst("Act_Code_Pub") & " -
" & Rst("Act_Denomination")
xlSheet.Range(Cells(2, 2), Cells(3, 2)).Font.Size = 15
(erreur juste ici dessus) ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
^ ^ ^
(...)
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
Cells n'est pas un objet, mais une *propriété*. C'est pour cela qu'elle a besoin de son objet worksheet.
Mais bon, chacun sait qu'une difficulté de la programmation objet est de différentier tous ces "trucs". Il fut même un moment où je disais que « "l'objet" chez Microsoft est le "truc" chez l'enfant en mal de vocabulaire ». À notre décharge, l'aide nous induit en erreur. Extrait : « Range et Cells Pour renvoyer un objet Range, spécifiez Range(cell1, cell2), cell1 et cell2 étant des objets Range spécifiant les cellules de début et de fin. L'exemple suivant montre comment définir le style de la bordure des cellules A1:J10.
With Worksheets(1) .Range(.Cells(1, 1), _ .Cells(10, 10)).Borders.LineStyle = xlThick End WithNotez le point devant chaque occurrence de la propriété Cells. Le point est nécessaire si le résultat de l'instruction With précédente doit être appliqué à la propriété Cells ; dans le cas présent, il permet d'indiquer que les cellules se trouvent dans la feuille de calcul 1 (sans le point, la propriété Cells renverrait les cellules de la feuille active).
»
Bonne et agréable soirée
Cdt, Blaise ---- ---- ----
"Blaise Cacramp" a écrit dans le message de news: %
Mon frère Pascal,
C'est, comme tu le connais, toujours le même problème en VBA automation : il faut être très explicite pour les manipulations d'objets hors application porteuse. Donc comme tu es dans ACCESS, les objets EXCEL.
En cause ici : l'objet Cells (syntaxe 2) dans l'objet Range. Pour la syntaxe 1 (références de type "A1"), cela ne pose pas de problème.
Et Microsoft le dit : « Ce comportement est inhérent au produit. » http://support.microsoft.com/kb/178510/fr
Et comme je sais que tu as une foule de lignes a changer, bon courage pour demain
Cdt, Blaise ---- ---- ----
a écrit dans le message de news:
Bonjour.
Le code ci-dessous est exécuté dans Access 2002. Il fonctionne une première fois parfaitement. Lorsque je veux l'exécuter une deuxième (3ème et +) fois, j'ai l'erreur 1004. « la méthode 'Cells' de l'objet '_Global' a échoué » ou « la méthode 'Range' de l'objet '_Worksheet' a échoué »
Je ne comprends pas cette inconstance : le code fonctionne une fois et puis plus jamais, à moins de relancer vba
avec mes meilleures salutations
Dim xlApp As Excel.Application Dim xlSheet As Excel.Worksheet Dim xlBook As Excel.Workbook (...) Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add xlApp.Visible = True Set xlSheet = xlBook.Worksheets.Add (...) Temp$ = Fn_Expurge(Left$(Rst("Act_Code_Pub") & " - " & Rst ("Act_Denomination"), 31)) xlSheet.Name = Temp$ xlSheet.Cells(2, 2) = "Client : " & Rst("Cli_Nom_Entreprise") xlSheet.Cells(3, 2) = "Action : " & Rst("Act_Code_Pub") & " - " & Rst("Act_Denomination") xlSheet.Range(Cells(2, 2), Cells(3, 2)).Font.Size = 15 (erreur juste ici dessus) ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ (...) Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing