Empecher la fermeture d'un feuille Excel

h60 Messages postés 46 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 5 février 2012 - 9 sept. 2009 à 18:05
h60 Messages postés 46 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 5 février 2012 - 14 sept. 2009 à 16:04
Bonjour à tous,

Mon appli pilote Excel après creation par OLE
(FeuilleExcel := CreateOleObject'Excel.Application'));

Elle cree les feuilles,met les formules de calcul etc... et les remplie à partir d'un fichier.

Jusqu'ici pas de problème.

La seule difficulté que je rencontre c'est que l'utilisateur peut fermer directement Excel sans passer par mon programme. Or j'ai besoin de récupérer certains éléments avant la fermeture.

En d'autres termes comment empêcher Excel de se fermer autrement que par mon appli?

Merci pour vos réponses.

4 réponses

beckerich Messages postés 302 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 17 septembre 2013 2
9 sept. 2009 à 20:19
Bonsoir,

FeuilleExcel.Visible := False
Excel
ainsi donc l'utilisateur n'aura pas accès à l'interface graphique de Excel, mais il faudra développer une interface graphique dans ton programme, non ?
LUC.
0
h60 Messages postés 46 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 5 février 2012 1
10 sept. 2009 à 09:23
Merci pour ta réponse, mais malheureusement elle ne résout pas mon problème.

En effet l'utilisateur doit pouvoir utiliser Excel et je n'ai besoin de récupérer le résultat que de certaines cellules.

En fait je veux soit empêcher la fermeture d'Excel soit en être informé et avoir le temps de récupérer mes informations
0
cs_47 Messages postés 197 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 20 février 2013 1
13 sept. 2009 à 23:08
Bonsoir,

un petit exemple :

procedure TForm1.Button1Click(Sender: TObject);
var hMenuHandle, happ:integer;
begin
 happ:=FindWindow('notepad', nil);
 hMenuHandle := GetSystemMenu(happ, False);
 if (hMenuHandle <> 0) then DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
end;

dans ce code l'application notepad aura la croix de fermeture en haut griser, dans le mini-menu à gauche, l'option Fermer ne sera pas présent

je pense qu'en poussant ce principe plus loin, il doit être possible d'enlever le fermer du menu principal, après il reste le alt-F4

bonne soirée
0
h60 Messages postés 46 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 5 février 2012 1
14 sept. 2009 à 16:04
Merci pour ta réponse.

Ton code fonctionne bien avec Notepad, encore qu'il ne désactive que le bouton système et qu'il est toujours possible de fermer l'appli par le Menu Quitter. Mais en cherchant un peu il doit être possible de trouver comment fermer le Menu.

Cependant ça ne fonctionne pas pour Excel.

Néanmoins c'est une piste et je vais chercher par là.

H60
0
Rejoignez-nous