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 :

Macro ajuster colonne et ligne en fonction de la mise en page


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 43
    Par défaut Macro ajuster colonne et ligne en fonction de la mise en page
    Bonjour,

    J’ai besoin de votre aide pour automatiser une tâche récurrente via vba.

    Tout d’abord, mes paramètres de mise en page sont les suivants : échelle à 60% et marges à 0.8cm.
    Dans chaque onglet de travail, j’ai paramétré une zone d’impression correspondant à une page.

    A la fin, j’enregistre mes onglets au format pdf. Cependant pour avoir le même format à la lecture, je dois ajuster ma dernière colonne et ligne de chacune des zones d’impression de mes onglets pour atteindre la taille maximum d’une page et ne pas déborder sur une deuxième page.

    Comment est-il possible d’automatiser cette tâche sur l’onglet actif, sachant que certaines colonnes/lignes peuvent être groupées et de tailles différentes ?

    Je vous remercie par avance.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Charlesll Voir le message
    Tout d’abord, mes paramètres de mise en page sont les suivants : échelle à 60% et marges à 0.8cm.
    Dans chaque onglet de travail, j’ai paramétré une zone d’impression correspondant à une page.
    Il y a plus simple :
    Mise en page > Onglet Page > Ajuster > 1 page en largeur.

    Et tu n'as plus à te préoccuper de tes problèmes de largeur de colonnes.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 43
    Par défaut
    Merci pour votre retour.

    C'est en effet la solution la plus simple, mais cela change mon échelle et impact du coup mon rapport au format PDF.
    Les pages ne se présentent pas de la même manière. C'est la raison pour laquelle je dois adapter mes colonnes et lignes pour remplir les conditions de format fixées et obtenir un rendu homogène.

    Avez-vous une solution à ce problème ?

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Dans ce cas, il faut que tu ajustes tes largeurs de colonne une fois "à la main" pour obtenir la bonne largeur de page.
    Tu fais la somme de toutes les largeurs de colonne pour avoir une valeur cible.

    Ensuite en VBA, tu soustrais pour chaque page les largeurs de colonne à ne pas toucher, de cette valeur cible et tu en déduis la largeur de ta colonne variable.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 43
    Par défaut
    C'est ce que je pensais faire au début, mais sachant que des colonnes peuvent être groupées, cela fausse ma valeur cible...

    Voila le code que j'ai pour calculer mes largeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function LargeurCol(MaRange As Range) As Single
     
        Dim LargeurTotal As Single
     
        For Each Colonne In MaRange.Columns
            LargeurTotal = LargeurTotal + Colonne.ColumnWidth
        Next Colonne
        LargeurCol = LargeurTotal
     
    End Function

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Charlesll Voir le message
    sachant que des colonnes peuvent être groupées, cela fausse ma valeur cible...
    Si tu veux parler de "cellules fusionnées", on ne le répètera jamais assez : la fusion, il n'y a rien de tel pour mettre l'embrouille dans Excel et encore plus dans VBA.
    Et c'est d'autant plus regrettable que dans la majorité des cas, la fusion horizontale est inutile.

    Voila le code que j'ai pour calculer mes largeurs :
    Pourquoi ne pas faire plus simple en bouclant sur les numéros de colonnes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function LargeurCol(MaRange As Range) As Single
        Dim Colonne As Long
        For Colonne = 1 To MaRange.Columns.Count
            LargeurCol = LargeurCol + Columns(Colonne).ColumnWidth
        Next Colonne
    End Function

Discussions similaires

  1. [XL-2013] Macro pour déplacer des cellules en fonction de leur mise en forme
    Par gregory.d dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/04/2016, 12h16
  2. [XL-2010] Macro permettant de copier des lignes en fonction d'un nombre de colonne a transposer
    Par smo911 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/12/2015, 10h37
  3. Réponses: 23
    Dernier message: 07/07/2015, 16h39
  4. Réponses: 1
    Dernier message: 10/09/2014, 17h54
  5. [XL-2010] Macro insertion de nouvelles lignes en fonction des modalités
    Par Rageo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/04/2014, 20h07

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