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
 
Solution
La solution avec le XML Source Pane + UserForm a l'air complexe à mettre au point, sensible aux différentes configurations et sans doute cela ne vaut pas le coup de continuer. Toutefois si @patricktoulon donnait un fichier opérationnel je l'ajouterais dans la solution bien évidemment.

Pour ce qui me concerne, je suis satisfait de la solution sans volet qui jusque là n'a intéressé personne (ce que je comprends vu les essais en cours sur le volet) que je réplique ici comme solution.
La largeur de la fenêtre du document naturellement ajustable ajuste aussi la fenêtre XLDESK7 et un clic unique permet de basculer entre Excel et le document.
Même si elle n'est sans doute pas parfaite ni à l'épreuve des balles, chez moi ça fonctionne...
Salut,
Dudu2 quand tu ouvres un document office , il y a moyen de récupérer l'objet de l'application Office qui s'est ouverte.
1 - Tu crées une nouvelle variable publique Keep_OfficeApp.
2 - Tu crées une nouvelle fonction
VB:
Function RecupOfficeApp(fileName) As Object
Dim officeApp As Object
On Error Resume Next
Set officeApp = GetObject(fileName).Application
Set RecupOfficeApp = officeApp
End Function
Si on ouvre pas une application office c'est pas grave car avec le On Error Resume Next on plante pas
tu appelles cette fonction ici :
Code:
Sub MonitorWindow(WindowHandle As LongPtr, FileFullName As String)
    Dim Classe_MonitorDocumentWindow As Classe_MonitorDocumentWindow
    Keep_WindowHandle = WindowHandle
    Keep_FileFullName = FileFullName
    Set Keep_OfficeApp = RecupOfficeApp(FileFullName)
    Set Classe_MonitorDocumentWindow = New Classe_MonitorDocumentWindow
End Sub
et alors pour le close tu peux faire ceci :
Code:
Function CloseWindow() As Boolean
    If IsWindow(Keep_WindowHandle) Then
        'Office application
        If IsOfficeApplication(Keep_FileFullName) Then
            Keep_OfficeApp.Quit
            Exit Function
        End If
et alors si tu as modifié ton document, la boîte de dialogue apparaîtra à coup sûr.

Nullosse
 
Merci @nullosse pour cette suggestion que je vais appliquer.

Le monitoring de la souris est presque opérationnel. Encore quelques détails sur la maximisation après réduction de la fenêtre avec laquelle j'ai un peu de mal.
Le monitoring de la souris permet maintenant de gérer la minimisation car pour minimiser il faut aller dans Excel et à ce moment là, même Office est Child d'Excel et donc toute la petite famille est minimisée.
 
Voilà la version Monitoring curseur.

J'ai galéré sur la restitution à l'identique après réduction à cause d'un petit bug caché dans un SetWindowPos(). Pffff !
La minimisation est de retour grâce au monitoring curseur. Ça a l'air de fonctionner correctement.

Je n'ai pas utilisé l'API WindowFromPoint() à cause de la grande variété de Handles retournés sans que je puisse facilement les relier soit à Excel soit au document. J'ai seulement comparé la position du curseur et le RECT de la Window du document.

@nullosse, j'ai implémenté ta solution pour Word. Il y a un inconvénient c'est que sur le dialogue d'enregistrement, si on choisit <Annluer>, le Application.Quit ferme quand même Word.
 

Pièces jointes

- 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
935
Réponses
0
Affichages
2 K
Retour