OVH Cloud OVH Cloud

Plantage 2 eme instance Excel

11 réponses
Avatar
mbar
Bonjour,

J'ai le code suivant :

Dim fso As Scripting.FileSystemObject
Dim fld As Scripting.Folder
Dim fle As Scripting.File
Dim appExcel As Excel.Application 'Application Excel
Dim wbExcel As Excel.Workbook 'Classeur Excel
Dim wsExcel As Excel.Worksheet 'Feuille Excel

On Error GoTo Fermfich

' Cr=E9er une instance du FSO
Set fso =3D New Scripting.FileSystemObject

If fso.FileExists("Toto.xls") Then fso.DeleteFile=20
("Toto.xls")
=20
DoCmd.TransferSpreadsheet acExport, , "Toto", "Toto.xls",=20
True
Set appExcel =3D CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set wbExcel =3D appExcel.Workbooks.Open("Toto.xls", , False)
Set wsExcel =3D wbExcel.Worksheets(1)
ActiveWindow.DisplayZeros =3D False 'Afficher un Null =E0 la=20
place des valeurs =E0 z=E9ro
NbCol =3D NombreDeColonnes()
wsExcel.Range(Cells(1, 1), Cells(1, NbCol)).Font.Bold =3D=20
True
wbExcel.Close SaveChanges:=3DTrue
appExcel.DisplayAlerts =3D False
appExcel.Quit
Set wsExcel =3D Nothing
Set wbExcel =3D Nothing
Set appExcel =3D Nothing
............

Cela fonctionne bien sur un premier passage mais j'ai une=20
erreur sur la ligne ActiveWindow.DisplayZeros =3D False =20
lors d'un second passage.
Pourtant je referme bien Excel et lib=E9re les variables.
Si j'enleve la ligne bloquante, cela se produit sur les=20
lignes suivantes.

Si quelqu'un a une id=E9e ?
D'avance merci

1 réponse

1 2
Avatar
Je te remercie vivement pour ton aide.
A plus,
Michel
-----Message d'origine-----
Bonjour

Si tu veux mettre la première ligne en gras, tu peux
faire :


.Rows("1:1").Font.Bold = True

(n'oublie pas le point avant...)

Sinon pour l'autofit, il te suffit de faire :

.Cells.Autofit

Voilà
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
a écrit dans le
message news:

1411301c44480$945d6d70$
Bonjour, me revoilou

J'ai repris bêtement ton code mais je n'avais pas remarqué
qu'il manquait un point devant ActiveWindow.DisplayZeros =
False. Maintenant cela fonctionne mais je n'arrive pas à
faire ce que je veux.
Dès que je veux remplacer : .Cells.Font.Bold = True
par .Range(Cells(1, 1), Cells(1, 35)).Font.Bold = True
cela ne fonctionne plus (Je veux du Bold uniquement sur la
ligne des titres).
Comment faire pour faire un Autofit sur toutes les
cellules ?

D'avance merci


-----Message d'origine-----
Non, il est présent. Pourtant je fais bien
appExcel.quit !


@+
Michel
-----Message d'origine-----
Oui mais après avoir lancé une fois la fonction, est-ce
que le process

disparaît ???

Sinon, non il n'y a pas besoin d'attendre avant de
relance une autre

instance...

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"mbar" a écrit dans le
message news:

139d101c443f1$98072180$
Re,

Avant de lancer la fonction, il n'y a pas de process
Excel


qui tourne. Par contre, au moment du problème, il y a
bien


un process Excel qui tourne mais je pense que cela est
normal car il est passé par Set appExcel = CreateObject
("Excel.Application") avant. J'ai un message qui dit "Le
serveur distant n'existe pas ou n'est pas disponible".
Doit-on attendre un certain temps avant de relancer une
instance ?

@+

Michel
-----Message d'origine-----
Re,

As-tu regarder dans tes processus en cours, il doit je
suppose

rester le processus Excel.exe ???

Sinon, essais de mettre la ligne .DisplayAlerts = False
avant la fermeture de ton classeur...

Sinon retire la pour qu'excel puisse te dire quel
problème il rencontre

lors de la fermeture...

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"mbar" a écrit dans le
message news:

1331801c443ca$831fa340$
Merci,

J'ai repris ton code mais j'ai le même problème.
La deuxième fois il me dit "permission refusée" et
n'applique pas les modifs. Il ouvre Excel mais
m'informe




que le fichier est ouvert par l'administrateur et je ne
peux l'ouvrir qu'en lecture seule.
Je pense qu'Excel ouvre le fichier pour appliquer les
modifs une première fois mais lorsque qu'il ferme, il
ne




doit pas fermer le fichier et cela gène le deuxième
passage non ?

D'avance merci
-----Message d'origine-----
As-tu essayé ???
Si c'est oui, je viens de voir une autre erreur dans
ton




code...
Cells(1....
tu dois rattacher cette fonction à ton objet feuille,
genre :

wsExcel.Cells(...

Voilà comment je ferais ton code (par rapport au but
que




j'en ai compris,
et en plus simple je pense...) :

*****************************************************
Function toto()
Dim appExcel As Excel.Application 'Application Excel

DoCmd.TransferSpreadsheet
acExport, , "Toto", "Toto.xls",



True
Set appExcel = CreateObject("Excel.Application")

With appExcel
'** Ouverture d'un fichier Excel
.Workbooks.Open "Toto.xls"
.Worksheets(1).Select
ActiveWindow.DisplayZeros = False
.Cells.Font.Bold = True
.ActiveWorkbook.Close SaveChanges:=True
.DisplayAlerts = False
.Quit
End With
Set appExcel = Nothing
End Function
*****************************************************

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------


.




.




.

.





.







1 2