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