OVH Cloud OVH Cloud

problème automation

4 réponses
Avatar
phil
Bonjour

J'ai un probl=E8me avec de l'automation...
Voila ce que j'ai fait :

Dim app As Object
Set app =3D CreateObject("Excel.Application")
app.Workbooks.Open "c:\doc.xls"
app.Visible =3D True
'mes traitements :
With app.Worksheets(nom)
.Range("a1") =3D 1
...
End With
app.ActiveWorkbook.Save
app.Quit
Set app =3D Nothing


Jusque l=E0, tout marche impeccable.=20
Et puis j'ai voulu cr=E9er des copeis de feuilles. J'ai donc=20
ins=E9r=E9, avant mes traitements :

Sheets("mod").Copy After:=3DSheets(Sheets.Count)
Sheets("mod (2)").Name =3D nom

J'ai bien sur v=E9rifi=E9 que le feuille nom n'existe pas et=20
que la feuille mod existe...
Le traitement fonctionne une fois impeccable, mais pas=20
deux fois : l'erreur apparait :=20
La m=E9thode 'Sheets' de l'objet '_Global' a =E9chou=E9.

En fait, un processus Excel est rest=E9 et ne s'est pas=20
arr=EAt=E9. Le probl=E8me ne se posait pas avant que je rajoute=20
ces deux lignes. Pouvez-vous m'aider ?

4 réponses

Avatar
Damien Mermoz
Salut,

j'ai eu le même problème et j'avais vraiment galèré jusqu'à ce que Laurent
me débloque.

Donc l'erreur vient d'une absence de référence à l'objet supérieur (ici
excel.application), c'est ce qui arrive quand on utilise l'enregistreur de
macro dans excel.
Pourquoi ca marche une fois et pas deux, c'est un mystère.

Donc essaye comme ça, chez moi ça marche, mais avant il faut que tu rebootes
(je sais pas pourquoi aussi) :

Dim app As Object
On Error GoTo commande29_Err
Set app = CreateObject("Excel.Application")
app.Workbooks.Open "c:doc.xls"
app.Visible = True

app.Sheets("mod").Copy After:=app.Sheets(app.Sheets.Count)
app.Sheets("mod (2)").Name = "Damien"

app.ActiveWorkbook.Save

commande29_Exit:
app.Quit
Set app = Nothing
Exit Sub

commande29_Err:
MsgBox Err.Number & vbCrLf & vbCrLf & Err.Description
Resume commande29_Exit


En espèrant que ca t'aide.

A +
Damien.
"phil" a écrit dans le message de
news:130e801c3f6c3$47034c80$
Bonjour

J'ai un problème avec de l'automation...
Voila ce que j'ai fait :

Dim app As Object
Set app = CreateObject("Excel.Application")
app.Workbooks.Open "c:doc.xls"
app.Visible = True
'mes traitements :
With app.Worksheets(nom)
.Range("a1") = 1
...
End With
app.ActiveWorkbook.Save
app.Quit
Set app = Nothing


Jusque là, tout marche impeccable.
Et puis j'ai voulu créer des copeis de feuilles. J'ai donc
inséré, avant mes traitements :

Sheets("mod").Copy After:=Sheets(Sheets.Count)
Sheets("mod (2)").Name = nom

J'ai bien sur vérifié que le feuille nom n'existe pas et
que la feuille mod existe...
Le traitement fonctionne une fois impeccable, mais pas
deux fois : l'erreur apparait :
La méthode 'Sheets' de l'objet '_Global' a échoué.

En fait, un processus Excel est resté et ne s'est pas
arrêté. Le problème ne se posait pas avant que je rajoute
ces deux lignes. Pouvez-vous m'aider ?
Avatar
phil
Pardon, mais qu'est-ce qu'il faut que je mette exactement ?
il faut que je rajoute App. devant les deux lignes ?
Ou alors il faut faire la gestion d'erreur ?

Merci de me répondre.



-----Message d'origine-----
Salut,

j'ai eu le même problème et j'avais vraiment galèré
jusqu'à ce que Laurent

me débloque.

Donc l'erreur vient d'une absence de référence à l'objet
supérieur (ici

excel.application), c'est ce qui arrive quand on utilise
l'enregistreur de

macro dans excel.
Pourquoi ca marche une fois et pas deux, c'est un mystère.

Donc essaye comme ça, chez moi ça marche, mais avant il
faut que tu rebootes

(je sais pas pourquoi aussi) :

Dim app As Object
On Error GoTo commande29_Err
Set app = CreateObject("Excel.Application")
app.Workbooks.Open "c:doc.xls"
app.Visible = True

app.Sheets("mod").Copy After:=app.Sheets(app.Sheets.Count)
app.Sheets("mod (2)").Name = "Damien"

app.ActiveWorkbook.Save

commande29_Exit:
app.Quit
Set app = Nothing
Exit Sub

commande29_Err:
MsgBox Err.Number & vbCrLf & vbCrLf & Err.Description
Resume commande29_Exit


En espèrant que ca t'aide.

A +
Damien.
"phil" a écrit dans
le message de

news:130e801c3f6c3$47034c80$
Bonjour

J'ai un problème avec de l'automation...
Voila ce que j'ai fait :

Dim app As Object
Set app = CreateObject("Excel.Application")
app.Workbooks.Open "c:doc.xls"
app.Visible = True
'mes traitements :
With app.Worksheets(nom)
.Range("a1") = 1
...
End With
app.ActiveWorkbook.Save
app.Quit
Set app = Nothing


Jusque là, tout marche impeccable.
Et puis j'ai voulu créer des copeis de feuilles. J'ai donc
inséré, avant mes traitements :

Sheets("mod").Copy After:=Sheets(Sheets.Count)
Sheets("mod (2)").Name = nom

J'ai bien sur vérifié que le feuille nom n'existe pas et
que la feuille mod existe...
Le traitement fonctionne une fois impeccable, mais pas
deux fois : l'erreur apparait :
La méthode 'Sheets' de l'objet '_Global' a échoué.

En fait, un processus Excel est resté et ne s'est pas
arrêté. Le problème ne se posait pas avant que je rajoute
ces deux lignes. Pouvez-vous m'aider ?


.



Avatar
Damien Mermoz
re:
C'est les App que tu dois mettre chaque fois que tu fais référence à un
objet sheets
La gestion d'erreur, t'es pas obligé mais ça peut aider.

A +
Damien.
"phil" a écrit dans le message de
news:131c001c3f6d2$d379dd50$

Pardon, mais qu'est-ce qu'il faut que je mette exactement ?
il faut que je rajoute App. devant les deux lignes ?
Ou alors il faut faire la gestion d'erreur ?

Merci de me répondre.



-----Message d'origine-----
Salut,

j'ai eu le même problème et j'avais vraiment galèré
jusqu'à ce que Laurent

me débloque.

Donc l'erreur vient d'une absence de référence à l'objet
supérieur (ici

excel.application), c'est ce qui arrive quand on utilise
l'enregistreur de

macro dans excel.
Pourquoi ca marche une fois et pas deux, c'est un mystère.

Donc essaye comme ça, chez moi ça marche, mais avant il
faut que tu rebootes

(je sais pas pourquoi aussi) :

Dim app As Object
On Error GoTo commande29_Err
Set app = CreateObject("Excel.Application")
app.Workbooks.Open "c:doc.xls"
app.Visible = True

app.Sheets("mod").Copy After:=app.Sheets(app.Sheets.Count)
app.Sheets("mod (2)").Name = "Damien"

app.ActiveWorkbook.Save

commande29_Exit:
app.Quit
Set app = Nothing
Exit Sub

commande29_Err:
MsgBox Err.Number & vbCrLf & vbCrLf & Err.Description
Resume commande29_Exit


En espèrant que ca t'aide.

A +
Damien.
"phil" a écrit dans
le message de

news:130e801c3f6c3$47034c80$
Bonjour

J'ai un problème avec de l'automation...
Voila ce que j'ai fait :

Dim app As Object
Set app = CreateObject("Excel.Application")
app.Workbooks.Open "c:doc.xls"
app.Visible = True
'mes traitements :
With app.Worksheets(nom)
.Range("a1") = 1
...
End With
app.ActiveWorkbook.Save
app.Quit
Set app = Nothing


Jusque là, tout marche impeccable.
Et puis j'ai voulu créer des copeis de feuilles. J'ai donc
inséré, avant mes traitements :

Sheets("mod").Copy After:=Sheets(Sheets.Count)
Sheets("mod (2)").Name = nom

J'ai bien sur vérifié que le feuille nom n'existe pas et
que la feuille mod existe...
Le traitement fonctionne une fois impeccable, mais pas
deux fois : l'erreur apparait :
La méthode 'Sheets' de l'objet '_Global' a échoué.

En fait, un processus Excel est resté et ne s'est pas
arrêté. Le problème ne se posait pas avant que je rajoute
ces deux lignes. Pouvez-vous m'aider ?


.



Avatar
phil
Merci beaucoup, je vais mettre ca tout de suite !!!


-----Message d'origine-----
re:
C'est les App que tu dois mettre chaque fois que tu fais
référence à un

objet sheets
La gestion d'erreur, t'es pas obligé mais ça peut aider.

A +
Damien.
"phil" a écrit dans
le message de

news:131c001c3f6d2$d379dd50$

Pardon, mais qu'est-ce qu'il faut que je mette
exactement ?

il faut que je rajoute App. devant les deux lignes ?
Ou alors il faut faire la gestion d'erreur ?

Merci de me répondre.



-----Message d'origine-----
Salut,

j'ai eu le même problème et j'avais vraiment galèré
jusqu'à ce que Laurent

me débloque.

Donc l'erreur vient d'une absence de référence à l'objet
supérieur (ici

excel.application), c'est ce qui arrive quand on utilise
l'enregistreur de

macro dans excel.
Pourquoi ca marche une fois et pas deux, c'est un
mystère.



Donc essaye comme ça, chez moi ça marche, mais avant il
faut que tu rebootes

(je sais pas pourquoi aussi) :

Dim app As Object
On Error GoTo commande29_Err
Set app = CreateObject("Excel.Application")
app.Workbooks.Open "c:doc.xls"
app.Visible = True

app.Sheets("mod").Copy After:=app.Sheets
(app.Sheets.Count)


app.Sheets("mod (2)").Name = "Damien"

app.ActiveWorkbook.Save

commande29_Exit:
app.Quit
Set app = Nothing
Exit Sub

commande29_Err:
MsgBox Err.Number & vbCrLf & vbCrLf & Err.Description
Resume commande29_Exit


En espèrant que ca t'aide.

A +
Damien.
"phil" a écrit dans
le message de

news:130e801c3f6c3$47034c80$
Bonjour

J'ai un problème avec de l'automation...
Voila ce que j'ai fait :

Dim app As Object
Set app = CreateObject("Excel.Application")
app.Workbooks.Open "c:doc.xls"
app.Visible = True
'mes traitements :
With app.Worksheets(nom)
.Range("a1") = 1
...
End With
app.ActiveWorkbook.Save
app.Quit
Set app = Nothing


Jusque là, tout marche impeccable.
Et puis j'ai voulu créer des copeis de feuilles. J'ai
donc


inséré, avant mes traitements :

Sheets("mod").Copy After:=Sheets(Sheets.Count)
Sheets("mod (2)").Name = nom

J'ai bien sur vérifié que le feuille nom n'existe pas et
que la feuille mod existe...
Le traitement fonctionne une fois impeccable, mais pas
deux fois : l'erreur apparait :
La méthode 'Sheets' de l'objet '_Global' a échoué.

En fait, un processus Excel est resté et ne s'est pas
arrêté. Le problème ne se posait pas avant que je rajoute
ces deux lignes. Pouvez-vous m'aider ?


.




.