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
45largcol.xlsm (13.93 Ko)

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

Civo 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

Il n'y a pas de questions stupides lorsqu'on essaie d'aider quelqu'un

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 ça fonctionne (:

Civo a écrit :

ben ça fonctionne (:

Ben non....

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..

bennon

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

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

Merci, ça marche bien comme ça maintenant.

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

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

D'accord. Je marque le sujet résolu, mais suis preneur de l'info.

A+ et merci

Rechercher des sujets similaires à "largeur colonnes"