Ouverture/fermeture Excel avec commandButton [Résolu]

Messages postés
24
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
31 juillet 2012
- - Dernière réponse : Calade
Messages postés
1212
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
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
58
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 139 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 139 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Calade
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
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
Commenter la réponse de Calade
Messages postés
24
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
31 juillet 2012
0
Merci
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
Commenter la réponse de Muygiwara56
Messages postés
24
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
31 juillet 2012
0
Merci
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
Commenter la réponse de Muygiwara56
Messages postés
24
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
31 juillet 2012
0
Merci
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
Commenter la réponse de Muygiwara56
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
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
Commenter la réponse de Calade