Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 ?

 
ShellExecuteEx peut retourner le Id du processus qui vient d’être créé à condition que l'application lance sa propre instance mais ce qui pose problème c'est que certains applications n’utilisent qu'une seule instance pour ouvrir tous les fichiers et l'instance nouvellement lancée sera vite virée, la majorité de ces applications autorisent le lancement d'une nouvelle instance en ajoutant un paramètre au nom du fichier à ouvrir , mais c'est propre à chaque application.

WMI service peut également renvoyé la liste des processus actifs et dans leurs ligne de commande on peut récupérer le nom du fichier qui a lancé l'application

Code:
Dim strComputer, objWMIService, colItems, obj
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process")
For Each obj In colItems
   Debug.Print obj.Name, obj.processid, obj.CommandLine
Next
 
et pourquoi tu en ouvre plusieur????????????????????????
1 volet c'est déjà bien non?
chez moi monbouton fermer ferme toute les fen^tres qui sont étrangères a excel en tant normal
je fait simplment un sendmessage sur des classe
mis pour ca justement il faut pas prendre le raccou
je prend la liste a jour des composantes d'escel et si une des classe y est presente bye bye !

VB:
'=========================================================================================
Sub Fermeture_du_volet_Ouvert()
    Dim t, i&
    ActiveCell.Select
    
    Dim hwnd As LongPtr
    t = AllPartExcelWindowList 'liste des composantes prrésente dans excel
    For i = 2 To UBound(t)
        Select Case True
            Case CStr(t(i, 2)) = "Notepad": hwnd = CLngPtr(t(i, 1)): Exit For
            Case CStr(t(i, 2)) Like "Chrome*": hwnd = CLngPtr(t(i, 1)): Exit For
            Case CStr(t(i, 2)) = "ThunderDFrame": hwnd = CLngPtr(t(i, 1)): Exit For
            Case CStr(t(i, 2)) = "AcrobatSDIWindow": hwnd = CLngPtr(t(i, 1)): Exit For
            Case CStr(t(i, 2)) Like "Acrobat*": hwnd = CLngPtr(t(i, 1)): Exit For
            Case CStr(t(i, 2)) = "Notepad++": hwnd = CLngPtr(t(i, 1)): Exit For
            Case CStr(t(i, 2)) = "DSUI:PDFXCViewer": hwnd = CLngPtr(t(i, 1)): Exit For
             'on peut en ajouter autant qu'on veux    
        End Select
        
    Next
    If hwnd <> 0 Then Call SendMessage(hwnd, &H10, 0, 0)  '&H10=WM_Close
    Vx = False
    DoEvents
    splitViewRestaure
End Sub
 
Pour PDF XChange Viewer, le nom du fichier dans le GetWindowText() c'est aléaoire si je ferme par la croix système.
En principe, la 1ère fois, la 2ème fois peut-être et ensuite je ne l'ai plus et puis ça peut revenir.
Si je ferme par le bouton (Alt + F4), j'ai bien le nom du fichier qui vient dans le GetWindowText().

De toutes façons, j'ai prévu un "AlternateName" en plus du nom du fichier.
De sorte que pour PDF je passe le nom du fichier et "PDF-XChange Viewer" en AlternateName et je teste les 2.
Comme ça si c'est Acrobat c'est reconnu par le nom du fichier et si c'est PDF XChange Viewer quoiqu'il arrive il trouvera l'un ou l'autre.
 
et pourquoi tu en ouvre plusieur????????????????????????
Ce n'est pas moi qui les ouvre, c'est Word car j'avais fermé les précédents avec SendMessage WM_DESTROY et je suppose qu'il veut les restorer.
De toutes façons j'ai remplacé le SendMessage WM_DESTROY par un SendKeys Alt + F4, pas moins violent mais a priori mieux toléré.
Je n'ai aucun résultat en fermant les fenêtres par un WM_SYSCOMMAND + SC_CLOSE.
Je vais essayer ton WM_CLOSE.
 

Pièces jointes

re
@Dudu2
et si tu a 36 pdf_xchange viewer d'ouverts dont 1 dans la EXEL7(ou pas) tu fais quoi ?
c'est pas très logique tout ça
a mon avis ton destroy ne testroyasse pas tout a mon avis il y a des procc qui trainent orphelins de leur windows
je pige pas vraiment pourquoi tu te complique la vie
un sendmessage close et c'est tout
ca envoie le message de la croix de fermeture donc fenêtre fermée = instance du procc fermée
c'est pas compliqué
et comme je ne prends pas de raccourci à la dudu
j'ai toujours la fonction liste de composant a dispo
bouton fermer
--> liste de composante excel(qui comprend le volet que l'on vient d'y mettre)
---->boucle dans ma sub fermeture
------>si je trouve une des cases vrai j'ai tout à dispo
--------> je converti le numero du handle en clngPtr
-----------> sendmessage le handle trouvé ,WM_CLOSE
et je n'ai pas de soucis avec des eventuels restant caché ou orphelin ou quoi qu'est ce
 
Ah........................ je comprend mieux
Ce n'est pas moi qui les ouvre, c'est Word car j'avais fermé les précédents avec SendMessage WM_DESTROY et je suppose qu'il veut les restorer.
dans ce cas la tu dois faire quelque chose qui modif le doc et c'est pour ca qui te les restaure ,par ce que tu n'a pas enregistrer les modif c'est comme outlook il fait pareil
Attention a d'eventuels sendkeys ou autre
ou c'est tout simplement un effet de bord destroy
change pour WM_CLOSE qui est = à (&H10)

ou change de méthode du genre
set wordouille=createobject("Word.application")
wordouille..document.open
etc.... pour ouvrir ton word
comme ca tu a la main mise sur ton object application word 😉
 
c'etait donc bien un effet de bord ou destroy laisse des orphelin
ok a demain
juste pour te montrer l'intention maintenant que j'ai tout testé
edge
ff
acrobat reader de la version 9 à 25 (DC)
PDF_XChangeViewer
notepad
notepad++
word

regarde l'intention
 
- 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
920
Réponses
0
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…