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

Ouvrir Word depuis excel et lui donner le focus

10 réponses
Avatar
Emile63
Bonjour a tous,
Depuis la suite office 2010, a travers des chemins + noms complet figurant =
sur une feuille Excel que je double-clic je souhaite ouvrir le document en =
question avec Word et lui donner le focus a travers la macros suivante, Wor=
d et la feuille s'ouvrent, mais Excel reste au premier plan, alors que je s=
ouhaiterais que ce soit Word.
Je vous remercie d'avance pour votre aide et solutions.
cordialement,
Emile

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Bo=
olean)
Dim appWD As Word.Application

With Application
.StatusBar =3D "Ex=E9cution de macro en cours...."
End With
Cancel =3D True
MyPos =3D LCase(Right(Target.Value, 4))
Select Case MyPos=20
Case "docm"
Set appWD =3D CreateObject("Word.Application")
appWD.Documents.Open Target.Offset(0, 2).Value
' appWD.Documents.Add Template:=3DTarget.Offset(0, 2).Value, NewT=
emplate:=3DFalse, _
DocumentType:=3D0
appWD.Visible =3D True
Set appWD =3D Nothing
Case "docx"
Set appWD =3D CreateObject("Word.Application")
appWD.Visible =3D True
appWD.Documents.Open Target.Offset(0, 2).Value
Set wordobj =3D Nothing

End Select
With Application
.StatusBar =3D False
.EnableEvents =3D True
.ScreenUpdating =3D True
.DisplayAlerts =3D True
=20
End WithEnd Sub

10 réponses

Avatar
isabelle
bonjour Emile,

ajoute
appWD.Activate
juste après
appWD.Visible = True

--
isabelle



Le 2012-06-06 06:46, Emile63 a écrit :
Bonjour a tous,
Depuis la suite office 2010, a travers des chemins + noms complet figurant sur une feuille Excel que je double-clic



je souhaite ouvrir le document en question avec Word et lui donner le focus a travers la macros suivante, Word et la feuille s'ouvrent,

mais Excel reste au premier plan, alors que je souhaiterais que ce soit Word.
Je vous remercie d'avance pour votre aide et solutions.
cordialement,
Emile

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim appWD As Word.Application

With Application
.StatusBar = "Exécution de macro en cours...."
End With
Cancel = True
MyPos = LCase(Right(Target.Value, 4))
Select Case MyPos
Case "docm"
Set appWD = CreateObject("Word.Application")
appWD.Documents.Open Target.Offset(0, 2).Value
' appWD.Documents.Add Template:=Target.Offset(0, 2).Value, NewTemplate:úlse, _
DocumentType:=0
appWD.Visible = True
Set appWD = Nothing
Case "docx"
Set appWD = CreateObject("Word.Application")
appWD.Visible = True
appWD.Documents.Open Target.Offset(0, 2).Value
Set wordobj = Nothing

End Select
With Application
.StatusBar = False
.EnableEvents = True
.ScreenUpdating = True
.DisplayAlerts = True

End WithEnd Sub

Avatar
MichD
Bonjour,

Un petit exemple simple :

Déclaration des API dans le haut d'un module standard
'=================================== Declare Function BringWindowToTop Lib "user32" (ByVal _
hwnd As Long) As Long

Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName _
As Any) As Long
'===================================
Un petit exemple comment ouvrir un document Word et
conserver l'application Excel comme application active et visible.

'------------------------------------------------------------
Sub test()
Dim HandleExcel As Long, Y As Long
Dim Wd As Word
Dim Dc As Object

HandleExcel = FindWindow(vbEmpty, Application.Caption)

Set Wd = CreateObject("Word.Application")
Wd.Visible = True
Set Dc = Wd.documents.Open("C:UsersDenisDocumentsdenis.docx")
Y = BringWindowToTop(X)

End Sub
'------------------------------------------------------------
Avatar
MichD
Désolé, je suis lunatique ce matin! ;-))

Remplace la procédure "Test" du message précédent
par celle-ci :

'-------------------------------------
Sub test()

Dim HandleWord As Long, Y As Long
Dim Wd As Object
Dim Dc As Object

Set Wd = CreateObject("Word.Application")
Wd.Visible = True

'Nom et chemin du document à adapter
Set Dc = Wd.documents.Open("C:UsersTon profilDocumentstoto.docx")
HandleExcel = FindWindow(vbEmpty, CStr(Wd.Caption))
Y = BringWindowToTop(HandleExcel)

End Sub
'-------------------------------------
Avatar
MichD
Désolé, je suis lunatique ce matin! ;-))

Remplace la procédure "Test" du message précédent
par celle-ci :

C'est la bonne! je retourne me coucher à moins qu'Isabelle m'offre le
café...
-;)))

'-------------------------------------
Sub test()

Dim HandleWord As Long, Y As Long
Dim Wd As Object
Dim Dc As Object

Set Wd = CreateObject("Word.Application")
Wd.Visible = True

'Nom et chemin du document à adapter
Set Dc = Wd.documents.Open("C:UsersTon profilDocumentstoto.docx")
HandleWord = FindWindow(vbEmpty, CStr(Wd.Caption))
Y = BringWindowToTop(HandleWord)

End Sub
'-------------------------------------




"MichD" a écrit dans le message de groupe de discussion :
jqnh65$li8$

Désolé, je suis lunatique ce matin! ;-))

Remplace la procédure "Test" du message précédent
par celle-ci :

'-------------------------------------
Sub test()

Dim HandleWord As Long, Y As Long
Dim Wd As Object
Dim Dc As Object

Set Wd = CreateObject("Word.Application")
Wd.Visible = True

'Nom et chemin du document à adapter
Set Dc = Wd.documents.Open("C:UsersTon profilDocumentstoto.docx")
HandleExcel = FindWindow(vbEmpty, CStr(Wd.Caption))
Y = BringWindowToTop(HandleExcel)

End Sub
'-------------------------------------
Avatar
Emile63
El miércoles, 6 de junio de 2012 12:46:32 UTC+2, Emile63 escribió:
Bonjour a tous,
Depuis la suite office 2010, a travers des chemins + noms complet figuran t sur une feuille Excel que je double-clic je souhaite ouvrir le document e n question avec Word et lui donner le focus a travers la macros suivante, W ord et la feuille s'ouvrent, mais Excel reste au premier plan, alors que je souhaiterais que ce soit Word.
Je vous remercie d'avance pour votre aide et solutions.
cordialement,
Emile

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim appWD As Word.Application

With Application
.StatusBar = "Exécution de macro en cours...."
End With
Cancel = True
MyPos = LCase(Right(Target.Value, 4))
Select Case MyPos
Case "docm"
Set appWD = CreateObject("Word.Application")
appWD.Documents.Open Target.Offset(0, 2).Value
' appWD.Documents.Add Template:=Target.Offset(0, 2).Value, Ne wTemplate:úlse, _
DocumentType:=0
appWD.Visible = True
Set appWD = Nothing
Case "docx"
Set appWD = CreateObject("Word.Application")
appWD.Visible = True
appWD.Documents.Open Target.Offset(0, 2).Value
Set wordobj = Nothing

End Select
With Application
.StatusBar = False
.EnableEvents = True
.ScreenUpdating = True
.DisplayAlerts = True

End WithEnd Sub




Merci Isabelle,ça fonctionne parfaitement. :-)
Avatar
isabelle
Le 2012-06-06 08:09, MichD a écrit :
Désolé, je suis lunatique ce matin! ;-))

C'est la bonne! je retourne me coucher à moins qu'Isabelle m'offre le café...
-;)))



arrive! la cafetière vient de sonner ;-)

--
isabelle
Avatar
MichD
| arrive! la cafetière vient de sonner ;-)

Et bien merci!
;-))
Avatar
MichD
Maintenant après le bon café d'Isabelle,

Si tu exécutes ce code, l'application "Word" et le fichier que
tu viens d'ouvrir est déjà le document affiché à l'écran.

Pour quoi vouloir ajouté du code pour le rendre actif, il l'est déjà!
Cela explique pourquoi lors de mon premier message, je pensais
(j'avais mal lu) que tu voulais conserver l'application Excel active
après avoir un document Word.

Si tu veux que le Document Word soit actif, nul besoin du code d'Isabelle
ou du mien... Où il y a quelque chose que je ne comprends pas.

'----------------------------------------
Sub test()

Dim Wd As Object
Dim Dc As Object

Set Wd = CreateObject("Word.Application")
Wd.Visible = True
Set Dc = Wd.documents.Open("C:CheminMonDocument.docx")

End Sub
'----------------------------------------
Avatar
Fredo P.
"MichD" a écrit dans le message de news:
jqnh65$li8$
Désolé, je suis lunatique ce matin! ;-))


En plus on est toujours en lune de mai et pleine lune, on ne dort pas comme
il faut, ce sont ces jours la que les renards à 2 pattes sortent du bois!
Avatar
MichD
Ce qui m'a perturbé, c'est le passage de Vénus entre le soleil
et la lune vers 18:30 heures hier...! ;-))

La prochaine dans 105 ans seulement!