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 :

condition sur mise en page en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 84
    Par défaut condition sur mise en page en VBA
    Bonjour à tous,

    le context :
    via une application tiers (lotus notes pour ne pas le nommer) je pilote excel pour créer des des tableaux croisé dynamique dans un fichier xls.

    j'aimerai modifier 'dynamiquement' via une macro la mise en page de ma feuille nouvellement créé pour que les tableaux ne soit plus sur plusieurs pages (horizontal et vertical).

    je connais déjà les fonctions permettant de manipuler la mise ne page.
    ex :

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    With ActiveSheet.PageSetup
            .Orientation = xlLandscape
            .Zoom = 90
        End With
    ...
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
    mais je ne trouve pas comment 'tester' la mise en page actuel pour faire les conditions suivante :

    si le mise en pages horizontale de la feuille actuel est > 2 feuilles alors
    diminuer le zoom.

    Si un tableau est coupé sur plusieurs page verticalement alors
    insérer un saut de page avant le tableau


    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonour,

    sous Excel, fait les manips avec l'enregistreur de macros, il en met une tartine, mais donne la trace de tous les mots clefs nécessaires

    cordialement,

    Didier

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 84
    Par défaut
    bonjour Ormonth,

    j'ai du mal expliquer mon problème. j'ai déjà utilisé l'éditeur de macro d'excel,
    il m'a bien indiqué comment modifier la mise en page de ma feuille.

    Mais je n'arrive pas a faire le lien entre le 'contenant' (les pages d'impression) et le contenu (les cellules).

    en gros j'aimerai réalisé une fonction de ce type :
    function QuelPageVertical(feuil as Sheets, ligne as integer) as integer
    qui me renvoi le numéro de la page où sera imprimé la ligne en référence.
    (bien sur si c'est possible)

    Ce qui me permettra de réaliser ce type d'algo :
    si (QuelPageVertical(feuil, 1er ligne de TCD) <> QuelPageVertical(feuil, dernière ligne de TCD) alors
    insérer un saut de page avant TCD.

    pour le moment j'ai cherché dans les propriétés de "Worksheet.PageSetup" mais je n'ai pas trouvé se qui peu m'aider à réaliser cette fonction.

    voila j'espère mettre mieux exprimé.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonsoir,

    Deux petites pistes, la première décrémente le zoom pour qu'il ne reste que deux pages à imprimer, la seconde t'indique si au dessus ou à gauche de la cellule de référence se trouve un saut de page. A adapter selon tes besoins :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
     
    Sub Ajuster()
     
        Dim Fe As Worksheet
        Dim I As Integer
     
        'I est décrémenté pour ajuster
        'le zoom sur deux pages
        I = 100
     
        Set Fe = Worksheets("Feuil1")
     
        'boucle jusqu'à ce qu'il ne reste
        'plus que deux feuilles à imprimer
        Do Until Fe.PageSetup.Pages.Count = 2
     
            'évite d'aller plus bas
            If I < 10 Then Exit Do
     
            Fe.PageSetup.Zoom = I
            I = I - 1
     
        Loop
     
        MsgBox "Le zoom est de " & I & " %"
     
    End Sub
     
    Sub ChercherSaut()
     
        Dim Fe As Worksheet
        Dim Saut As Integer
        Dim I As Integer
        Dim Cel As Range
     
     
        Set Fe = Worksheets("Feuil1")
     
        'pour le test, le saut se trouvant sur la cellule
        Set Cel = Fe.[A34]
     
        'pour les sauts de pages horizontaux
        Saut = Fe.HPageBreaks.Count
     
        For I = 1 To Saut
     
            If Fe.HPageBreaks(I).Location.Address = Cel.Address Then
     
                'ici ce que tu veux faire...
     
            End If
     
        Next I
     
        'pour les sauts de pages horizontaux
        Saut = Fe.VPageBreaks.Count
     
        For I = 1 To Saut
     
            If Fe.VPageBreaks(I).Location.Address = Cel.Address Then
     
                'ici ce que tu veux faire...
     
            End If
     
        Next I
     
    End Sub
    Hervé.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 84
    Par défaut
    Merci Theze,

    Je crois que je vais pouvoir m'en sortir avec ces infos.

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

Discussions similaires

  1. [XL-2010] Mise en page avec VBA
    Par Blaiz58 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/11/2014, 23h21
  2. [www.bradd.be.ma] Avis sur mise en page site
    Par witchgunn dans le forum Mon site
    Réponses: 7
    Dernier message: 02/06/2011, 09h28
  3. Question sur mise en page formulaire
    Par pcayman dans le forum IHM
    Réponses: 1
    Dernier message: 14/08/2007, 11h53
  4. VBA creation doc word - mise en page
    Par estampille dans le forum VBA Word
    Réponses: 4
    Dernier message: 18/01/2006, 12h04
  5. [VBA] [WORD] se placer sur la 1ere page
    Par meufeu dans le forum VBA Word
    Réponses: 4
    Dernier message: 22/07/2005, 10h23

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