Largeur de colonnes
Bonjour,
Je bataille ce matin avec un truc à priori simple...
je souhaite qu'à l'activation de la "Feuil1", la fenêtre soit ajustée à l'espace de travail dispo, que la colonne "A" ait une largeur de 6 (?), ET que les colonnes "B" et "C" se partagent à part égale le reste d'espace dispo.
J'ai remarqué qu'il y a un facteur de 7 entre la largeur des colonnes en pixels, et la largeur inscrite dans les propriétés. D'où mon (?). Quelle est l'unité utilisée dans ce cas ?
Enfin, voila ou j'en suis.
Merci d'avance pour votre aide
Private Sub Worksheet_Activate()
Dim lCol As Variant
With ActiveWindow
.WindowState = xlNormal
.Top = 1
.Left = 1
.Height = Application.UsableHeight
.Width = Application.UsableWidth
End With
lCol = ((Application.UsableWidth - 6) / 2) / 7
With Sheets("Feuil1")
.Columns("A:A").ColumnWidth = 6
.Columns("B:B").ColumnWidth = lCol
.Columns("C:C").ColumnWidth = lCol
End With
End Sub
Ma question va te paraître stupide, mais quel est ton espace de travail ?
parce que je ne comprends pas trop ce que tu veux faire ... Tu dis vouloir travailler sur trois colonnes en ayant déjà défini la première et que les deux autres sont partagées à parts égales donc je vois pas trop où est le problème si ton espace de travail est défini (:
Cdlt
Il n'y a pas de questions stupides lorsqu'on essaie d'aider quelqu'unCivo a écrit :Ma question va te paraître stupide, mais quel est ton espace de travail ?
parce que je ne comprends pas trop ce que tu veux faire ... Tu dis vouloir travailler sur trois colonnes en ayant déjà défini la première et que les deux autres sont partagées à parts égales donc je vois pas trop où est le problème si ton espace de travail est défini (:
Cdlt
En fait mon souhait n'est que "cosmétique" car je n'écris pas directement dans ces colonnes, elle ne sont affichées qu'à titre consultatif.
L'utilisateur (autorisé) peut y écrire mais uniquement à l'aide de boutons activant des macros [ Action sur bouton/ déprotection de la feuille / écriture / reprotection de la feuille]. Mais ça , ça fonctionne pas de soucis.
Les seules infos intéressantes sont dans les colonnes "A", "B", et "C".
Je souhaite qu'à chaque ouverture du classeur ces trois colonnes soient affichées selon les règles que j'ai énoncé plus haut.
Quelle que soit la taille de l'écran si Windows est en fullscreen ou de la fenêtre si en mode fenêtré.
Quant à l'"espace de travail" je suis parti là dessus:
Application.UsableWidth, propriété
Cette propriété renvoie la largeur maximale, exprimée en points (point : unité de mesure qui fait référence à la hauteur d'un caractère imprimé. Un point est égal à 1/72e de pouce, soit environ 1/28e de centimètre.) de l'espace pouvant être occupé par une fenêtre dans l'espace de travail de l'application. Type de données Double en lecture seule.
je ne sais pas si c'est clair
Ben non....Civo a écrit :ben ça fonctionne (:
Mon code donne : Application.UsableWidth=1441,5
je ne comprends pas pourquoi les largeurs des colonnes "B" et "C" ne sont pas ajustées de manière à masquer les colonnes "D,E,F,G,H" ...
je m'aperçois que retrancher "6" n'est pas vraiment exact, ça devrait être "6x7", mais ça n'explique pas le résultat quand même..
Parce que moi quand je le teste je n'ai que la case D en "trop"
et en remplaçant lCol = ((Application.UsableWidth - 47) / 2) / 6 puisque Application.usablewitch est en pixels mais bon le résultat est le même et ceux sur deux écrans différents avec deux résolutions différentes (: et avec
lCol = ((Application.UsableWidth - 47) / 2) / 5.55
With Sheets("Feuil1")
.Columns("A:A").ColumnWidth = 5.9
.Columns("B:B").ColumnWidth = lCol
.Columns("C:C").ColumnWidth = lCol
End With
J'arrive à peu près à ce que tu veux (:
Cdlt
Merci, ça marche bien comme ça maintenant.Civo a écrit :Parce que moi quand je le teste je n'ai que la case D en "trop"
et en remplaçant lCol = ((Application.UsableWidth - 47) / 2) / 6 puisque Application.usablewitch est en pixels mais bon le résultat est le même et ceux sur deux écrans différents avec deux résolutions différentes (: et avec
lCol = ((Application.UsableWidth - 47) / 2) / 5.55
With Sheets("Feuil1")
.Columns("A:A").ColumnWidth = 5.9
.Columns("B:B").ColumnWidth = lCol
.Columns("C:C").ColumnWidth = lCol
End With
J'arrive à peu près à ce que tu veux (:
Cdlt
Ma démarche était bonne, mais les valeurs un peu n'importe quoi.
Mais 47 pixels correspondent à 6 quoi ??
Tout à fait !!
Mais il faut tout prendre en compte, l'épaisseur des bandeaux etc ...
J'ai lu il y a quelques temps déjà un article détaillant les retranchements à faire etc ...
Si je remets la main dessus je n'hésiterai pas à te le faire parvenir (:
Cdlt
D'accord. Je marque le sujet résolu, mais suis preneur de l'info.Civo a écrit :Tout à fait !!
Mais il faut tout prendre en compte, l'épaisseur des bandeaux etc ...
J'ai lu il y a quelques temps déjà un article détaillant les retranchements à faire etc ...
Si je remets la main dessus je n'hésiterai pas à te le faire parvenir (:
Cdlt
A+ et merci