Détecter l'ouverture d'une fenêtre qui n'est pas un classeur Excel

Bonjour,

Est-il possible de détecter qu'une nouvelle fenêtre, qui n'est pas forcément un classeur Excel, vient d'être ouverte ?

De la même manière que [...]

Public WithEvents App As Application

Private Sub App_WorkbookOpen(ByVal Wb As Excel.Workbook)

[...] permet de détecter l'ouverture d'un fichier Excel.

Merci par avance pour votre aide.

Bonjour,

Quel type de fenêtre veux-tu détecter ?

Daniel

Bonjour Daniel,

C'est un pdf que je cherche à détecter.

Tous les mois, j'ai des fichiers à extraire depuis notre outil.

A l'ouverture d'un fichier Excel, ma macro le détecte automatiquement, l'enregistre dans un dossier puis le ferme.

J'aimerai pouvoir faire pareil avec les pdf :)

OK, mais l'ouverture du fichier Excel se fait dans la même instance d'Excel. Détecter l'ouverture d'une autre instance, je ne sais pas le faire et je ne sais même pas si c'est possible depuis Excel.

Daniel

Bonjour le fil

Pourquoi vouloir utiliser

Public WithEvents App As Application

Vous devez bien ouvrir votre fichier Excel contenant les macros pour le traitement
pour moi il suffit juste de lancer la procédure dans

Private Sub Workbook_Open()
  Call OuverturePDF ' Ceci un exemple de nom de procédure
End Sub

Bonjour à tous,

@BrunoM45 :

Je suppose que la macro événementielle que montre Julien P détecte l'ouverture d'un classeur. Mais je ne sais pas faire pareil pour un fichier PDF, étant nul avec les API. Quel serait alors le code ?

Salut DanielC

La macro évènementielle que montre Julien P est utile lorsqu'on fait une extraction de SAP (par exemple)
SAP lance Excel pour ouvrir le fichier, à ce moment là, la macro évènementielle s'active.

Mais pour un fichier PDF, on imprime ou exporte un état en PDF et ça ouvre éventuellement Adobe Reader

Il n'y a donc aucun évènement possible pour lancer une macro Excel

C'est pour cette raison que je précise qu'il faut mettre le code dans Workbook_open et ouvrir le fichier Excel
qui peu appeler une sub de vérification et déplacement des fichiers PDF, qui pourrait être celle-ci

Sub DéplacePDF()
  Dim sPathIni As String, sPathDes As String
  Dim sFic As String
  ' Chemin initial des fichiers PDF
  sPathIni = "C:\Temp\PDF\"
  ' Cehmin de destination : Mes Documents
  sPathDes = CreateObject("WScript.Shell").SpecialFolders("MyDocuments")
  If Right(sPathDes, 1) <> "\" Then sPathDes = sPathDes & "\"
  sPathDes = sPathDes & "PDF\"
  ' Vérifier les fichiers PDF du dossier temporaire
  sFic = Dir(sPathIni & "*.pdf")
  ' Tant qu'il y a des fichiers
  Do While sFic <> ""
    Name sPathIni & sFic As sPathDes & sFic
    sFic = Dir
  Loop
End Sub

J'espère que ce sera clair

A+

On est donc d'accord pour dire que je ne peux pas détecter dans Excel si j'ouvre manuellement un fichier PDF ?

Daniel

Re,

On est donc d'accord pour dire que je ne peux pas détecter dans Excel si j'ouvre manuellement un fichier PDF ?

Oui, tout à fait

Bonjour Bruno,

J'utilise le code [...]

Public WithEvents App As Application

[...] car j'ai mon classeur contenant la macro qui reste ouvert pendant que je fais mes extractions (excel et pdf) depuis mon outil comptable.

J'exclu le fichier, contenant la macro, de la procédure avec :

If Wb.Name = Thisworkbook.Name then exit sub

En lisant vos échanges, j'ai compris qu'il n'était pas possible de détecter l'ouverture d'un fichier pdf.

Une autre piste de réfléxion :

J'ai mis la main sur un code permettant de lister sur Excel toutes les fenêtres ouvertes (excel, pdf, outil pro, page internet etc...).

Est-il possible, à partir de ça, de cibler le pdf, sachant donc qu'on a son nom, et de l'enregistrer ?

Merci encore

Pour en faire une copie, il faut connaître son emplacement.

Daniel

D'accord..

Dernière piste de réflexion, est-il possible d'activer la fenêtre du pdf ?

C'est peu orthodoxe, mais avec un SendKeys je peux peut-être faire un Ctrl+S histoire de donner un emplacement temporaire au fichier, puis forcer la fenêtre pdf à se fermer et agir sur l'enregistrement.

Re,

L'outil comptable qui fait l'extraction PDF enregistre bien le fichier quelque part

Ce doit être paramétrable ou du moins vous devez connaitre ou vont les fichiers, non ?

En ce qui concerne le SendKeys (envoi de touches) je ne le préconise jamais...
un clic mal placé et le Sendkeys est fait n'importe comment

A+

Bonjour,

Forcer la fenêtre pdf à se fermer, c'est possible via une API. En revanche, pour l'enregistrement, c'est une autre histoire car il faut passer par une classe liée à Adobe Acrobat. De toute façon, comme dit par Bruno, votre PDF a sûrement été enregistré quelque part.

Bonjour Thev,

Je suis d'accord que le SendKeys peut faire grincer des dents..

Je vais chercher à voir où mon outil comptable enregistre les fichiers pdf qu'il créé alors !

Une fois cet emplacement trouver, je devrai faire une macro qui boucle dans le vide tant que le fichier est ouvert pour checker le dossier par défaut de l'outil.

Et dès qu'un pdf vient dans ce dossier, je lance la procédure pour le déplacer puis, avec une API, fermer les instances d'Adobe.

Rechercher des sujets similaires à "detecter ouverture fenetre qui pas classeur"