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 :

Connaître le nombre de colonnes visibles pour mise en page variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur étude de prix
    Inscrit en
    Février 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur étude de prix
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2017
    Messages : 10
    Points : 12
    Points
    12
    Par défaut Connaître le nombre de colonnes visibles pour mise en page variable
    Bonjour,

    J'ai un problème que j'arrive pas à résoudre pour un outil.
    J'ai un outil type tableau de comparaison avec un nombre de colonnes variable. Dans ce tableau j'ai les colonnes A à C fixe qui doivent s'imprimer sur chaque pages, ensuite j'ai les colonnes D à O et U à Y qui elles sont masquées lors d'une impression, puis j'ai des groupes de colonnes identiques (groupes de 7 colonnes) qui elles peuvent ou non être masquées selon l'envie de l'utilisateur et le nombre de groupes peut être très variable.

    Je cherchais à faire une mise en page automatique, j'avais un code qui marchait très bien (cf ci-dessous). Toutefois on m'a judicieusement fait remarquer qu'il était possible de masquer les colonnes et la du coup mon code tombe à l'eau.

    Voila le code que j'avais :

    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
    Sub Impression()
    ' Définir la zone d'impression
     
    Dim nb_ligne As Integer
    Dim nb_colonne As Integer
     
     
        ' nombre de ligne
        nb_ligne = Range("C" & Rows.Count).End(xlUp).Row - 1
        ' Numéro de la dernière colonne remplie
        nb_colonne = Cells(10, Cells.Columns.Count).End(xlToLeft).Column
     
     
    Sheets("tableau comparatif").PageSetup.PrintArea = Range(Cells(1, 1), Cells(nb_ligne + 4, nb_colonne)).Address
     
    ' ajout d'un saut de page à la colonne 40 pour garder une mise en page lisible
    If nb_colonne >= 40 Then
    Sheets("tableau comparatif").Columns(41).PageBreak = xlPageBreakManual
    End If
     
    ' ajout d'un saut de page à la colonne 60 pour garder 3 colonnes ST par page sinon ça devient illisible
    If nb_colonne >= 60 Then
    Sheets("tableau comparatif").Columns(61).PageBreak = xlPageBreakManual
    End If
     
    ' ajout d'un saut de page à la colonne 81 pour garder 3 colonnes ST par page sinon ça devient illisible
    If nb_colonne >= 81 Then
    Sheets("tableau comparatif").Columns(82).PageBreak = xlPageBreakManual
    End If
     
    If Columns("D:O").Hidden = False Then
    Columns("D:O").Hidden = True
    End If
     
    If Columns("U:Y").Hidden = False Then
    Columns("U:Y").Hidden = True
    End If
     
     
    Sheets("Tableau comparatif").PrintPreview
     
     
    End Sub
    Dans l'hypothèse où on ne masque aucune colonnes hormis celles de D à O et U à Y, je savais qu'il fallait mettre un saut de page après la 40ème colonnes et ensuite si il y avait plus de 60 colonnes un autre saut de page et encore un si j'avais plus de 81 colonnes. Mais si l’utilisateur décide de masquer les colonnes entre 60 et 81 et de garder celles après, il va se retrouver avec un page intermédiaire ou il n'y aura que les colonnes A à C.

    Je souhaite donc savoir comment compter le nombre de colonnes visible afin de lui dire que après 23 colonnes visibles, je veux un saut de page puis si j'ai plus de 46 colonnes visibles, je veux encore un saut de page, de même si j'ai 69 colonnes. Où par exemple me déplacer à partir de la première colonnes de 23 colonnes en ignorant les colonnes masquées.

    Je vous remercie par avance.

    Dharkki

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Bonjour,

    Essaye ceci:
    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
     
       i = 1
       s = 0
        Do While i < nb_colonne
     
            If Not Columns(i).Hidden Then
                s = s + 1
                Debug.Print "colonne pas caché:" & i
            End If
            If s = 23 Then
                Debug.Print "s=23 pour i=" & i
                s = 0
                Columns(i).PageBreak = xlPageBreakManual
            End If
            i = i + 1
       Loop
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur étude de prix
    Inscrit en
    Février 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur étude de prix
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2017
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Bonjour Halaster08,
    Merci pour ta réponse, j'allais justement mettre le code que j'ai fait pour solutionner mon problème, le principe semble très proche du tiens, reste à voir si il marche quelque soit les cas de figure.

    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
    Sub Impression()
    ' Définir la zone d'impression
     
    Dim nb_ligne As Integer
    Dim nb_colonne As Integer
    Dim i As Integer
    Dim NbColVisible As Integer
    Dim NbCol As Integer
     
     
    NbColVisible = 0
     
     
        ' nombre de ligne
        nb_ligne = Range("C" & Rows.Count).End(xlUp).Row - 1
        ' Numéro de la dernière colonne remplie
        nb_colonne = Cells(10, Cells.Columns.Count).End(xlToLeft).Column
     
     
    Sheets("tableau comparatif").ResetAllPageBreaks
    Sheets("tableau comparatif").PageSetup.Zoom = 40
    Sheets("tableau comparatif").PageSetup.PrintArea = Range(Cells(1, 1), Cells(nb_ligne + 4, nb_colonne)).Address
     
    If Columns("D:O").Hidden = False Then
    Columns("D:O").Hidden = True
    End If
     
    If Columns("U:Y").Hidden = False Then
    Columns("U:Y").Hidden = True
    End If
     
    For i = 1 To nb_colonne
     
        If Columns(i).Hidden = False Then
        NbColVisible = NbColVisible + 1
            If NbColVisible = 23 Or NbColVisible = 44 Or NbColVisible = 64 Or NbColVisible = 84 Or NbColVisible = 104 Then
            Sheets("tableau comparatif").Columns(i + 1).PageBreak = xlPageBreakManual
            End If
        End If
    Next
     
    Sheets("Tableau comparatif").PrintPreview
     
    End Sub

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

Discussions similaires

  1. [phpMyAdmin] PMA limite le nombre de colonnes visibles
    Par blumax dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 17/08/2013, 15h11
  2. Connaître le nombre de colonnes et de lignes d'un Terminal
    Par Yopii dans le forum Général Java
    Réponses: 8
    Dernier message: 06/01/2010, 22h50
  3. Connaître le nombre de colonnes d'une table
    Par angelmn dans le forum JDBC
    Réponses: 3
    Dernier message: 13/05/2009, 12h14
  4. Comment connaître le nombre de colonnes d'une table ?
    Par JPJOLY dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/07/2008, 17h58
  5. [T-SQL] Connaître le nombre de colonnes retourner par une PS
    Par NeoMan dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 28/12/2005, 11h30

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