Fonction FindWindows en VBA

Résolu/Fermé
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 - 26 févr. 2011 à 16:56
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 - 26 févr. 2011 à 17:14
Bonjour,
J'ai une appli développée depuis pas mal d'années déjà (et dont je ne reconnais plus très bien le code !).
Depuis un formulaire Access, je veux aller sur une feuille Excel, et dans une cellule bien précise, en correspondance avec mon champ Access sur le formulaire de départ

Pour cela, je déroule une macro Demarre_excel() qui cherche d'abord si Excel est déjà ouvert, une instance en mémoire, ou si c'est le premier appel
d'Excel.

Jusque là tout fonctionnait bien. Mais j'ai à présent une erreur sur la fonction FindWindows ( "Sub ou fonction non définie" )
Je n'en vois pas du tout l'explication. Entre temps, j'ai certainement réinstallé Microsoft office depuis mon Cd. Est-ce une piste ?

Si je ne trouve pas, je vais devoir réécrire le truc d'une toute autre manière.
Qui peut m'aider ?
A toutes fins utiles je vous mets ci-dessous le code employé

Merci d'avance
Roland
-----------------------
Sub DetectExcel()

Const WM_USER = 1024
Dim hWnd As Long
hWnd = FindWindow("XLMAIN", 0) C'est là que ça plante !!!!!
If hWnd = 0 Then
Exit Sub
Else
SendMessage hWnd, WM_USER + 18, 0, 0
End If
End Sub
--------------------------------------------

Cette sub est appelée par:
-----
Sub Demarre_Excel()
Dim MyXL As Object
Dim ExcelWasNotRunning As Boolean
Dim fichouv As Boolean

fichouv = 0
' Test pour déterminer si une copie de Microsoft Excel
' est déjà en exécution.
On Error Resume Next
Set MyXL = GetObject(, "Excel.Application")

If Err.Number <> 0 Then
ExcelWasNotRunning = True
Call DetectExcel
' Définit la variable objet faisant référence au fichier à ouvrir.
Set MyXL = GetObject("C:\Mythologie\Organigramme_mytho.XLS")
fichouv = 1
'DoCmd.Close acForm, "Personnages", acSaveYes
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
GoTo Suite
End If

'DoCmd.Close acForm, "Personnages", acSaveYes
MyXL.Application.WindowState = vbMaximizedFocus
MyXL.Visible = True
MyXL.Parent.Windows(1).Visible = True
Suite:
If fichouv = 0 Then
MyXL.Run "Organigramme"
End If

Set MyXL = Nothing ' Libère la référence à l'application
' et à la feuille de calcul.
End Sub
-------------------------------------------------------------------------------
elle même appelée, depuis le formulaire, par
Private Sub Commande33_click()On Error GoTo Err_Commande33_Click
Nomp = Forms!Personnages!Repertoire!Page.Value & [Nom]
'
SaveSetting "Mytho", "Lien_excel", "Nom", Nomp
Call Demarre_Excel
Exit_Commande33_Click:
Exit Sub

Err_Commande33_Click:
MsgBox Err.Description
Resume Exit_Commande33_Click
End Sub
----------------------------------------------------------------






2 réponses

eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
26 févr. 2011 à 17:08
Bonjour,

FindWindow est une fonction API, il faut peut être voir du coté de sa déclaration.
https://support.microsoft.com/fr-fr/help/465928

eric
0
lecrol Messages postés 200 Date d'inscription samedi 4 juillet 2009 Statut Membre Dernière intervention 25 juillet 2016 24
26 févr. 2011 à 17:14
ouaiiiiii Je n'y pensais plus C'est sûr et certain que ça doit être ça Merciiiiiiiii Eriiiiiic
0