IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Aller à une page spécifique d'un PDF déjà ouvert VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 21
    Par défaut Aller à une page spécifique d'un PDF déjà ouvert VBA
    Bonjour,
    Je souhaite ouvrir un fichier PDF à une page spécifique, le code qui suit fonctionne mais uniquement si le fichier n’est pas déjà ouvert :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Option Explicit
     
    Private Declare PtrSafe Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" _
    (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
     
    Sub OuvrirPdf()
     
      Dim strAcroPath As String, strFichier As String
      Dim intPage As Integer
     
      strAcroPath = String(128, 32)
      strFichier = C:\Users\antoi\Desktop\Nouveau dossier\Cassation 'A COMPLETER
      intPage = 10 'A COMPLETER
     
        If FindExecutable(strFichier, vbNullString, strAcroPath) <= 32 Then
            MsgBox "Adobe Acrobat Reader n'a pas été trouvé sur cet ordinateur", vbOKOnly + vbCritical, "Message d'erreur"
        Else
    		strAcroPath = Left$(strAcroPath, InStr(strAcroPath, Chr$(0)) - 1)
    		Shell strAcroPath & " /a page=" & intPage & " " & strFichier, vbNormalFocus
        End If
     
    End Sub
    Avez-vous une idée de code pour le même but mais sur un fichier déjà ouvert ?
    Car toutes les solutions que j’ai trouvé sur internet consiste à fermer le fichier déjà ouvert puis le réouvrir.

    Si ce n’est pas possible via VBA un script VBS externe me conviendrais.

    Merci d’avance pour vos réponses.

  2. #2
    Membre éprouvé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 91
    Par défaut
    Essaie ce code pour voir s'il te convient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    Option Explicit
     
    Private Declare Function GetDesktopWindow Lib "user32" () As Long
     
    Private Declare Function GetWindow Lib "user32" _
      (ByVal Hwnd As Long, _
       ByVal wCmd As Long) As Long
     
    Private Declare Function GetWindowText Lib "user32" _
       Alias "GetWindowTextA" _
      (ByVal Hwnd As Long, _
       ByVal lpString As String, _
       ByVal cch As Long) As Long
     
    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal Hwnd As Long, _
        ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
     
    Private Declare Function GetClassName Lib "user32" _
       Alias "GetClassNameA" _
      (ByVal Hwnd As Long, _
       ByVal lpClassName As String, _
       ByVal nMaxCount As Long) As Long
     
    Private Const GW_HWNDNEXT = 2
    Private Const GW_CHILD = 5
    Private Const WM_CLOSE = &H10
     
    Private Declare Function BringWindowToTop Lib "user32" _
        (ByVal Hwnd As Long) As Long
     
    Public Sub ChangeSlide(ByVal hWndStart As Long, _
                                  ByVal WindowText As String, _
                                  ByVal ClassName As String)
     
        Dim Hwnd As Long
        Dim sWindowText As String
        Dim sClassname As String
        Dim r As Long
        Dim PowerPointApp As PowerPoint.Application
        Dim myPresentation As PowerPoint.Presentation
        Dim Obj As PowerPoint.Shape
        Dim Graph As Workbook
     
          If hWndStart = 0 Then hWndStart = GetDesktopWindow()
     
     
       Hwnd = GetWindow(hWndStart, GW_CHILD)
     
       Do Until Hwnd = 0
     
          ChangeSlide Hwnd, WindowText, ClassName
     
          sWindowText = Space$(255)
          r = GetWindowText(Hwnd, sWindowText, 255)
          sWindowText = Left(sWindowText, r)
     
          sClassname = Space$(255)
          r = GetClassName(Hwnd, sClassname, 255)
          sClassname = Left(sClassname, r)
     
          If (sWindowText Like WindowText) And (sClassname Like ClassName) Then
            BringWindowToTop Hwnd
            Set PowerPointApp = CreateObject("Powerpoint.Application")
            PowerPointApp.Visible = msoTrue
     
            PowerPointApp.ActivePresentation.Slides(2).Select
            Exit Sub
          End If
     
          Hwnd = GetWindow(Hwnd, GW_HWNDNEXT)
     
       Loop
     
     
    End Sub
     
     
    Sub test2()
     
    ' en paramètres
    ' "*Forum*" : le nom du fichier que tu cherches
    ChangeSlide 0, "*Forum*", "*PPTFrameClass*"
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 21
    Par défaut
    Bonjour, merci d'avoir pris le temps de me répondre.

    Je vais tester ton code dans les prochains jours, je te tiens au courant.

  4. #4
    Membre chevronné
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 214
    Par défaut
    Bonjour Bob78280

    Comme j'avais cherché… sans trouvé j'ai voulu tester ton code
    mais il me semble qu'il interagi avec un ppt et non un pdf ? ca reste cependant très intéressant

  5. #5
    Membre éprouvé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 91
    Par défaut
    As-tu AcrobatWriter ou juste AcrobatReader?

  6. #6
    Membre chevronné
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 214
    Par défaut
    J'ai AcrobatReader, ma question était idiote ? ton code marche bien avec un pdf ?

Discussions similaires

  1. A partir d'une page web faire un pdf
    Par drogba72 dans le forum Langage
    Réponses: 5
    Dernier message: 22/05/2008, 15h11
  2. [FPDF] Supprimer une page d'un document PDF
    Par Chikh001 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 23/03/2008, 20h22
  3. [FPDF] d'une page php à un fichier PDF
    Par meryem85 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 25/06/2007, 11h02
  4. [FPDF] impression d'une page web en format pdf
    Par pierrot10 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 23/10/2006, 12h51
  5. Un lien qui ouvre sur une page spécifique d'un fichier
    Par chpog dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 24/08/2005, 14h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo