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

Excel Discussion :

Recupérer la valeur du zoom d'impression quand on a choisi un nb de pages en largeur [XL-2013]


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ing Agro auto-entrepr
    Inscrit en
    Janvier 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ing Agro auto-entrepr
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Recupérer la valeur du zoom d'impression quand on a choisi un nb de pages en largeur
    Bonjour,
    comment récupérer en vba la valeur du zoom d'impression après avoir utilisé une mise en page avec
    .FitToPagesWide = 2 et .FitToPagesTall = 1.
    La propriété .zoom me retourne "False" alors que je vois la valeur du zoom s'afficher dans le menu "Mise en Page".
    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Avec l'enregistreur de macro, sélectionnez la taille du zoom, et laissez coché "Réduire/Agrandir", arrêtez la macro, le code vous retourne la taille du zoom.
    Recommencez l'opération, mais cette fois-ci, cochez "Ajuster" pour le choix du nombre de pages en hauteur et largeur, le code vous retourne zoom=false.
    Il suffit ensuite de conserver ces 3 éléments dans la même macro, comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            .Zoom = 75
            .FitToPagesWide = 2
            .FitToPagesTall = 1
    Cdlt

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ing Agro auto-entrepr
    Inscrit en
    Janvier 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ing Agro auto-entrepr
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    merci de vous êtes penché sur mon pb… on est moins seul !!
    Mais cette solution exige une manip de l'opérateur si je comprends bien. Or , cette info doit etre récupérée par le code vba pour une execution auto, car cette manip doit faire plusieurs boucle pour déterminer la présentation papier la plus adéquate.
    Pas simple, a voir
    encore merci.

  4. #4
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Zoom est de type Variant, donc il peut soit prendre la forme d'une valeur numérique soit prendre la valeur False quand celui-ci n'est pas utilisé (grisé) c'est le cas si FitToPage... est renseigné

    Que cherches-tu as faire au juste avec la valeur du zoom?

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ing Agro auto-entrepr
    Inscrit en
    Janvier 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ing Agro auto-entrepr
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    bonjour Qwazerty
    je dois imprimer des tableaux qui progressivement deviennent très grands pour atteindre de 2 à 4 pages A3 avec un zoom d'impression aux alentours de 50 !!!
    Quand le zoom devient vraiment trop faible (impression illisible en dessous de 50) ou que le nb de feuilles dépasse 2, je peux éventuellement me priver de certaines informations en masquant des lignes.
    Je veux donc que ma macro trouve la présentation optimale => avec le zoom le plus élevé et en privilégiant si possible l'impression de l'ensemble des données…. pour limiter les decoupes papier au ciseaux et la bonne colle UHU.

  6. #6
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Tu peux rechercher la position des sauts de pages sur la feuille, ils sont contenu dans une collection HPageBreaks que tu trouvera dans l'objet worksheet.
    Ainsi au lieu de regarder le % du zoom, tu peux regarder le nombre de ligne par page en déterminant un nombre de lignes où la lecture n'est plus possible.
    Il te suffit pour ça de regarder la position du 1er saut de page et tu sauras le nombre de lignes incluses sur cette page.

    Il peut y avoir des soucis si les tailles de lignes ne sont pas toutes identiques, dans ce cas, une fois la position du 1er saut de page détérminé, tu regardes la dimension entre la cellule A1 et la cellule A...(ligne du saut de page) en regardant la valeur de la propriété Height de cette plage

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Ing Agro auto-entrepr
    Inscrit en
    Janvier 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ing Agro auto-entrepr
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Je ne connais pas l'objet "HPageBreaks" qui doit sans doute etre associé à un "VPageBreaks" (pour les 2 sens : horiz et verti).
    Ayant bien sûr des lignes (et colonnes) de tailles différentes. Avec éventuellement des lignes masquées... Je crains que ce ne soit l'enfer…!

    Je suis en train de regarder une moulinette avec la fonction ExecuteExcel4Macro("GET.DOCUMENT(50)") qui renvoie le nb total de pages à imprimer que je fixe à 2 maxi
    Je fais varier le zoom à grand pas (=10) pour trouver mon nb de 2 pages, puis par petits pas (5 puis2) pour encadrer la valeur de zoom la plus haute.
    je ne peux pas faire une simple moulinette qui irait de 2 en 2 car le fonction "Execute.." est très lente a priori.
    C'est galère : long en écriture et je crains qu'elle soit qd même longue aussi à l'utilisation.

    Je ne vois rien d'autre… désespoir!!!

    Un grand merci quand même

  8. #8
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Les lignes masquée ne sont pas un problème si tu prends la hauteur de la plage, puisqu'elle compteront pour 0.

    Pas testé mais j'essaierais un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Sub Test()
     
    Dim rgL As Range
    Dim H As Integer, W As Integer
     
        With Feuil1
            'On cherche la hauteur de la 1ère page
            If .HPageBreaks.Count > 0 Then
                'On regarde l'emplacement du 1er saut de page horizontal
                Set rgL = .HPageBreaks(1).Location
                'On regarde la hauteur en Pixel
                H = .Range("A1", .Cells(rgL.Row, "A")).Height
            End If
     
            'On cherche la largeur de la 1ère page
            If .VPageBreaks.Count > 0 Then
                'On regarde l'emplacement du 1er saut de page vertical
                Set rgL = .VPageBreaks(1).Location
                'On regarde la largeur en Pixel
                W = .Range("A1", .Cells(1, rgL.Column)).Width
            End If
     
            'On détermine les limites
            'A adapter, il faudra peut être traiter H et W indépendamment (masquer des lignes et/ou des colonne)
            If H > 1500 Or W > 250 Then
                '....
            End If
        End With
     
    End Sub
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Ing Agro auto-entrepr
    Inscrit en
    Janvier 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ing Agro auto-entrepr
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Re bonjour
    J’essaie, cet après midi, de tout ré-écrire dans ce sens.
    En espérant que ça marchera cette fois ... et sans trop de lourdeur d’executIon, à voir.
    Bonne journée et merci. Je te reviens.

  10. #10
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Avant de taper du code, je pense que j'essaierais de résoudre les différents cas comme j'ai essayé de le faire pour le Cas2

    Nom : Cas.png
Affichages : 347
Taille : 18,0 Ko

    Dans le principe, lorsqu'on retire une colonne (il faut une liste de colonne pouvant être masquée, trié dans l'ordre de la moins à la plus nécessaire au tableau), le tableau prend son aise, il "s'élargi" et "s'allonge".
    Il faut regarder si la hauteur en pixel du tableau à changé.
    Si cette hauteur H a changé, la suppression de la colonne à eu un effet (le bas du tableau n'avait pas encore atteint le bas de la seconde page). On recommence si besoin.
    Si ça n'influence pas, il faut passer à la suppression de lignes. Puis remettre les colonnes préalablement effacées en place et refaire les mesure H et W pour déterminer le cas

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Ing Agro auto-entrepr
    Inscrit en
    Janvier 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ing Agro auto-entrepr
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Bonsoir,
    Merci beaucoup, BEAUCOUP... QWAZERTY
    Je suis en train de finaliser mon code grace à toi, même si l'accouchement est douloureux et long.
    Ta portion de code m'a été très utile pour me familiariser avec les méthodes/propriétés que je ne connaissais pas.
    (Suite à une phase de test, j'ai quand même été obligé de revoir la structure du programme)
    Tu mérites tes étoiles, pour tes compétences et ta disponibilité. Bravo.

  12. #12
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    N'hésite pas à partager ton code, il peut être utile à d'autre

    Merci pour ce retour flatteur

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/04/2010, 13h04
  2. recupérer la valeur d'un bouton radio
    Par ericmart dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 19/05/2008, 15h42
  3. comment recupérer une valeur dans un datagrid
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 23/02/2006, 17h04
  4. [VB]comment recupérer la valeur d'une variable ?
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/02/2006, 14h35
  5. Réponses: 3
    Dernier message: 11/08/2005, 15h54

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