Activer Excel pour affichage userform

Signaler
Messages postés
10
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 juin 2007
-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
Bonjour le forum!!

Je suis novice en vbscript mais je connais assez bien le VBA d'Excel.
Voila mon souci.
J'ai une macro sous excel qui affiche un userform toutes les 10 min ... le problème est que si je reduit ma fenetre Excel dans la barre des taches de windows XP pour faire autre chose (travailler sur une autre application mais pas Excel), qd le userform doit s'afficher, je suis obligé de cliquer sur l'application Excel dans la barre des taches (qui se met a clignoter) pour qu'il s'affiche. Quel pourrait etre le code qui permettrait juste d'activer  automatiquement mon classeur Excel qd le userform doit apparaitre??

Si vous voulez des precisions sur ce petit problème je reste disponible...
Merci d'avance

madb

24 réponses

Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Tu cherches ton userform avec l'api Findwindow et tu utilise l'api SetForGroundWindow pour la mettre au premier plan.

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Salut au fait, voilà les API:

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Long

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)
Messages postés
10
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 juin 2007

oups je ne suis pas sur le bon theme ... :( maudite molette de sourie

J'ai re-posté ce message dans le bon theme donc si un admin peut supprimer celui ci  ce serait cool

Desolé
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Déplacé plutôt et supprimer l'autre vu que tu as des réponse ici!

Sinon exemple:

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Long

Dim Hwnd as long
Hwnd = FindWindox(VbNullString, "CaptionDuUsermform")
SetForgroundWindow(Hwnd)

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Messages postés
10
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 juin 2007

J'ai essayé ton code VBA, je n'ai pas d'erreur et pourtant ca ne marche pas ..
Je vais etre plus precis peut etre que l'on peut affiner le truc.
En fait je cré une interface sur windows XP qui en gros partage l'écran entre un fichier Excel et une application d'un logiciel graphique et l'utilisateur doit les voir en meme temps. Le truc c que l'utilisateur peut cliquer sur le graphique pour avoir certains détail blabla et donc l'activewindow devient l'appli graphique et de temps en temps l'Excel balance une alerte sous forme de userform et si c'est l'appli graphique d'activée alors Excel clignote en bas en attendant desesperement que je clique dessus... Evidement qd c'est Excel qui est actif la ya aucun probleme...

En tout cas un grand merci de m'aider c'est tres sympa
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Fais voir le code que tu as mis et où! Sinon je vérai ça demain! Salut!

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

attention :

Hwnd = FindWindo x (VbNullString, "CaptionDuUsermform")
c'est FindWindow ^^

Pour infos, il y a aussi l'API ShowWindow

@++

<hr size ="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
10
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 juin 2007

Voici mon code ...

Dans un module


Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long


sub ma_macro


....


If Seuil_actuel <> Seuil_précédent And Seuil_actuel <> "" And Seuil_précédent <> "" Then


Dim hwnd As Long
hwnd = FindWindow(vbNullString, "alerte_pop_up")
SetForegroundWindow (hwnd)


Alerte_pop_up.Label2 = "Le tag " & Tag & " " & Description & " du service " & Service & " situé sur l'atelier " & Atelier & " vient de passer du seuil " & Seuil_précédent & " au seuil " & Seuil_actuel & " en passant de la valeur " & Valeur_précédente & " à la valeur " & Valeur_actuelle
Alerte_pop_up.Show vbModeless
....

Faut'il que je mette la commande que tu m'a donné dans le initialize du userform?

Merci encore pour ton aide
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Tu l'appelles à quel moment ce bout de code?

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)
Messages postés
10
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 juin 2007

Juste avant le userform.show
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
"J'ai une macro sous excel qui affiche un userform toutes les 10 min ..."

Il faut que tu mettes ce code dans cette macro!

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)
Messages postés
10
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 juin 2007

oui oui c'est bien la meme macro dont on parle... j'avais mis tte les 10 minutes car la valeur test du "if" arrive a peu pres tte les 10 min, 
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
T'as vérifier que le hwnd prennait bien une valeur?

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)
Messages postés
10
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 juin 2007

en effet je n'ai pas de valeur hwnd = 0
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
"alerte_pop_up") c'est le nom ou la caption du userform! Car pour ça marche il faut que ce soit la caption!

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)
Messages postés
10
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 juin 2007

hwnd prend une valeur maintenant et pourtant ca ne s'affiche pas devant....
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Voit avec ShowWindow comme le suggérai mortalino.

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
ou alors applique ce code au classeur excel et ensuite au userform!

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)
Messages postés
10
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 juin 2007

je n'arrive pas a grand chose... Sinon comme il suffit qu'Excel soit actif pour que ca s'affiche devant peux tu me donner le code pour activer le programme Excel depuis un script vbs... (juste activer mon classeur pas l'ouvrir car il est deja ouvert)

merci

le classeur s'appelle "poste de supervision.xls"