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...
Bonjour @patricktoulon, @nullosse,
J'ai déjà une solution qui fonctionne en Post #257. Du moins, cela me convient, même si personne d'autre ne l'a testée.
par contre pour le focus tu a fait quoi depuis par ce que chez moi ca fonctionne pas (pas tout le temps en tout cas )
Je n'ai rien fait de plus, si ça ne fonctionne pas chez toi, je ne peux rien faire car il me faudrait ton environnement pour tester.

L'idée est que si tu as au moins une méthode qui fonctionne aussi (avec ou sans UserForm, avec ou sans xml), c'était de l'ajouter à la solution du sujet. Maintenant, il n'y a rien d'obligatoire. Si tu penses que c'est inutile et/ou que ça fait trop de boulot pour pas grand chose, ce n'est pas nécessaire. On en reste là d'un sujet qui a déjà 270 posts.
 
Dernière édition:
J'ai déjà une solution qui fonctionne en Post #257. Du moins, cela me convient, même si personne d'autre ne l'a testée.
Salut Dudu2,
dans ta solution du post #257 si je fais quelques écritures dans le document word ouvert par le bouton et que je clique sur fermer cela coince. Je ne vois pas la fenêtre d'avertissement comme quoi je sors sans avoir écrit.
Nullosse
 
Je ne vois pas la fenêtre d'avertissement comme quoi je sors sans avoir écrit.
Perso je le vois mais ça a tendance à disparaître si on va et vient entre le Word et Excel et puis ça part en live.
J'avais ajouté ce bouton Fermer pour tester la classe de monitoring, mais je me rends compte qu'il ne faut surtout pas provoquer la fermeture de la fenêtre du document par le sendmessage et laisser la fermeture naturelle par la croix système ou envoyer un Alt + F4.
Je vais revoir ça. Merci pour ta remarque.
 
Suite aux remarques de @nullosse et @patricktoulon, j'ai adapté le fichier du Post #257.

La fermeture de la fenêtre du document ne se fait plus par SendMessage mais par Alt + F4 ce qui permet de garder le prompt d'enregistrement présent quelque soit la fenêtre active.

Si l'activation / sélection d'un seul clic est conservée sur le document, sur Excel, le clic sera pour l'activation uniquement de manière à conserver la sélection précédente de @patricktoulon. Je vais essayer de gérer l'activation des fenêtres en fonction de la position curseur grâce au monitoring.

Le curseur en croix fine est traité chez moi (envoi d'ESCAPE à la 1ère activation d'Excel après l'affichage d'un document). S'il persiste dans un autre environnement, c'est à voir. Il faut peut-être modifier le code pour l'envoyer à chaque fois.
 
La fermeture de la fenêtre du document ne se fait plus par SendMessage mais par Alt + F4 ce qui permet de garder le prompt d'enregistrement présent quelque soit la fenêtre active.
J'ai toujours le même souci avec le bouton fermer mais maintenant cela ne bloque plus : je ne vois pas la boîte de dialogue qui doit me demander si je veux enregistrer le document. La boîte de dialogue est visible quand je ferme pas la croix. Ce qui me fait dire que la boîte de dialogue est peut- être là mais qu'elle est cachée ou alors qu'elle ne peut pas être affichée c'est que la fenêtre Word "clignote " :
FermetureWord.gif


excel 2021 64 bits
 
J'ai toujours le même souci avec le bouton fermer mais maintenant cela ne bloque plus
Je suis sous Excel 2021 64 bits aussi et j'ai le message d'enregistrement visible.
Toutefois la fermeture Alt + F4 induit d'autre soucis.
La morale de tout ça c'est que le bouton Fermer n'a pas actuellement de solution correcte pour fermer la fenêtre Word.
Ni Alt + F4 ni SendMessage WM_CLOSE ni SendMessage WM_SYSCOMMAND + SC_CLOSE.
Si je ne trouve pas, la seule façon de fermer Word sera via la croix système.
J'espère que tu vois le dialogue d'enregistrement dans ce cas !
 
et oui vous persister avec un demarrage de word au shell ou je ne sais quoi d'autre c'est pour ca que vous avez tout ces problèmes
1 vous êtes obligé de forcer la non réduction de la fenêtre sinon tout fou le camp
2 le problème avec le fichier alors que j'ai donner une solution qui visiblement fonctionne pour tout le monde a savoir couper ce bouton fichier
3 vous faites de la surveillance dans une boucle perpetuelle sauf que sur des pcs un peu faibles genre mon portable du boulot 17 pouce quand même hein bein ca me fait des freeze interminables


alors que :
en lancant word par un object word application vous avez la main mise dessus puis que l'object est rataché au shell l'ayant sollicité a savoir Excel
du coup
je n'ai pas de problème de resize (je ne le bloque pas
je n'ai pas de probleme de bouton puisque la barre de titre on ne la vois pas
avec un bouton dans excel ou le ruban je ferme le volet et je kill tout les classe opusapp,acrobat en tout genre,etc.. qui sont a l'interieur d'excel
le seul soucis actuel c'est le bouton fichier de excel que je masque avec un createwindowhex terminer tant qu'un volet ouvert pas des menu fichier d'excel
et je vous dit cela je travaille avec la xmlsource et un userform host
ce qui fait que la surveillance slider et tout votre toutim bein on oublie

alors le focus ah sacré focus
ben je vais vous dire perso si il me faut cliquer de fois pour avoir le focus en revenant sur le volet de droite ou de gauche ,bein finalement ça me dérange pas plus que ca
allez byebye la surveillance (on dégage tout ça) je préfère ca a un truc bancale qui tot ou tard me fait des sienne (testé)

la v2 que j'avais livré fonctionne parfaitement bien mis a part ce focus a la con et ce bouton fichier dans excel qui gicle le docking
la v3 sur la quelle je travail ressemble beaucoup a la v2 organisée différemment c'est beaucoup du code répétitif
car a but totoriel je sépare le type de document par module

petite demo du resize sans gestion du resize
sur la v2 et 3

La v2
demo3.gif


pour la v3 c'est pareil
j'ai encore quelque petit soucis que je ne comprends pas très bien avec le pdfviewerXchange de mes deux là
en tout cas pour ma part il est hors de question d'imposer une surveillance perpétuelle chronophage qui sera de toute façon inutilisable sur un pc pro vu la puissance requise pour mener a bien cette surveillance d'autant plus que les ratés sont plus fréquents que moi je vais à l'église

à un moment donné on fait des trucs super avec le VBA c'est incontestable mais il faut reconnaitre ses limites
mais si très souvent (et nous sommes coutumiers du fait) on les repousses sans cesse

franchement qu'est ce que c'est deux clicks
 
Si je ne trouve pas, la seule façon de fermer Word sera via la croix système.
J'espère que tu vois le dialogue d'enregistrement dans ce cas !
oui je vois le dialogue dans ce cas mais aussi si je remet comme parent de word le bureau juste avant la fermeture :

VB:
Sub CloseWindow()
   If IsWindow(Keep_WindowHandle) Then
        Call SetParent(Keep_WindowHandle, 0): DoEvents
        Call SendMessage(Keep_WindowHandle, WM_CLOSE, 0, 0)
        Do While IsWindow(Keep_WindowHandle)
            DoEvents
        Loop
    End If
End Sub
 
et oui vous persister avec un demarrage de word au shell ou je ne sais quoi d'autre c'est pour ca que vous avez tout ces problèmes
1 vous êtes obligé de forcer la non réduction de la fenêtre sinon tout fou le camp
2 le problème avec le fichier alors que j'ai donner une solution qui visiblement fonctionne pour tout le monde a savoir couper ce bouton fichier
3 vous faites de la surveillance dans une boucle perpetuelle sauf que sur des pcs un peu faibles genre mon portable du boulot 17 pouce quand même hein bein ca me fait des freeze interminables
en tout cas pour ma part il est hors de question d'imposer une surveillance perpétuelle chronophage qui sera de toute façon inutilisable sur un pc pro vu la puissance requise pour mener a bien cette surveillance d'autant plus que les ratés sont plus fréquents que moi je vais à l'église
Tu as essayé la dernière version du classeur à dudu2 car normalement il ne devrait plus y a avoir ce problème de performance.
 
1 vous êtes obligé de forcer la non réduction de la fenêtre sinon tout fou le camp
Quel est le problème ? Ça n'empêche pas d'activer n'importe quelle autre tâche.
2 le problème avec le fichier alors que j'ai donner une solution qui visiblement fonctionne pour tout le monde a savoir couper ce bouton fichier
C'est précisément ce qu'il ne faut pas faire car d'une part on n'a pas à bidouiller dans la fenêtre du document et inhiber des fonctions et d'autre part, précisément pour Word, la gestion de la fermeture de sa fenêtre ne fonctionne bien qui si elle est initiée par Word lui-même. Donc Fichier, oui, il le faut !
3 vous faites de la surveillance dans une boucle perpetuelle sauf que sur des pcs un peu faibles genre mon portable du boulot 17 pouce quand même hein bein ca me fait des freeze interminables
Je sais pas si t'as un Amstrad ou équivalent mais chez moi (Core i5) quand le monitoring est en cours, Excel est à 0% de CPU la plupart du temps et 1% de temps à autres.
je n'ai pas de problème de resize...
je n'ai pas de probleme de bouton...
Si tu n'as pas de problème envoie un fichier qu'on s'en inspire. Je ne sais pas traduire le mp4 ni le gif en VBA.

De toutes façons j'ai compris la spécificité de la fermeture de Word que je vais imposer via son application.
Fichier à suivre...
Et ensuite je gèrerai les activations par la position curseur, ce que permet de faire le monitoring à 0.3% de CPU
 
re
le bouton Notepad++ qui ouvre les xml avec edge ????????????????
shellexecute et shell "'explorer'" ouvrent le fichier avec leur application pas defaut
je repete
ouverture edge forcé (remplacer edge.exe par firefox.exe pour FF)
VB:
Dim FileURL$
            FileURL$ = "file:///" & Replace(fichier, "\", "/") ' Format de l'URL pour Edge
            Shell "cmd /c start """ & """" & " " & "edge.exe" & " --new-window --app=""" & FileURL$ & """", vbHide
en option pour edge
si on veut lancer edge positionné et dimensionné

Code:
 Shell "cmd /c start msedge --new-window --app-shell-host --window-size=" & largeur & "," & hauteur & " --window-position=" & 800 & "," & 200 & " """ & URL & """", vbHide

Ouverture avec Notepad(le Block notes)
VB:
notepadpath = CreateObject("Scripting.FileSystemObject").GetSpecialFolder(0).Drive '0 = WindowsFolder
    notepadpath = notepadpath & "\Windows\System32\Notepad.exe"
    Shell """" & notepadpath & """ """ & fichier & """", vbNormalFocus

ouverture avec Notepad++ forcé
il faut aller le chercher (adapter si l'application est en version portable)
VB:
Set WsH = CreateObject("WScript.Shell")
    On Error Resume Next
    notepadpluspath = WsH.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\notepad++.exe\")
    If notepadpluspath = "" Then
        ' sur Windows 64 bits, NPP peut être dans WOW6432Node
        notepadpluspath = WsH.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\App Paths\notepad++.exe\")
    End If
    On Error GoTo 0
    Set WsH = Nothing
    If notepadpluspath = "" Then MsgBox "Notepad++ introuvable dans le registre !", vbExclamation: Exit Sub
    ' Ouvre le fichier 
   Shell """" & notepadpluspath & """ """ & fichier & """", vbNormalFocus
 
- 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
932
Réponses
0
Affichages
2 K
Retour