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 :

.ColumnWidth qui ne prend pas la valeur calculée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut .ColumnWidth qui ne prend pas la valeur calculée
    bonjour
    j'ai un fichier devis avec 6 colonnes dont la largeur totale est 500 recuperer avec ce code
    For i = 1 To 6
    cum_larg = cum_larg + Columns(i).Width
    Next
    si un utilisateur elargit une des colonnes .une autre colonne doit baisser en largeur pour garder le total des colonnes à 500
    j'ai fait ce code mais ca ne marche pas
    Columns(2).ColumnWidth ne prend pas la valeur calculée mais seulement exemple Columns(2).ColumnWidth = 100 ca marche
    merci pour votre aide
    For i = 1 To 6
    cum_larg = cum_larg + Columns(i).Width
    Next
    'MsgBox cum_larg
    If cum_larg > 500 Then
    larg = Round(Columns(2).Width - 500, 0)
    Columns(2).ColumnWidth = larg
    End If

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    ColumnWidth, propriété
    Renvoie ou définit la largeur de toutes les colonnes de la plage spécifiée. Type de données Variant en lecture-écriture.
    expression.ColumnWidth
    expression Obligatoire. Expression qui renvoie un des objets répertoriés dans la liste S'applique à.
    Remarques
    Une unité de largeur de colonne est égale à la largeur d'un caractère du style Normal.

    Height, Width, propriétés
    Voir aussi Exemple S'applique à Spécificités
    Hauteur ou largeur en points d'un objet.

    Ces 2 propriétés n'utilisent pas la même unité, ça ne peut pas marcher sans faire une conversion.
    Assez ch..., fait une recherche dessus.
    eric

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    merci pour les infos théoriques mais ca ne resout pas mon probleme

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Il faut que je fasse une recherche sur la conversion à faire pour toi ?

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    conversion de quoi?qel mot clé tapé sur google?

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Excel est un tableur et n'a, dans l'exercice de cette seule vocation, aucune raison de dimensionner très précisément une largeur de colonne ou une hauteur de ligne.
    Il "adapte" au mieux et cette adaptation dépend entre autres et principalement du DPI de l'écran.
    Ainsi, ce petit test en dpi 96
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Columns(2).ColumnWidth = 13.2
    MsgBox Columns(2).ColumnWidth ' --->> 13.14 et non ce que l'on a souhaité (13.2)
    Il faut par ailleurs bien comprendre que ce qui est affiché (dont la grille) ne peut, comme tout affichage à l'écran, qu'occuper des pixels, que le pixel étant la plus petite unité d'affichage, il n'est pas possible de déterminer la position de ce qui serait un nombre décimal de pixels. Dès lors : les transpositions de dimensions d'une unité à l'autre ne sauraient être rigoureusement exactes que si le résultat de la transposition est un multiple entier de pixels.

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    conversion de quoi?qel mot clé tapé sur google?
    De ce que tu cherches : conversion columnwidth widht

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour

    la fonction columnwidth te donne la dimention en unite (de nombre de caracteres) c'est a dire
    si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("A1:F10).columns(1).columnwidth=100
    elle fait 100 caracteres (en font normal de large) on peut y mettre 100 caracteres

    la fonction width pour une plage est en lecture seule
    c'est a dire que que l'on peut pas s'en servire pour dimentionner seulement pour connaitre sa largeur et l'unité est en point

    toi tu la veux comment ta plage 500 en
    1. point?
    2. caracteres?
    3. pixels?



    tu veux connaitre facilement la convertion en point sur ton pc avec ta resolution?
    test CELA ca pourrait t'aider a comprendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test2()
    Columns(1).ColumnWidth = 1
    Do
    Columns(1).ColumnWidth = Columns(1).ColumnWidth + 0.1
    Loop While Range("A1").Width < 100
    MsgBox "la cellule ""A1"" fait " & Range("A1").Width & " POINTS !!   de large " & vbCrLf & _
    Range("A1").ColumnWidth & " en unité ""COLUMNWIDTH"" (nombres de caracteres)  "
    End Sub
    pour la dimention en pixel (la conversion) tu a moulte discussions qui en parle
    pour l'heure tu a les api window et gdi
    ou
    une cle dans la base de registre

    je ne connais pas ton besoins tout du moins le contexte je ne peux t'en dire plus
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    merci patrick

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/06/2017, 13h15
  2. dropdown qui ne prend pas de valeur
    Par label55 dans le forum C#
    Réponses: 0
    Dernier message: 27/05/2009, 14h21
  3. requete qui ne prend pas comme valeur de critère le contenu d'un champs
    Par alassanediakite dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 16/08/2007, 13h42
  4. Réponses: 10
    Dernier message: 07/01/2007, 12h03
  5. [Tableaux] Variable qui ne prend pas sa valeur
    Par stephane78 dans le forum Langage
    Réponses: 11
    Dernier message: 19/08/2006, 20h30

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