Ouverture/fermeture Excel avec commandButton

Résolu
Muygiwara56 Messages postés 23 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 31 juillet 2012 - 16 mai 2011 à 13:54
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 - 17 mai 2011 à 08:35
Bonjour,
J'ai deux userform:
FrmIndicateur
FrmRetour

Sur FrmIndicateur, j'ai un commandbutton qui ouvre un fichier excel voici le code:
Private Sub CmdRetour_Click()
Unload FrmIndicateur
Set appExcel = CreateObject("Excel.Application")
Set wbExcel = appExcel.Workbooks.Open("U:\Ats\17 Technique Usines\Maintenance Fichier\Indicateur\Base de Données indicateur\Enregistrement Indicateur Retour 2011 LAND.xls")
Set wsExcel = wbExcel.Worksheets("Indicateur")
Load FrmRetour
FrmRetour.Show
end sub

Et sur FrmRetour,j'ai un commanbutton qui ferme le fichier excel et supprimme EXCEL.exe dans le proessus. Voici le code:
Private Sub CommandAnnuler_Click()
wbExcel.Save
wbExcel.Close
appExcel.Quit
Set wbExcel = Nothing
Set appExcel = Nothing
Set wsExcel = Nothing
Unload FrmRetour
FrmIndicateur.Show
End Sub

Mon problème,c'est que si j'utilise ces codes dans le même module ou sur deux boutons sur la m^me userform sa fonctionne mais ici, les deux codes séparés sur 2 userform, l'ouverture fonctionne très bien mais j'ai une erreur lors de ma fermeture me disant "Erreur d'execution 91 Variable objet ou variable bloc With non définie".

Si vous pouvez m'aider.

Cordialement

Muygiwara

7 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
16 mai 2011 à 14:54
Salut

Ça commence mal :
"[i]Sur FrmIndicateur, j'ai un commandbutton qui ouvre un fichier excel voici le code:
Private Sub CmdRetour_Click()
Unload FrmIndicateur /i"

Si tu décharges la forme sur laquelle tu travailles, ça risque de faire des choses bizarres. Voir si FrmIndicateur.Hide serait plus adapté

Où et comment sont dimensionnées tes variables wbExcel et appExcel ?
Si tu les partages avec plusieurs formes, il faut impérativement les mettre dans un Module ET déclarés en Public.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
16 mai 2011 à 15:36
Tes déclarations sont elles dans un module comme te l'a dit Jack où sont elles dans une Form comme le laisse supposer le code ?


Calade
3
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
16 mai 2011 à 14:00
Bonjour,

Il aurait été intéressant de savoir sur quelle ligne de code tu as l'erreur.

Si je comprends bien, ton erreur se produit sur l'objet Excel qu'il te faut déclarer Public si tu veux l'utiliser sur 2 Forms/Modules différents.

Quelle est sa portée actuelle ?


Calade
0
Muygiwara56 Messages postés 23 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 31 juillet 2012
16 mai 2011 à 14:48
Bonjour,

Mon erreur se produit sur
wbExcel.Save
et si je sauvegarde pas et j'efface sa va me faire la même erreur sur les 2 lignes suivantes:

wbExcel.Close
appExcel.Quit

Je pense que les variables wbExcel et appExcel ne reste pas en mémoire pourtant elles sont défini en public .

cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Muygiwara56 Messages postés 23 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 31 juillet 2012
16 mai 2011 à 15:31
Bonjour,

J'ai fait ce que tu m'as dit toujours le même problème.
La je bloque total, je ne comprend pas.

Private Sub CmdRetour_Click()
FrmIndicateur.Hide
Set appExcel = CreateObject("Excel.Application")
Set wbExcel = appExcel.Workbooks.Open("U:\Ats\17 Technique Usines\Maintenance Fichier\Indicateur\Base de Données indicateur\Enregistrement Indicateur Retour 2011 LAND.xls")
Set wsExcel = wbExcel.Worksheets("Indicateur")
Load FrmRetour
FrmRetour.Show
end sub

Déclaration de varaiable:

Public appExcel As Excel.Application 'Application Excel
Public wbExcel As Excel.Workbook 'Classeur Excel
Public wsExcel As Excel.Worksheet

Cordialement
0
Muygiwara56 Messages postés 23 Date d'inscription mardi 29 mars 2011 Statut Membre Dernière intervention 31 juillet 2012
16 mai 2011 à 16:10
Merci les gars, je pensais que si on déclarais les variables n'importe où en public, que se soit dans un module ou ailleurs sa revenais à la même chose, faut croire que non, sa fonctionne bien maintenant. Avez vous une explication sur cette différence.

Je vous montre quand même ce que j'ai fait:

Public appExcel As Excel.Application 'Application Excel
Public wbExcel As Excel.Workbook 'Classeur Excel
Public wsExcel As Excel.Worksheet

Sub ouvertureExcel()
FrmIndicateur.Hide
'Ouverture de l'application
Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
On Error Resume Next
Set wbExcel = appExcel.Workbooks.Open("U:\Ats\17 Technique Usines\Maintenance Fichier\Indicateur\Base de Données indicateur\Enregistrement Indicateur Retour 2011 LAND.xls")
'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets("Indicateur")
End Sub

Fermeture excel:Private Sub CmdRetour_Click()
Call ouvertureExcel
Load FrmRetour
FrmRetour.Show
End Sub

Merci pour le coup de main, et surtout Merci pour votre rapidité, sa faisais une semaine que je bloquais.

Muygiwara56
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
17 mai 2011 à 08:35
Les variables déclarées Public dans une Form peuvent être vues des autres Forms mais PAS des modules de classe ou non.

Celles déclarées Public dans des modules sont visibles dans toute l'application.

Mais il est conseillé de restreindre au maximum (donc Private) tout ce qui réside dans une Form sauf bien les propriétés persos que tu accèdes de l'expérieur à l'aide de:

Public Property Get/Let/Set


Calade
0
Rejoignez-nous