Autres essaie sur excel 64 bits

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
je fait le ménage et je suis tombé sur mes dossiers api et excel4macro ( utilisation des api WINDOWS sans déclaration)

j'aurais donc besoins de testeurs excel 64 bits voir si ça fonctionne sur version 64 bits

dans un userform mettez ceci et lancez le (si ca fonctionne vous devriez avoir les 3 boutons dans la caption et et le mouse resize )
VB:
Private Sub UserForm_Activate()
    trois_boutons
End Sub

Private Sub trois_boutons()
    Dim hwnd&
    hwnd = ExecuteExcel4Macro("CALL(""user32"",""GetActiveWindow"",""JCC"")")         'api GetActiveWindow
    ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJJ""," & hwnd & ", " & -16 & ", " & &H94CF0080 & ")")     'api SetWindowLongA
End Sub
j'attends vos retours
merci ;)
 
Solution
affi
Sans titre1.jpg
chage OK, photo ci-dessous :

Staple1600

XLDnaute Barbatruc
Bonjour le fil

[• Pour infos et seulement pour infos •]
(aucune réponse de ma part ne suivra)
BLACK comme Black hat...:rolleyes:
ExecuteExcel4Macro "CALL" est largement utilisé pour créer des malwares.
A mon avis, c'est une chose à préciser avant de demander à des XLDnautes (pas forcément au courant de la chose) de tester "finger in the noze" ce type de code.
[/Pour infos et seulement pour infos]
 

jmfmarques

XLDnaute Accro
Bonjour Modeste geedee
Il y a une différence essentielle entre ce que tu proposes (un "redimensionnement" proportionnel du userform et de son contenu) et le propos des 3 boutons dont il s'agit (qui dotent le userform des mêmes fonctionnalités de modification du "windowstate" que celles dont sont normalement dotées les fenêtres Windows). Ce n'est pas la même chose.

EDIT : pour être plus précis, le propos de cette discussion qu'a ouverte Patrick était celui de vérifier que l'utilisation de ExecuteExcel4Macro (en lieu et place de l'appel des deux fonctions concernées de l'Api de Windows) fonctionnait également sans encombre avec les versions Office 64 bits. Et nul autre.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
Bonjour le fil
surtout c'est que chez moi par exemple
si le but etait de redimensionner au height de l'application ben c'est raté
quand le userform a sa caption(barre de titre) il faut la prendre en compte dans le calcul et la soustraire
a soustraire= me.height-me.insideheight

ce qui a pour effet d'enlever
la caption + le 4pts de largeur de cadre + Ombre (W7 Aéro)
caption +1 pour les autres
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
pour etre plus exacte on ajoute la caption on soustrait les dim de bords de cadre *2 W7
VB:
Private Sub But_Zoom_Click()
Dim RatioX As Single, RatioY As Single
MaxX = Application.Width: MaxY = Application.Height
With UserForm1
'.Zoom = 100 * Application.Average(1 - (InitX / MaxX), 1 - (InitY / MaxY))
.Top = 20
.Left = 15
RatioX = (.Width / MaxX)
RatioY = (.Height / MaxY)
.Width = 0.95 * InitX * 1 / Application.Max(RatioY, RatioX) '(MaxX / InitX)
.Height = 0.95 * InitY * 1 / Application.Max(RatioY, RatioX) + (Me.Height - Me.InsideHeight) - ((Me.Width - Me.InsideWidth) * 2) '(MaxY / InitY)
.Zoom = 0.95 * (100 / Application.Max(RatioY, RatioX))
But_Zoom.Caption = IIf(.Zoom <> 100, 2, 1)
End With
End Sub
on a une dimension d'en haut à la barre des tache précisément

cela dit je salut l'idée du ratio qui peut être un rectangle vertical avec les tablettes windows
ces calcul là ne sont pas nécessaires si la barre de titre a été supprimer auparavant
 

Modeste geedee

XLDnaute Barbatruc
en fait c'est la réponse que j'ai émise concernant la question :

Cette solution je l'utilise personnellement depuis plusieurs années pour mes besoins personnels.
(application perso de gestion locative embarquée sur clé USB)

L'utilisation de la propriété Zoom du userform permet d'adapter celui-ci maximum disponible sur l'écran en gardant la proportionnalité de tout les composants inclus : objets, polices.

je posais donc la question de transposition de ma méthode : bouton dans le userform/ bouton dans la barre de titre.
  1. JmfMarqués a bien résumé le constat
  2. je n'ai pas répondu a la question concernant la version Office 64 bits.
  3. c'est ta proposition que je vais adopter :
VB:
.Height = 0.95 * InitY * 1 / Application.Max(RatioY, RatioX) + (Me.Height - Me.InsideHeight) - ((Me.Width - Me.InsideWidth) * 2) '(MaxY / InitY)

;) reste plus qu'a inclure le fait que la barre de taches windows est masquable ou non:cool:
 

patricktoulon

XLDnaute Barbatruc
reste plus qu'a inclure le fait que la barre de taches windows est masquable ou non

je ne suis pas sur mais si la taskbar est masquée l'application se redimensionne automatiquement
donc comme tu prends le height ca devrait pas poser de problème
je vais vérifier ce point ;)

L'utilisation de la propriété Zoom du userform permet d'adapter celui-ci maximum disponible sur l'écran en gardant la proportionnalité de tout les composants inclus : objets, polices.
non non non !!
c'est basé sur le height de l'application et donc si elle n'est pas maximisée tu a ton userform de la taille de l'application et non en plein écran ( j'ai testé avec ton fichier)

je vais vérifier pour la taskbar j'ai déjà des classeurs exemple dans mes archives ;)
 

jmfmarques

XLDnaute Accro
Re-bonjour
Je n'accepte généralement pas de traiter sur un forum dédié à l'utilisation d'un tableur des questions "collatérales"
Je vais donc me contenter ici de rappeler certains aspects à ceux que cela pourrait intéresser. et à eux de s'en servir sans moi. ====>>
-l'appli occupe au maximum (si on le lui demande) la place laissée disponible.
-cette place est calculée différemment selon que la barre des tâches est configurée escamotable ou non (et ce : quelle que soit la largeur hauteur octroyée par configuration à la barre des tâches)
-l'aire de cette place est toujours la même. Il en va bien évidemment différemment en ce qui concerne ses positions et dimensions, selon que la barre des tâches est affichable à gauche, en bas, en haut ou à droite.

-Lorsque, pour des raisons d'affichage, l'on veut prendre en compte cet aspect dans le développement ( par exemple depuis VB6), on détermine d'abord le "WorkArea" (la partie de l'écran "dispobible")

-VBA/Excel vous facilite ce travail en mettant à votre disposition les propriétés de dimensionnement et positionnement des objets Application et ActiveWindow (.usablewidth, usableheight, etc ...)

Amusez-vous maintenant.
 

patricktoulon

XLDnaute Barbatruc
re
oulah!! jmfmarques
depuis quand les (usable.. de l'app excel) donneraient les dim de l’écran :rolleyes:
la seule façon d'avoir les dims de l’écran (sans api ou registre) c'est le width et height de l'application maximisée moyennant une toute petite soustraction de cadre du au positionnement <0 en top et left et donc a reporter aussi sur le width et height
 

jmfmarques

XLDnaute Accro
depuis quand les (usable.. de l'app excel) donneraient les dim de l’écran
ils n'en donnent pas les dimensions. Ils apportent la connaissance d'une différence essentielle (qui fait que ce "oulah" met en exergue une déficience ;) )
Mais (relire ce que j'en ai dit d'emblée), je vous laisse maintenant vous dépatouiller comme vous l'entendez avec ce que je n'accepte pas de "mêler" avec l'utilisation normale d'un tableur.
Rien n'interdisant cependant à personne de jouer à tous jeux, considérez donc qu'un jeu étant un jeu, on mérite seul d'y gagner ou d'y perdre.
 

Discussions similaires

Statistiques des forums

Discussions
312 217
Messages
2 086 352
Membres
103 195
dernier inscrit
martel.jg