XL 2016 VBA - Réduire la largeur de la grille Excel

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Dudu2

XLDnaute Barbatruc
Bonjour,

DataSnipper est un outil commercial ajoutant à Excel des fonctionnalités diverses.
Parmi ces fonctionnalités, la possibilité de visualiser des documents PDF directement dans Excel avec cette particularité (voir image ci-dessous) que la fenêtre Excel est divisée en 2 verticalement. La partie gauche contient la grille Excel, la partie droite contient probablement un Control ActiveX visualisateur PDF, je ne sais pas lequel ? Acrobat ? PDF-XChange Viewer ? Autre ?

La question est: comment est-il possible dans une fenêtre Excel de réduire la largeur de la grille Excel et ses ascenseurs comme le fait ce logiciel ?

1758617247578.png
 
que te propose chat gpt . et de quel handle tu parles?
le hwnd = findwindow dans ouvrirEdge mais je pense que le problème n'existe qu'avec Excel 64 bits
le chatGpt m'a proposé une solution à base de Uiautomation en plus il m'a mis les conditions du classname + le nom de la fenêtre (le nom du fichier pdf) parce que si il y a un navigateur de type chromium (chrome, edge, brave) qui tourne il risque de ne pas trouver la bonne fenêtre
 
bon ben spy me dis tout bon hein
demo3.gif


oui aussi uiautomationclient ,mais attention c'est fragile d'une config à l'autre
et l'inconvenient majeure c'est qu'il n'y a pas de late binding avec UIauto
çà veut dire que tu demande aux utilisateurs d'activer une ref
et selon la version ben c'est problématique

mais j'avoue que j'ai du mal à comprendre la fonction ouvrir_pdf elle est de toi a la base et ça fonctionnait non?
 
bon finalement en renforçant le findwindow avec le nom du PDF cela fonctionne (il doit y avoir d'autres fenêtres Chrome_WidgetWin_1)
VB:
        Function OuvrirPDF_Edge()
            Dim hwnd
            'fonction de @nullosse
            Dim cheminPDF As String
            OuvrirPDF_Edge = 0
            cheminPDF = Application.GetOpenFilename("pdf Files (*.pdf), *.pdf", 1, "ouvrir un fichier")
            If cheminPDF = "Faux" Then Exit Function
            Dim pdfURL$, t#
            pdfURL = "file:///" & Replace(cheminPDF, "\", "/") ' Format de l'URL pour Edge
            Shell "cmd /c start msedge --app=""" & pdfURL & """", vbHide ' Ouvre Edge avec le PDF en mode app (fenêtre propre)
            t = Timer
            Dim partsPath, nomfenetre
            partsPath = Split(cheminPDF, "\")
            nomfenetre = partsPath(UBound(partsPath))
            Do
                hwnd = FindWindow("Chrome_WidgetWin_1", nomfenetre)
               ' Debug.Print hwnd
                DoEvents
                If Timer - t > 5 Then Exit Do ' Max 5 secondes
            Loop While hwnd = 0
            If hwnd = 0 Then
                MsgBox "Fenêtre Edge non trouvée.", vbExclamation
                Exit Function
            Else
                OuvrirPDF_Edge = hwnd
            End If
        End Function
 
re
dans ce cas la il fallait nous le demander @Dudu2 et moi avons une fonction FindWindowByPartTitle
@Dudu2 diffère un peu mais le principe est le même
kado

une partie du com original du fichier ouvert et le suffixe comme dans edge ou FF ou même bloknote
VB:
'Option Explicit
'patricktoulon
'déclaration VBA7 en 32/64 bits
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As LongPtr, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare PtrSafe Function GetWindow Lib "user32" (ByVal hwnd As LongPtr, ByVal wCmd As Long) As Long
Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As LongPtr, ByVal nCmdShow As Long) As Long

Sub Maximizemafenetretaratata()
    Dim hwnd As Long
    hwnd = FindWindoWByPartTitle("taratata", "Bloc-notes") ' chaine , nom de l'app qui l'execute (les 2 optionnels)
    If hwnd <> 0 Then
        ShowWindow hwnd, 3 ' 3 correspond à SW_MAXIMIZE
    Else
        MsgBox "Aucune fenetre contenant ""taratata"" n'est ouverte affichée ou reduites!"
    End If
End Sub

Function FindWindoWByPartTitle(Optional partTittle As String = "", Optional PartApp As String = "")
    Dim sStr As String, hwnd As LongPtr
    sStr = Space$(150)
   hwnd = FindWindow(vbNullString, vbNullString)
      Do While hwnd <> 0
        GetWindowText hwnd, sStr, 300
           If sStr Like "*" & partTittle & "*" & PartApp & "*" Then 
            FindWindoWByPartTitle = hwnd
              Exit Do
        End If
        hwnd = GetWindow(hwnd, 2)
    Loop
End Function
allez je tente l'intégration juste pour le fun
 
Dernière édition:
c'est même pas la peine avec edge en mode app
voici le texte de la fenêtre
grosso modo le nom du fichier est complet dans le titre de la fenêtre
donc
fonction PrintFormX1.pdf Excel lications - excel snake_Copie.xlsm [exécution en cours] - [Module1 (Code)]
1758737505896.png

donc
VB:
#If VBA7 Then
    Function OuvrirPDF_Edge() As LongPtr
        Dim hwnd As LongPtr
    #Else
        Function OuvrirPDF_Edge() As Long
            Dim hwnd As Long '
        #End If
        'fonction de @nullosse
        Dim cheminPDF As String
        OuvrirPDF_Edge = 0
        cheminPDF = Application.GetOpenFilename("pdf Files (*.pdf), *.pdf", 1, "ouvrir un fichier")
        If cheminPDF = "Faux" Then Exit Function
        Dim pdfURL$, t#
        pdfURL = "file:///" & Replace(cheminPDF, "\", "/") ' Format de l'URL pour Edge
        Shell "cmd /c start msedge --app=""" & pdfURL & """", vbHide ' Ouvre Edge avec le PDF en mode app (fenêtre propre)
        t = Timer
        Do
            hwnd = FindWindow("Chrome_WidgetWin_1", Mid(cheminPDF, InStrRev(cheminPDF, "\") + 1))
            DoEvents
            ' Max 5 secondes
            If Timer - t > 5 Then Exit Do
        Loop While hwnd = 0
        If hwnd = 0 Then
            MsgBox "Fenêtre Edge non trouvée.", vbExclamation
            Exit Function
        Else
            OuvrirPDF_Edge = hwnd
        End If
    End Function
 
Voilà, je m'absente 3 ou 4 heures et le fil se déroule à en perdre les pédales.
qu'entends-tu par inhibé ?
En fait au départ j'ai utilisé Edge Blocker, mais je vois (avec everything) que le seul endroit où j'ai msedge.exe c'est dans la corbeille.
D'ailleurs Edge ne fait plus partie de la liste des Paramètres/ Applications de mon PC.
Donc j'ai dû le dézinguer par un moyen quelconque que je ne me rappelle pas.

@patricktoulon, merci pour le xml. Mais comme je suis parfaitement ignorant des arcanes du ruban, je ne sais pas quoi en faire.
avec CreatorRibbonX tu n'a pas besoins de savoir coder je le fait pour toi dans mon app
Je sais que c'est un outil remarquable. Mais les vidéos, c'est super long à visionner, il y en a plein.
 
Dernière édition:
alors je reviens avec une surprise qui va faire plaisir a @nullosse
la question qui tue
oui mais comment revenir en full pane quand on ferme la fenêtre edge en app
@nullosse a proposé un shreduler(application.ontime) en boucle
birk birk birk
vous l'avez compris avec les boutons dans le ruban
mon but est d'interfacer ce principe de splitview
et finalement si on réfléchi 0.10 s (et si je mettais simplement un bouton qui me ferme ce volet supplémentaire
comme je le fait d'ailleurs avec( grille 50% ou 100% )
et bien je fait mieux que ça le bouton est là uniquement si il y a eu insertion du volet
allez c'est parti démo
Pour afficher ce contenu, nous aurons besoin de votre consentement pour définir des cookies tiers.
Pour plus d'informations, consultez notre page sur les cookies.
Alors qu'est ce que vous dites de ça
 
c'est par ce que soit tu n'a pas le plugin de lecture installé par une application tierce pdf du genre adobe reader ou autre soit le plugins est mal enregistré dans le registre alors tu a la fenêtre de téléchargement et donc ton navigate ou navigate2 se transform en blob web de téléchargement
c'est tout
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
917
Réponses
0
Affichages
2 K
Retour