Zoom automatique en fonction de la largeur de la fenêtre

Bonjour à tous,

Je m'adresse à vous pour m'éclaircir s’il existe une macro pour ajuster automatiquement le zoom en fonction de la largeur de la fenêtre de l'application Excel (lorsque la largeur de la fenêtre Excel change, le zoom s'ajuste automatiquement pour garder les colonnes d'un tableau (la sélection {B4:G25} par exemple) visible. Merci d'avance.

Bonsoir

essayez ceci :

Private Sub Worksheet_Activate()
 Range("A1:U1").Select
     ActiveWindow.Zoom = True
 End Sub

Vous aurez compris que la zone à zoomer est A1:U1, en fait on sélectionne les colonnes "visibles"

Ceci afin d'adapter le zoom à la largeur de l'écran...

@ bientôt

LouReeD

Bonjour,

je vous remercie LouReed pour votre réponse, mais ça ne marche pas! peut être je n'ai pas bien expliquer l'idée alors je réexplique:

lorsque l'utilisateur ouvre le document il s'ouvre avec zoom 100% par défaut, le tableau est entièrement visible, mais quand l'utilisateur minimise la fenêtre ou change sa largeur avec la sourie les colonnes à gauche A B C D E restent visibles alors que les autres à droite disparaissent et le zoom reste à 100%.

Ce que je veux: quand l'utilisateur minimise la fenêtre ou change sa largeur avec la sourie toutes les colonnes du tableau doivent rester visibles, ce qui implique un changement automatique de zoom

Bonjour,

avec le code ci dessous :

Private Sub Workbook_WindowResize(ByVal Wn As Window)
    Wn.ActiveSheet.Range("A1:U1").Select
    ActiveWindow.Zoom = True
End Sub

VBA détecte le changement de taille de la fenêtre du classeur actif se trouvant dans la fenêtre de l'application Excel, et effectue le zoom adéquate.

Par contre le détection du changement de taille de l'application Excel qui contient la fenêtre du classeur actif, je ne sais pas faire.

@ bientôt

LouReeD

Bonjour,

La détection du changement de taille de l'application Excel qui contient la fenêtre du classeur actif, c'est ce qu'il me faut !! Merci quand même de votre aide ))

Bonjour,

une autre piste :

https://forum.excel-pratique.com/excel/macro-pour-desactiver-le-redimenssionement-fenetre-t71958.html

Comme cela plus de soucis

Enfin faut voir ce que cela peut donner.

Bonnes fêtes de fin d'année !

@ bientôt

LouReeD

Bonjour LouReed (^_^)

J'apprécie votre aide, et je vous remercie infiniment mais ça ne peut pas m’aider

J’ai réalisé une feuille de calcul que l’utilisateur peut agrandir, réduire et redimensionner de temps en temps pour obtenir certaines valeurs sans avoir à réduire la fenêtre principal de son travail (sorte de petite calculette), donc le contenu de cette feuille doit rester visible par rapport à ses dimensions et en fonction des besoins de l’utilisateur…))

Bonjour,

Je ne suis pas sûr qu'on puisse détecter le changement de taille de l'application.

Pourquoi tu ne la fais pas dans un userform modal ta calculette ?

eric

Hello tout le Monde,

Et une procédure comme ça ?

1/ A l'ouverture du fichier une macro tourne en boucle pour tester l'état de l'affichage, si ne répond pas à ce qu'il faut, met à jour le zoom pour voir la sélection.

2/ Si réduction de la sous fenêtre de l'application Excel, l'événement workbook resize, rezoome sur la sélection et met à jour la variable de zoom utiliser dans le point 1.

Inconvénient utilise chez moi 20% de CPU pour seulement tester en permanence l'état de l'affichage.

Fichier test en PJ, il est aussi possible de tester la grandeur de l'écran (le physique) et la grandeur de la fenêtre excel pour moduler le zoom (mais le zoom selection de loureed colle à la problématique, je l'ai adapté tel quel à mon idée de départ, donc le code du fichier test est optimisable )

edit: nouvelle version plus stable.

Bonjour

et bravo !

Seulement la feuille 2 et 3 sont à 400%

Et j'ai vu que cela ne gérer pas le redimensionnement par la souris avec les poignées de fenêtre...

Mais ceci dit bravo à vous !

@ bientôt

LouReeD

Hello Loureed,

Merci merci .

Le problème de ce genre de boulot, c'est que ça demande de connaitre avec précisions les conditions d'utilisation, la maquette de rendu du fichier final, afin de bien prendre en compte tout ce qui peut changer l'état de la fenêtre...

Ci-joint une autre version, qui permet de ne faire le test du zoom d'affichage que sur la feuille 1 (j'ai collé un interrupteur dans la cellule A1 de la feuille 1, quand l'user entre dans la feuille 2 ou 3, l'interrupteur s'active et le code de zoom ne s'active pas).

Après pour la remarque de Loureed, sans passer par l'application d'une fastidieuse équation, il y'a bien 1/3 événements qui permettrait de zoomer mécaniquement si l'user modifie manuellement la fenêtre d'application :

Worksheet_Activate si user va sur la feuille, controle zoom

Workbook_SheetActivate si user va sur une feuille, controle zoom

Worksheet_BeforeDoubleClick si user double clic n'importe où ou sur une cellule spécifique alors controle zoom

Sinon je connais 3 bouts de code qui contrôle des tailles de fenêtre d'application ou de sous-fenêtre classeur, après pour un zoom optimale il faudrait passer par l'application d'une équation (mais ce n'est pas vraiment mon truc), sinon en ajoutant l'un de ces codes dans les tests IF de la boucle infinie d'ouverture de classeur, la boucle repérera la modification de la fenêtre.

Voilà 3 bouts de code qui test des largeurs d'écran :

MsgBox Application.Width 'Renvoie ou définit une valeur de type Double qui représente la distance en points entre le bord gauche et le bord droit de la fenêtre d’application.
MsgBox Application.UsableWidth 'Renvoie la largeur maximale, exprimée en points de l’espace pouvant être occupé par une fenêtre dans l’espace de travail de l’application
MsgBox ActiveWindow.Width 'Si la fenêtre est réduite, la propriété Width est en lecture seule et renvoie la largeur de l'icône de la fenêtre

edit: par contre faire tourner en tâche de fond le contrôle de zoom c'est dire adieu à certaines fonctions excel, des choix à faire...

Re,

autre idée.

eric

PS : ajouter pl.Range("A1").Select à la fin de If test Then si on ne veut pas que la plage reste sélectionnée

124zoom2.xlsm (20.42 Ko)

Bonsoir

et bravo !!!!

Un petit mélange des deux solutions est-il possible ?

Ce n'est pas mon post, mais ça m'intéresse !!!

Pourquoi un mélange ?

La solution de waard, fonctionne sauf pour le zoom avec la le redimensionnement par la souris

et la version d'ériiic fonctionne avec tout mais sur mon pc cela fait "clignoter" l'écran toutes les secondes...

Dans tous les cas je redis BRAVO !!!! Bravo à tous les deux pour ces solutions qui feront certainement plaisir à kraster ! Non ?

@ bientôt

LouReeD

hi,

La version d'eriiic est super, bravo , je pense du 1er abord qu'il y'a toute la solution sur le sujet.

Sinon voilà une nouvelle version de ma macro qui prend en compte les changements de taille de fenêtre, par contre chez moi pas d'accès pour le moment à certaines fonctions excel (sauf si on arrête et qu'on relance la macro, tout revient ), au contraire de la macro d'eriiic, demain si je trouve pour le clignotement (ontime semble ne pas faire d'erreur sur les millisecondes), je posterai ma version avec reprise de la méthode application.ontime d'eriiic.

mais sur mon pc cela fait "clignoter" l'écran toutes les secondes...

Pas beaucoup le choix avec OnTime.

Mais j'ai fait en sorte que ça ne clignote que sur la feuille concernée.

Si on admet une action utilisateur on peut faire par un double-clic sur la plage par exemple.

C'est même beaucoup plus simple, mais ce n'est plus automatique

113zoom3.xlsm (17.42 Ko)

eric

PS :

Sinon voilà une nouvelle version de ma macro qui prend en compte les changements de taille de fenêtre, par contre chez moi pas d'accès pour le moment à certaines fonctions excel (sauf si on arrête et qu'on relance la macro, tout revient ),

Peut-être avec un DoEvents bien placé (boucle principale par exemple)

Y a pas à dire quand des PROs répondent...

Bonne fin de journée et @ bientôt

LouReeD

Hello tout le Monde,

Voilà ma dernière version et totalement commenté, voir commentaire du fonctionnement dans le code vba.

Good point :

Tous les soucis semblent résolus, à part le problèmes de l'affichage des commentaires, mais étant donné l'incompatibilité du mode de fonctionnement de l'affichage commentaire et de celui d'une boucle avec doevents, c'est un choix à faire, mais tout le reste marche.

Bad point :

Par contre gros soucis éventuel, au contraire de la macro d'eriiic, ma macro fonctionne comme un moteur, du coup le cpu affiche l'indexation de 25% de sa puissance à Excel, là où chez eriiic ça ne bouge pas au delà d'1%, ce peut être un problème pour les petites configs.

Voili

Bonjour,

Je vous remercie les amis: LouReed, Waard et Eriiic..c'est du bon travail, je vous félicite vraiment...comme LouReed l'a dit: y a rien à ajouter quand les experts parlent ) je crois que mon problème est résolu (^_^)

Rechercher des sujets similaires à "zoom automatique fonction largeur fenetre"