Classeur exel au premier plan

mickey

XLDnaute Nouveau
Bonjour a tous,

J'utilise la fonction SetForegroundWindow() afin de passer le classeur exel au premier plan pour executer la macro (fermeture automatique du classeur au bout d'une minute)
Cette macro fonctionne correctement sous win Xp et exel 2003, mais bug sous exel 2000 et la j'avoue je bloque.

Le debuger s'arret sur : lngRetour = SetForegroundWindow(Application.hWnd)
en erreur 438.Objet ne gère pas cette propriété ou méthode

Merci de votre aide
 

PMO2

XLDnaute Accro
Re : Classeur exel au premier plan

Bonjour,

A tout hasard, ajoutez la déclaration API suivante

Code:
Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" ( _
 ByVal lpClassName As String, ByVal lpWindowName As String)

puis changez votre ligne de code par

Code:
lngRetour = SetForegroundWindow(FindWindow("xlMain", Application.Caption))

Cordialement.

PMO
Patrick Morange
 

mickey

XLDnaute Nouveau
Re : Classeur exel au premier plan

Bonjour,

Merci pour ton retour, mais avec la solution propose j'ai une erreur de fonction non définie sur FindWindow dans lngRetour = SetForegroundWindow(FindWindow("xlMain", Application.Caption)).
 

PMO2

XLDnaute Accro
Re : Classeur exel au premier plan

Bonjour,

Avez-vous, en tête du module de code, fait la déclaration suivante (et, s'il s'agit d'un autre module, préférez Public à Private)

Code:
Public Declare Function FindWindow& Lib "user32" Alias "FindWindowA" ( _
 ByVal lpClassName As String, ByVal lpWindowName As String)

????

Cordialement.

PMO
Patrick Morange
 

PMO2

XLDnaute Accro
Re : Classeur exel au premier plan

Bonjour,

Code:
Application.hWnd

Cette propriété renvoie un objet de type Long désignant le handle de fenêtre
supérieure de la fenêtre Microsoft Excel. Propriété en lecture seule.

C'est une fonctionnalité d'Excel qui, d'après ce que je constate à la suite de votre question, est récente et n'existait pas sous Excel 2000.

La fonction FindWindow, quant à elle, appartient à l'Api Windows et existe depuis longtemps. La propriété hWnd d'Excel est, très vraisemblablement, issue de l'usage de cette Api.

Conclusion:
Si le programme doit-être utilisé sur différentes versions d'Excel, il est préférable de coder avec la version la plus ancienne, même si cela est moins aisé, afin d'éviter ce genre de problème.

Cordialement.

PMO
Patrick Morange
 

Statistiques des forums

Discussions
312 764
Messages
2 091 859
Membres
105 079
dernier inscrit
Biscot_399