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".
Ç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)
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
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.
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: