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 :
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.
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
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
Partager