Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Hyper Difficile !] Focus bis

2 réponses
Avatar
Emcy
salut,

J'annule mon precedent post. Je repose ma question=20
autremment (attention c'est dure =E0 comprendre, je vais=20
essayer d'=EAtre clair) :

- J'ai fait un classeur Excel qui lan=E7ait une macro =E0 son=20
ouverture (affichage d'userform).

- Pour =E9viter d'avoir le message "voulez-vous activer les=20
macro ?", j'ai fait cette macro dans un autre classeur=20
qui ouvre mon classeur avec la userform :

Sub Main()
=20
' Start Excel and loads the text file
On Error GoTo Fin
Dim excelApp As Object
Set excelApp =3D CreateObject("Excel.Application")
On Error GoTo 0
excelApp.Visible =3D True
excelApp.Workbooks.OpenText Filename:=3D"C:\Documents=20
and Settings\MARMONIER_C\Bureau\Travail En=20
Cours\CreationComposant.xls"
=20
Fin:

End Sub

- Le probl=E8me avec cette macro c'est que =E7a ouvre le=20
documment mais =E7a ne le met active (=3D> la macro ne se=20
lance pas automatiquemment)

-Alors j'ai ajouter dans mon classeur ( avec l'userform )
un bout de code qui permet =E0 l'ouverture de celui-ci de=20
lui donner la main. Le voici :

Private Declare Function SetWindowPos _
Lib "user32" ( _
ByVal Hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long

Private Declare Function FindWindowA _
Lib "user32" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Private Sub Workbook_Open()
=20
Dim Position As Long
Dim Hwnd As Long
Dim Hauteur As Long
Dim Largeur As Long
With Application
Hauteur =3D .Height
Largeur =3D .Width

Hwnd =3D FindWindowA(vbNullString, .Caption)

Position =3D SetWindowPos(Hwnd, -1, _
.Top, _
.Left, _
.Width, _
.Height, 0)

'.Width =3D Largeur
'.Height =3D Hauteur
End With

Application.ActiveWorkbook.Activate
Application.WindowState =3D xlMinimized
AppActivate "Microsoft Excel"

UserForm1.Show

End Sub=20

- c'=E9tait super, =E7a marchait enfin ! ... mais ce n'=E9tait=20
pas fini. Je voulais maintenant ouvrir mon classeur =E0=20
partir du logiciel "PowerLogic" qui =E0 un interpreteur VB=20
(il s'appel Sax Basic Engine). J'ai copier la macro Main=20
dans l'interpreteur et je l'ai lancer. Resultat : =E7a=20
ouvre bien le classeur Excel et mon userform est bien=20
affich=E9e mais =E7a n'active pas Excel : dans la barre des=20
tache Excel clignote (bizare ?! ). Et lorsque je r=E9active=20
le logiciel Power logic, le message "Serveur occup=E9 !
Impossble de terminer cette action car le programme=20
Microsoft Excel ne r=E9pond pas." s'affiche (se message est=20
issu du logiciel "PowerLogic".

Quelqu'un pourait-il m'aider ?

2 réponses

Avatar
Clément Marcotte
Bonjour,

J'ai comme l'impression que tu te compliques la vie.

Tu te crées un certificat personnel avec SELFCERT.EXE

Ensuite tes utilisateurs répondent de toujours te faire confiance.


"Emcy" a écrit dans le message de
news:133b01c38993$e88194b0$
salut,

J'annule mon precedent post. Je repose ma question
autremment (attention c'est dure à comprendre, je vais
essayer d'être clair) :

- J'ai fait un classeur Excel qui lançait une macro à son
ouverture (affichage d'userform).

- Pour éviter d'avoir le message "voulez-vous activer les
macro ?", j'ai fait cette macro dans un autre classeur
qui ouvre mon classeur avec la userform :

Sub Main()

' Start Excel and loads the text file
On Error GoTo Fin
Dim excelApp As Object
Set excelApp = CreateObject("Excel.Application")
On Error GoTo 0
excelApp.Visible = True
excelApp.Workbooks.OpenText Filename:="C:Documents
and SettingsMARMONIER_CBureauTravail En
CoursCreationComposant.xls"

Fin:

End Sub

- Le problème avec cette macro c'est que ça ouvre le
documment mais ça ne le met active (=> la macro ne se
lance pas automatiquemment)

-Alors j'ai ajouter dans mon classeur ( avec l'userform )
un bout de code qui permet à l'ouverture de celui-ci de
lui donner la main. Le voici :

Private Declare Function SetWindowPos _
Lib "user32" ( _
ByVal Hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long

Private Declare Function FindWindowA _
Lib "user32" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Private Sub Workbook_Open()

Dim Position As Long
Dim Hwnd As Long
Dim Hauteur As Long
Dim Largeur As Long
With Application
Hauteur = .Height
Largeur = .Width

Hwnd = FindWindowA(vbNullString, .Caption)

Position = SetWindowPos(Hwnd, -1, _
.Top, _
.Left, _
.Width, _
.Height, 0)

'.Width = Largeur
'.Height = Hauteur
End With

Application.ActiveWorkbook.Activate
Application.WindowState = xlMinimized
AppActivate "Microsoft Excel"

UserForm1.Show

End Sub

- c'était super, ça marchait enfin ! ... mais ce n'était
pas fini. Je voulais maintenant ouvrir mon classeur à
partir du logiciel "PowerLogic" qui à un interpreteur VB
(il s'appel Sax Basic Engine). J'ai copier la macro Main
dans l'interpreteur et je l'ai lancer. Resultat : ça
ouvre bien le classeur Excel et mon userform est bien
affichée mais ça n'active pas Excel : dans la barre des
tache Excel clignote (bizare ?! ). Et lorsque je réactive
le logiciel Power logic, le message "Serveur occupé !
Impossble de terminer cette action car le programme
Microsoft Excel ne répond pas." s'affiche (se message est
issu du logiciel "PowerLogic".

Quelqu'un pourait-il m'aider ?
Avatar
Emcy
salut,

1 - C'est quoi ce "SELFCERT.EXE" ? comment ça s'utilise
et où que ça se trouve ?

2 - Je me suis mal exprimé dans mon probème. En fait,
ouvrir le fichier sans poser de question n'était pas mon
problème principale. Je veux pouvoir lancer ma macro
automatiquement à partir de mon application "PowerLogic"
pour éviter de faire le moins de manipulations possible :
je veux ouvrir mon classeur puis mettre le focus sur
celui-ci depuis mon application "powerPCB". Le principale
problème est de donné le focus à mon documment Excel ( je
suis peut-être partie dans la mauvaise direction ) :
j'arrive à l'ouvrir sans problème


-----Message d'origine-----
Bonjour,

J'ai comme l'impression que tu te compliques la vie.

Tu te crées un certificat personnel avec SELFCERT.EXE

Ensuite tes utilisateurs répondent de toujours te faire
confiance.



"Emcy" a écrit dans le message de
news:133b01c38993$e88194b0$
salut,

J'annule mon precedent post. Je repose ma question
autremment (attention c'est dure à comprendre, je vais
essayer d'être clair) :

- J'ai fait un classeur Excel qui lançait une macro à son
ouverture (affichage d'userform).

- Pour éviter d'avoir le message "voulez-vous activer les
macro ?", j'ai fait cette macro dans un autre classeur
qui ouvre mon classeur avec la userform :

Sub Main()

' Start Excel and loads the text file
On Error GoTo Fin
Dim excelApp As Object
Set excelApp = CreateObject("Excel.Application")
On Error GoTo 0
excelApp.Visible = True
excelApp.Workbooks.OpenText Filename:="C:Documents
and SettingsMARMONIER_CBureauTravail En
CoursCreationComposant.xls"

Fin:

End Sub

- Le problème avec cette macro c'est que ça ouvre le
documment mais ça ne le met active (=> la macro ne se
lance pas automatiquemment)

-Alors j'ai ajouter dans mon classeur ( avec l'userform )
un bout de code qui permet à l'ouverture de celui-ci de
lui donner la main. Le voici :

Private Declare Function SetWindowPos _
Lib "user32" ( _
ByVal Hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long

Private Declare Function FindWindowA _
Lib "user32" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Private Sub Workbook_Open()

Dim Position As Long
Dim Hwnd As Long
Dim Hauteur As Long
Dim Largeur As Long
With Application
Hauteur = .Height
Largeur = .Width

Hwnd = FindWindowA(vbNullString, .Caption)

Position = SetWindowPos(Hwnd, -1, _
.Top, _
.Left, _
.Width, _
.Height, 0)

'.Width = Largeur
'.Height = Hauteur
End With

Application.ActiveWorkbook.Activate
Application.WindowState = xlMinimized
AppActivate "Microsoft Excel"

UserForm1.Show

End Sub

- c'était super, ça marchait enfin ! ... mais ce n'était
pas fini. Je voulais maintenant ouvrir mon classeur à
partir du logiciel "PowerLogic" qui à un interpreteur VB
(il s'appel Sax Basic Engine). J'ai copier la macro Main
dans l'interpreteur et je l'ai lancer. Resultat : ça
ouvre bien le classeur Excel et mon userform est bien
affichée mais ça n'active pas Excel : dans la barre des
tache Excel clignote (bizare ?! ). Et lorsque je réactive
le logiciel Power logic, le message "Serveur occupé !
Impossble de terminer cette action car le programme
Microsoft Excel ne répond pas." s'affiche (se message est
issu du logiciel "PowerLogic".

Quelqu'un pourait-il m'aider ?

.