Bonjour à tous.
En voulant créer un jeu sur Excel pour mon petit fils, à un moment donné j'ai voulu ajuster automatiquement la largeur de deux colonnes en fonction de la largeur de la fenêtre Excel, qui varie d'un PC à un autre. Extrêmement simple, me direz vous. Hé bien non ! Ou alors, je suis nul... Mais je vais m'améliorer, comme à chaque fois que je viens sur ce forum !
Bien. Tout d'abord une chose incompréhensible : Lorsque je crée les deux lignes de code suivantes, je suis censé "mesurer" la taille de la colonne N° 1, n'est_ce pas ?
Mais le résultat est surprenant, puisque j'obtiens Test1 = 2, et Test2 = 15. Et la mesure "directe" sur la feuille Excel donne le résultat suivant : Largeur = 2 (25 pixels). Alors, quelle correspondance entre les valeurs "2", "15" et "25" ?? Je n'ai toujours pas la réponse. J'ai commencé par en déduire un ratio de 7,5 (15/2), mais c'aurait été trop simple. Une autre mesure sur la colonne 2 me donne respectivement 10,33 et 60, et Largeur = 10,33 (100 pixels). Du coup mon fameux ratio passe à 5,808 (60/10,33) au lieu de 7,5 auparavant... C'est raté pour le ratio !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Test1 = Columns(1).ColumnWidth Test2 = Cells(1,1).Width
Je précise par ailleurs que grâce à un autre sujet publié sur ce forum, je connais maintenant la résolution de l'écran (1680 x 945 dans mon cas) et - sauf erreur - les valeurs correspondant à "Screen.TwipsPerPixelX" et "Screen.TwipsPerPixelY", qui sont toutes les deux à 20. Mais est-ce que ça va me servir ?
Maintenant, je vais expliquer ma démarche. Je mesure la largeur totale de la feuille Excel par le code suivant (je n'en connais pas d'autre, alors s'il y a une bonne âme !) :
Pour info, j'obtiens 1005,6. Puis je mesure la largeur des 'N' cellules 'immuables' correspondant à l'espace du jeu créé (j'obtiens 950,2). Et c'est là que je veux ajuster les deux colonnes restantes (à gauche et à droite de cet espace), soit : (1005,6 - 950,2) / 2 = 27,7 pour chaque colonne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Largeur = Application.ExecuteExcel4Macro("Get.workspace(13)")
Précision complémentaire ajoutée par la suite : Toutes les colonnes qui sont à droite de la colonne 'finale' sont masquées.
Mon problème, c'est que la seule commande que je connaisse pour modifier la largeur de colonne est :
En effet, les commandes Range("A1").Width ou Cells(1,1).Width =27,7 provoquent une erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Columns(1).ColumnWidth = 27,7
Mais quand je fais ça, la colonne est beaucoup trop large, puisqu'elle passe à 257 pixels. Bref, j'y arrive bien en augmentant mes colonnes d'une unité à chaque fois, puis en vérifiant, puis en recommençant à nouveau tant que ce n'est pas bon. Mais ça fait sacrément sauter l'image, et de toute façon le but de l'opération c'est d'y arriver du premier coup. En fait, je m'aperçois que je suis en train de vouloir soustraire des oranges à des citrons. Et ça ne passe pas vraiment...
Voilà, je crois que j'ai tout dit. Encore une prise de tête pour un truc banal, et pas mal de temps perdu.
Merci de m'apporter, sinon une solution, au moins une explication.
Cordialement,
JR
Partager