Affichage Userform

Affichage Userform - VB/VBA/VBS - Programmation

Marsh Posté le 12-09-2006 à 14:52:57    

Bonjour, je rencontre le problème suivant : Une appli génère un fichier Excel et appelle une macro. Cette macro ouvre le fichier Excel (qui reste invisible) et sur lequel pointent des userforms. Si aucun autre doc Excel n'est ouvert, tout va bien : le userform apparait au premier plan (au-dessus de l'appli). Dans le cas contraire, le premier userform reste "bloqué" dans la barre de tache. Je précise que ce problème ne se résout aps avec la méthode :
 
Application.WindowState = xlMinimized
UserForm1.Show vbmodeless
 
Un grand merci à qui voudra m'aider
 

Reply

Marsh Posté le 12-09-2006 à 14:52:57   

Reply

Marsh Posté le 13-09-2006 à 17:19:43    

ce n'est peut etre plus le bon classeur qui est activé  
windows("machin.xls" ).activate  
a voir

Reply

Marsh Posté le 15-09-2006 à 12:05:39    

Pfff... rien à faire.
Merci malgré tout.

Reply

Marsh Posté le 15-09-2006 à 13:45:15    

J'avoue que je n'ai pas bien saisi ton problème. Pourrais-tu être plus clair? Car je pense avoir rencontré le même bug par le passé...

Reply

Marsh Posté le 15-09-2006 à 14:11:21    

Donc :  
 
1/ un logiciel génère un fichier excel (contenant des données brutes), qui est nommé et enregistré dans un répertoire
 
2/ après quoi, ce même logiciel appelle une macro contenue dans un fichier excel (ce fichier ne sert à rien d'autre que contenir cette macro et 6/7 userforms)
 
3/ cette macro va commencer par ouvrir le premier fichier de données excel, récupérer les informations qui y sont contenues, et en fonction de celles-ci, poser des question s à l'utilisateur afin que celui-ci ait la main sur le résultat final : des données mises en forme dans un ppt.
 
4/ si, lorsque le traitement commence, aucun fichier EXCEL (les autres applis ne gènent pas) n'est ouvert, tout se passe bien : les userforms se mettent successivement au premier plan, y compris après création et ouverture du ppt.
 
5/ Si en revanche, un ou plusieurs autres fichiers EXCEL sont ouverts, je vois apparaitre (ce qui n'est pas le cas en 4/) mes 2 fichiers de référence en barre de tache et rien ne se passe
 
6/ il faudra cliquer sur un de ces 2 fichiers (au choix) afin que le premier userform apparaisse
 
7/ le but est simple : que ce ... de userform apparaisse TOUJOURS au premier plan à l'écran
 
Voila, c'est un peu long mais ca me semble clair.
MERCI, MERCI, MERCI de votre aide.

Reply

Marsh Posté le 15-09-2006 à 16:58:13    

Bonjour,
si les autres fichiers ne sont pas indispensables, il y a surement un moyen de les fermer avant d'appeler ton userform?
si cela t'intéresses quelqu'un a peut-être une méthode pour les fermer en gardant le bon ouvert.  
 
Cordialement
 
 
  edit:    par exemple
 
For Each w In Workbooks
    If w.Name <> ThisWorkbook.Name Then
        w.Close savechanges:=True
    End If
Next w


Message édité par seniorpapou le 15-09-2006 à 17:05:53
Reply

Marsh Posté le 15-09-2006 à 17:02:16    

Alors j'ai une question par rapport à l'exécution de ton programme:
ces userforms apparaissent-elles au premier plan même si une fenêtre autre que celle d'EXCEL est déjà présente à l'écran?
Mis à part çà, comment créée-tu ces fichiers EXCEL ? Ce que je veux dire par là c'est est-ce que tu récupère une fenêtre EXCEL existante ou tu en créée une nouvelle? Cette exécution me parait très bizarre car en effet, ton programme semble être en attente en plein millieu de son exécution d'ou le fait que tu dois clicker sur un de ces deux fichiers ouverts pour finir leur appel et lancer ta userform.
 
J'espère être capable de t'aider avec les informations que tu va me fournir car l'exécution de ton prog n'est pas vraiment ce à quoi j'ai dû faire face par le passé. D'autant plus que je n'ai jamais codé en VBA, ce que tu utilise si j'ai bien compris.
 
:bounce:

Reply

Marsh Posté le 15-09-2006 à 17:27:32    

A seniorpapou : les personnes qui vont utiliser cet export+macro ont environ 10 fichiers Excel ouverts en permanence et il n'est aps question de les leur fermer...

Reply

Marsh Posté le 15-09-2006 à 17:46:20    

A LesGensRoots :  
1/ Oui à la première question : les userforms passent par dessus tout : la fenètre de l'appli, le ppt créé... tout sauf des fichiers Excel qui seraient déjà ouvert au moment où la macro se lance.
 
2/ le fichier excel est généré from scratch. Mais a la limite, peu importe puisque lorsque la macro se lance, ce fichier Exel généré est fermé.
 
 
A noter :
 
dans le cas ou des excels sont déjà ouverts, que je clique sur un des excels (macro ou données générées) pour afficher le premier userform, les autres userforms apparaisent ensuite bien au premier plan, sauf après l'ouverture du ppt... alors que dans l'autre cas, celui ou le premier userform se met au premier plan de lui-même, le ppt ne gène pas...  
 

Reply

Marsh Posté le 15-09-2006 à 18:04:19    

En fait, il me semble que le problème, qui semble complexe, est en fait simple à exprimer : il me faudrait une ligne de code qui fasse en sorte que quelle que soit la configuration, mes userforms apparaissent au premier plan, point...

Reply

Marsh Posté le 15-09-2006 à 18:04:19   

Reply

Marsh Posté le 18-09-2006 à 08:42:12    

Les problèmes inter-processus ne sont jamais simples=) . As-tu essayé de "killer" toutes les fenêtre EXCEL déjà existantes au démarage de ton prog?

Reply

Marsh Posté le 18-09-2006 à 12:23:45    

"Killer", ca veut dire que je les enregistre et ferme ?
Ca me parait une solution assez détournée, mais si ca marche pourquoi pas effectivement.
 
En atendant j'ai trouvé une autre solution qui fonctionne : au lieu de "Application.WindowState = xlMinimized" , j'ai utilisé au contraire "Application.WindowState = xlMaximized" attendu que c'était le fait que les fenêtres Excel soient "bloquées" dans la barre de tache qui empéchait les userform de s'afficher. Bonne surprise : les fenêtres Excel ne s'affichent pas en fond d'écran (comme je le supposait) mais les userforms s'affichent bien au premier plan...
 
Merci de vous être interréssés à mon problème.
 
Pour info, j'ai à dispo plein de codes pour des macros powerpoint glanées très difficilement (c'est assez rare sur le net), donc si vous êtes interréssés...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed