IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Calcul largeur colonne VA vs Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut Calcul largeur colonne VA vs Excel
    Bonjour

    je cherche une explication à ma constatation suivante :

    dans une feuille j'ai des colonnes de largeurs différentes de "B" à "AH", je cherche à créer une colonne "AN" unique ayant une largeur égale à la somme des largeurs des colonnes "B" à "AH"

    pour cela j'ai écrit une macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim i As Integer, lg As Double, tot As Double
    Dim sh As Worksheet
     
    Set sh = Sheets("ModelH")
     
    For i = 2 To 34
        lg = sh.Columns(i).ColumnWidth
        tot = tot + lg
    Next i
     
    End Sub
    j'obtiens 65,14 (vérif faite manuellement c'est correct), visuellement à l'écran les colonnes font 152 mm

    Je créé ensuite une colonne "AN" de largeur 65,14, visuellement à l'écran elle ne fait que 112 mm

    Où est l'erreur ? Comment créer une colonne ayant la même largeur visuellement ?

  2. #2
    Membre chevronné
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Janvier 2007
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 231
    Par défaut
    bonjour,

    vous pourrez constater que si vous sélectionnez la "règle en millimètre", et colonnes A à Z largeur 2, on a un visuel écran (zoom 100% et avec ma taille d'écran) de 116 mm...
    si je fais largeur colonne AA = 52 (26 *2) je m'attends à avoir le même rendu ... et bien non ! mesure = 85 mm

    il faut faire largeur colonne A = 71 pour un affichage = 116 mm
    2 x 35.5 donne presque le même rendu... mais pas tout à fait

    Il semble qu'il faille appliquer un coefficient (non linéaire ...) selon le nombre de colonnes, l'épaisseur de la grille doit interférer je pense

  3. #3
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    quand on modifie "à la main" les largeurs il s'affiche deux chiffres : un en pixels qui est la largeur totale de la colonne, et un sans unité qui est la largeur utile correspondant au columnwith. Celui qui est additif c'est la largeur en pixel, malheureusement qui ne semble pas accessible en VBA.

    En relevant quelques couples de valeurs

    0,83 10
    2,14 20
    13,57 100
    27,86 200
    213,57 1500

    et en lançant dessus une régression linéaire j'ai obtenu les coefficients :
    0,142831436 -0,68230573

    Soit
    Columnwidth = L * 0,14 - 068

    Et donc il faudrait corriger ta somme de (N-1) * -0.68230573 où N est le nb de colonnes. Dans ton exemple ça ferait un total corrigé de 95,97 (en ajoutant 32 * 0.68230573)

    Après il restera toujours une source d'erreur résiduelle : le columnwith est "discret" : il n'a pas beaucoup de décimales et son unité exotique fait que seules quelques valeurs sont prises (suivant la police et la taille du style "normal"), ce qu'on voit aussi quand on la modifie "à la main". Chez moi par exemple ça passe de 12,29 à 12,43.

Discussions similaires

  1. Excel: largeur colonne
    Par gorka dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 01/06/2011, 09h19
  2. Probleme largeur colonne export Excel
    Par samisam91 dans le forum BIRT
    Réponses: 4
    Dernier message: 09/12/2010, 10h59
  3. Réponses: 0
    Dernier message: 29/07/2008, 11h02
  4. Changer la largeur de colonnes par vba (excel 97)
    Par jneron dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/09/2007, 12h14
  5. largeur colonne excel après export
    Par scully2501 dans le forum Access
    Réponses: 6
    Dernier message: 18/06/2005, 11h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo