Problème decalage formes avec mise a l’echelle windows

Bonjour

J’ai créé un petit outil dur excel sur mon pc perso avec windows 10 et Excel 2019 ou j’utilise des formes ovale et carre qui correspondent a la dimension d’une cellule

Lorsque je l’utilise a mon travail (windows 7 /excel 2013) les formes sont décalées…

Je pensais que ca venait de la version d’excel et au prix de multiples corrections complexes j’ai corrigé le problème

Je viens de comprendre que le problème venait non pas de la version excel ou de la resolution d’ecran mais de la mise a l’echelle dans paramètres affichage windows (mise a l’echelle et disposition) (150% chez moi et 100% au travail)

J’ai vérifié sur un autre pc avec excel 2021 et ca decalait car l’echelle etait a 200% et apres mise a l’echelle 150%, ca a corrigé le problème

Cependant la mise a l’echelle de windows permet un meilleur affichage sur l’ecran et je ne peux pas la modifier pour toutes les applications et le bureau

Je n’ai pas trouvé le moyen de forcer le logiciel excel a garder l’echelle a 150%

Une autre solution serait d’avoir un code vba pour savoir quelle est la mise a l’echelle et faire des corrections sur le code

L’idee est que cet outil puisse etre utiliser sur n’importe qu’elle pc ayant une version excel pas trop ancienne(Je sais que ca ne marchera pas avec excel 2007 car j’utilise des fonctions de classement et de tri )

Est ce que vous avez déjà été confronté a ce problème?

J’ai bien trouvé comment afficher la résolution de l’ecran mais rien sur mise a l’echelle et disposition display scaling and layout)

bonsoir,

c'est quoi exactement le problème ?

27ovals.xlsb (23.36 Ko)

Bonjour à tous,

tu peux connaitre le zoom en cours avec ActiveWindow.Zoom
A toi de voir sur quel(s) événement(s) tu veux t'en servir.
eric

24bout-de-code.xlsm (50.70 Ko)
excel visu2

merci de votre retour

j'ai mis un bout de code et 2 photos pour que ce soit plus explicite

le problème ne vient pas du zoom de l'application et le fait de zoomer et de dezoomer ne change rien

cela vient du paramètre d'affichage windows, le decalage se produit avec la mise à l'echelle

cela fonctionne avec une mise à l 'echelle de 150% mais pour tout autre mise à l'echelle , il y a un decalage entre les cellules et les formes

ActiveWindow.Zoom te permet de savoir le zoom en cours, mais aussi de le fixer à la valeur voulue.

j'ai essayé mais ca ne change rien au problème

j'avais essayé avec ActiveWindow.zoom = 75

J'ai bien ouvert ton fichier mais comme tu n'expliques rien sur comment procéder pour constater le pb j'ai refermé...
Par ailleurs, on ne démarre pas un module par On Error Resume Next pour mettre la poussière sous le tapis.
Pourquoi déclares-tu des variables dans un module de classe ?

bonjour

avec le fichier, quand on selectionne une cellule et qu'on appui sur H (pour Homme) ca génère un carré et quand on appui sur F (pour femme) ca génère un cercle qui doit être superposé à la cellule dont j'ai défini la taille

ca fonctionne parfaitement si le paramètre d'affichage de windows, l'echelle est à 150% mais pas si on modifie (après avoir réouvert le fichier excel), la forme apparait alors décalée

par contre changer la résolution de l'écran ne change rien

pour les modules de classe, je n'ai mis qu'une toute petite partie du code mais c'est vrai que j'aurai pu m'en passer (j'ai "appris" le code vba en développant cet outil)

concernant on error resume next, je l'ai rajouté à la fin pour pouvoir le passer à des collègues et être sur qu'une manipulation non prévue ne plante pas l'appli mais ca fonctionne bien sous réserve de ce problème d'affichage qui impose de mettre à 150%

le but est de pouvoir le donner à tout le monde sans imposer une echelle d'affichage windows ...

on utilise le "top" et le "left" de la cellulle dans laquelle on ajoute le shape mais ne pas avec une calculation x or y *25 et puis le width et height en regardant la cellule suivant ou en dessous.

     pers.id = countF
     pers.sexe = "Feminin"

     lft = activecell.Left + 1     'left
     tp = activecell.Top + 1     'top
     wdth = activecell.Offset(, 1).Left - lft - 2     'width
     hgth = activecell.Offset(1).Top - tp - 2     'height

     Set pers.symbole = ActiveSheet.Shapes.AddShape(msoShapeOval, lft, tp, wdth, hgth)

ok merci du conseil je comprends mon erreur

je vais essayer et vous fais un retour

Super ça fonctionne parfaitement et ce n'est plus sensible à la mise à l'échelle, je dois encore adapter le reste du code ou j'avais fait le même type d'erreur

Un grand merci à vous tous de m'avoir aidé et BsAlv tu es un génie!
Rechercher des sujets similaires à "probleme decalage formes mise echelle windows"