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...
en fait apres test il nous faut 2 userform et seulement leur events mose move
un ou je vais appliquer une transparence total sur une partie et l'autre une translucidité zero (effet pareil que transparent) mais on garde l'event même sur la partie que l'on ne vois plus
afficher ensemble ca donne ça
demo4.gif

et même dans votre cas on pourrait seulement garder le 2 qui est translucide zero et le déplacer de droite a gauche ou le faire apparaitre seulement quand excel7 perd le focus tout simplement
 
ben c'est ça en fait qui se produit : ça pique pas les yeux mais ça les dérange.
Par contre il y a un autre truc que j'ai remarqué et je sais pas si c'est normal : Quand tu prends le document word par sa barre de titre, tu peux ballader le document partout sur l'écran.
alors dans ce cas la il y a une erreur de cible pour le dock word n'est pas docké dans XLDESK
 
Quand tu prends le document word par sa barre de titre, tu peux ballader le document partout sur l'écran.
C'est normal car lorque Word est la fenêtre active elle est détachée de la parentalité Excel pour être indépendante, c'est à dire rattachée à la DeskTop Window. Pourquoi ? Parce qu'il est impossible d'avoir Word qui fonctionne correctement (Fichier et autres) s'il est Child d'Excel et à mon avis de quoi que ce soit d'autre.

Alors qu'on puisse balader la fenêtre, oui, c'est possible et l'empêcher, c'est à dire la remettre en place, c'est aussi possible. Je verrai.
Pour l'instant j'ai un souci avec Word en resize gauche que je ne m'explique pas en sleep 5 et pas en sleep 50, c'est un exercice difficile.
 
Dernière édition:
@Dudu2 , @nullosse alors j'ai découvert un truc intéressant(qui pourrait vous servir)
comme vous le savez je mettait une petite fenêtre de classe static sur les bouton fichier pour (Excel et Word)
ok ca m'empêchait de déployer le backstage que ce soit pour l'un ou pour l'autre
et je viens de découvrir que si la fenêtre et non pas de classe static mais de classe "Button" et qu'en plus je le met en transparent
et bien pour excel ca change pas grand chose on peut pas déployer le backstage c'est tout

mais alors pour word une chose extraordinaire se produit
les classes button ne peuvent pas perdre leur consistance par contre si la fenêtre est placé dans le bon child(une des child de word) et bien figurez vous que le bouton fichier fonctionne , deploie le backstage en parent 0( donc desktop) et quand je le referme word est toujours docké
du coup ca donne l'effet que rien n'est masquer et que finalement tout marche normalement
avec mon petit event de substitution dans le userform lui même je peut aussi fermer word par la croix sans problème (le volet est juste un peu plus long a fermer
ben du coup a part le switch focus je n'ai plus de problème je peux donc laisser la fenêtre word entière

ça alors il fallait y penser à ça une fenêtre ne peut pas être destroy ou fermée par sendmessage si elle contient une fenêtre de class "Button"
comme je ferme maintenant soit par la croix soit par le bouton du rubant qui fait simplement un ".Quit" sur l'object word application je n'ai plus de soucis avec ça et pourtant je reste dans le volet xmlsource qui a la moindre fenêtre qui s'ouvre dans excel , il se se barre
punaise de punaise il fallait y penser a celle là

je vais lancer des duel avec toute les I A que j'utilise pour qu'il me trouvent l'explicationpar ce que là c'est fort quand même
 
Dernière édition:
voici l'explication de claude

voici l'explication du chat peteur

la réponse de copilot

je vous donne pas les 3 autres


bon en gros il ont tous dit que la constitution de la fenêtre word faisait que le click était quand même intercepté mais que le bouton fichier fichier recevais quand même le message window peut être même dégradé
ce qui fait que le backstage s'ouvre mais word n'a pas les informations complète pour purger et réinitialiser ses fenêtre du coup il ne se fermait pas et pour excel c'est la même punition
selon les 6 IA que j'ai consulté c'est une forme de hack sur des windows que je viens de découvrir par hazard en plus

pour citer l'un d'entre eux
c'est une plaque de verre devant un bouton tactile
il capte la chaleur mais plus faiblement ou partiellement

moi très content de la découverte
 
Dernière édition:
re
C'est normal car lorque Word est la fenêtre active elle est détachée de la parentalité Excel pour être indépendante, c'est à dire rattachée à la DeskTop Window. Pourquoi ? Parce qu'il est impossible d'avoir Word qui fonctionne correctement (Fichier et autres) s'il est Child d'Excel et à mon avis de quoi que ce soit d'autre.
entre nous je suis pas sur de ça je testerais demain sur un fichier vierge
 
Bonjour,
Une version améliorée qui fonctionne chez moi.
Pas simple à gérer Word et ses changements de Parent et surtout les basculements Document -> Excel qui selon le cas font clignoter Excel sur la barre des tâches au lieu de l'activer (très énervant !). Je ne suis pas intervenu dans le déplacement de la fenêtre Word, si l'idée en prend à l'utilisateur, le prochain survol d'Excel la repositionne dans le cadre.

Le fichier est en Post #657 (solution).

Edit:
Et pour ceux qui n'aimeraient pas le basculement automatique Document <-> Excel par survol du curseur et qui préfèrent faire des clics et des clacs, le fichier joint couvre cette option.
 

Pièces jointes

Dernière édition:
Et pour ceux qui n'aimeraient pas le basculement automatique Document <-> Excel par survol du curseur et qui préfèrent faire des clics et des clacs, le fichier joint couvre cette option.
Salut Dudu2,
moi y a pas photo : je préfère cette version qui n'entraîne pas d'effets visuels indésirables. Et pour les clics et les clacs , c'est le fonctionnement naturel de windows. Pour avoir le focus dans une fenêtre il faut cliquer dedans (manuellement et en plus on choisit où l'on clique dans la fenêtre).
Nullosse
 
Concernant l'effet visuel, il n'y a pas de différence. C'est le même quand on passe de Word à Excel puisque le principe est identique, on change le Parent de Word et dans ce sens ça provoque une légère saute d'affichage.
ben chez moi c'est carrément comme un flash.
En ce qui concerne la prise de focus automatique , L'I.A m'a donné une indication :
Depuis Windows 10 et 11, Microsoft limite un peu le "vol de focus" pour éviter les comportements intrusifs.
👉 Si SetForegroundWindow ne marche pas toujours, tu peux contourner en :


  • simulant une touche Alt (avec keybd_event) avant d’appeler SetForegroundWindow,
  • ou en envoyant une touche à la fenêtre cible (SendMessage, PostMessage), selon le besoin.
 
C'est vrai que le SetForegroundWindow() a tendance à ne pas fonctionner et faisant clignoter Excel sur la barre des tâches pour inviter à une action utilisateur. Je vais essayer ta suggestion avec Alt.

En attendant, j'ai réussi (chez moi en tous cas) à limiter fortement voire à supprimer le flash de changement de Parent de Word dans le sens Word -> Excel en rendant temporairement invisible la fenêtre (dans les 2 versions).

Si tu veux vérifier si ça a une quelconque efficacité chez toi, reprends le fichier du Post #307.
 
Bonjour tout les deux
chez moi le #307
je ne sais pas ou il est passé le monitoring mais je n'ai plus le focus automatique
je suis obligé de cliquer deux fois pour que la cellule sélectée soit prise en compte quand je reviens dans excel
donc avant ça clignotait et maintenant ça fait plus rien

testé sur 2013 32 et 2016 64
résultat pareil pour les deux
mais entre nous c'est pas plus mal si il n'y a rien qui tourne derrière ca me convient
bien que pour le slide forcement la methode que tu emploie l'oblige

j'ai quand même un peu de mal à comprendre quand tu dis que le volet xml c'est compliqué
tu fait un setparent sur le xldesk et moi sur le bosa parent(2)
la ou ça se complique c'est les bouton croix et fichier qui giclait le volet xml
j'ai donné la solution et les explications du phénomène de 3 IA qui se raccordent dans l'ensemble

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.
 
bonjour @Dudu2 et @nullosse

je viens de mettre point une méthode qui etait neccessaire surtout pour vous qui dockez dans la xldesk

alors j'avais dit prenez un userform dockez le et doccker l'app en 0,0 dans le userform
en faisant ce la vous bénéficiez de la classe du userform ou tout simplement ses events resize ,close ,etc... qui peuvent servir pour monitorer
c'est d'ailleurs comme cela que m'en sert

mais vient s'ajouter un problème les message window ou plus précieusement le phénomène d'event propagation(pour ceux qui connaissent)
en fait c'est le phénomène des event au niveau window qui fait que une child ou la fenêtre parent d'une autre peux recevoir le message
un click ,un move ,un resize ,un refresh et j'en passe et des meilleures et il y en a un paquet

on le voit dans nos userforms quand on lui rajoute le WS_THICKFRAME (autrement dit le resize)
on s' aperçois que tout les childs (toute sortes confondues) subissent a tours de bras des refreshs ,un vrai sapin de noel le truc

et bien j'ai la solution et je l'ai testé
il suffit d'ajouter une fenêtre crée dynamiquement (createwindowhex) de classe static
(arrangée comme vous voulez selon le besoin (pas de caption, pas de bouton ,etc...)
et l'application qui est normalement dockée dans le userform et bien on va la docké dans la static
c'est d'ailleurs comme ça que fait excel et word avec les nuipane invisible etc...

le résultat est impressionnant ci dessous un userform docké dans XLDESK au quel j'ai ajouter le WS_THICKFRAME donc elastique
et vous allez voir comment un bouton dans la satic ne moufte pas un pet alors qu'un simple commandebutton se trasforme en clignotant

démonstration
je sais pas si vous voyez ce que je vois mais le bouton "cliquez moi" qui est dans la petite static grise dans le userform ne mouffte pas un pet
le commandbutton lui c'est noel en octobre

et encore en fait il clignote plus vite que dans la capture mais ayant réduis le nombre de frame pour la capture on vois mois rapide

demo4.gif


donc si ca vous intéresse je vous ferez un petit exemple de base dockingInXldesk avec userform sinon tant pis je garde pour moi
mais auserais vous rappeler et surtout à toi dudu qu'avec un usf le monitoring est géré par les events et pas besoins de tourner virer

ce sera ma version 3

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