Mise en page impression calendrier trimestriel

Bonjour à tous,

j'ai quelques difficulté pour réaliser ma mise en page lors de l'impression :

j'ai tout d'abord un problème lors l'execution depuis mon bonton impression, apparemment les colonnes masquer (B et C) de mon onglet Cal se démasquent et je ne comprend pas pourquoi. alors que si je lance la macro depuis le VBA aucun probleme de colonne qui se démasque !

Mon second problème est d'affiché le mois au dessus lors de l'impression d'un trimestre car comme les mois n'ont pas tous le même nombre de jours je n'arrive pas optimiser l'affichage.

Je vais avoir sans doute le même problème lors de l'impression de mes semaines (onglet Hebdo) lorsque celle ci seront à cheval sur deux mois.

J'ai mis un onglet ExemplePrint pour donnée un aperçut de mon besoin

Je reste à votre disposition pour des infos complémentaires,

Ci joint le vilain petit fichier

5printtrim.xlsm (191.06 Ko)

Bonjour,

Pour le premier problème : Cells(4, 2).select ... le 2 correspond à la colonne B, d'où l'affichage indésiré.

Sub PrintM()
Dim rng As Range
Dim rng2 As Range

    WsPrt.Visible = True
    WsPrt.Cells.Delete 'rng2 = WsPrt.Cells.Range(3, 1).CurrentRegion  'Selection du tableau ne fonctionne pas
             'rng2.Delete 'ne fonctionne pas doit remplacer WsPrt.delete
    Set rng = WsCal.Cells(1).CurrentRegion '.SpecialCells(xlCellTypeVisible)
    rng.Copy
    With WsPrt
        .Cells(4, 1).PasteSpecial Paste:=12, Transpose:=True
              '.Cells(3, 1). ??? Formula1:="=An" 'ecrire dans la cellule (3,1)
        Cells(4, 4).Select   '''<<< Modif ... ICI  

Gelinotte

Bonjour,

Tout au bas de la macro PrintM ... modifie ainsi ...

Cela place le contenu de la Combobox1 en en-tête (gras et 14 points)

À l'aide d'un simple test du si contenu <> "", tu pourrais faire afficher le trimestre (combobox2).

Voir si c'est acceptable ...

 ..
 ...
 ....
Application.CutCopyMode = False
With ActiveSheet.PageSetup
    .CenterHeader = "&""-,Gras""&14" & "&G" & Worksheets("Cal").ComboBox1.Value
End With
WsPrt.PrintOut preview:=True
Set rng = Nothing
End Sub

Gelinotte

Bonjour gelinotte désolé j'ai pas pu te répondre avant,

Ca marche pas mal, par contre la position centerheader ne m'arrange pas je voulais savoir si il était possible d'avoir plutôt, toujours en centré mais sur la ligne 3, et je voulais également rajouter après la combobox.value l'année correspondant au champs An du gestionnaire de nom. Est ce possible ?

.CenterHeader = "&""-,Gras""&14" & "&G" & Worksheets("Cal").ComboBox1.Value & An

Concernant la version trimestrielle de mon impression j'aimerai qd meme aboutir à un résultat proche de l'exemple print c'est à dire avec le nom du mois au dessus des jours correspondants. (voir fichier joint)

par contre je me pose la question comment la macro va savoir si elle traite 1 mois ou 1 trimestre? ( via la combobox selectionnée?)

Si tu as des idées ou des réponses à proposer je suis preneur,

Encore merci pour le temps déjà passé sur le problème.

5pintv2.xlsm (190.42 Ko)

Bonjour,

Voir si j'ai bien tout compris correctement ...

Gelinotte

5edlede-pintv2.xlsm (184.98 Ko)

Bonsoir Gelinotte,

C'est bien j'ai réussi à appliquer ton code tel quel pour mon onglet hebdo, c'est parfait.

Pour le mensuel ca me semble nickel aussi. Par contre pour le trimestriel j'aimerai si c'est faisable d'avoir au-dessus des jours le nom du mois encadré (comme dans mon exemple).

Dans un future proche sur ma feuille print il y aura un masque réglementaire ( comprenant le logo, le titre sur le quel tu as trouver des solution et la référence du document ( qui changera en fonction du type de calendrier généré)) que je vais devoir inséré en entête de ma feuille, ( c'est juste une horreur le masque actuellement proposé avec plein de cellules fusionnées. je le met dans l'exemple à print Je ne vois pas comment gérer cela car il devra s'adapter au type de calendrier ( hebdo, mensuel et trimestriel)

Et si tu as le temps arriverai tu à me corriger le début de mon code

WsPrt.Visible = True

WsPrt.Cells.Delete 'rng2 = WsPrt.Cells.Range(4, 1).CurrentRegion 'Selection du tableau ne fonctionne pas

'rng2.Delete 'ne fonctionne pas doit remplacer WsPrt.delete

pour que j'utilise rng2 qui peut permettrait de supprimer que le tableau copier et de garder éventuellement l'entête "fixe" quitte à faire un modèle de feuille par entête...

Voilà ca fait beaucoup de choses mais si tu as des idées car j'essaie de contournée les problèmes mais c'est pas la solution.

Ci joint la dernière version de mon fichier avec les corrections

12printv3.xlsm (211.89 Ko)

Bonjour,

Pour le bout de code soumis :

Ceci s'adapte aux nombres de lignes.

Dim Derlig As Long
Derlig = Worksheets("Print").Range("A" & Rows.Count).End(xlUp).Row + 1
Set Rng2 = Worksheets("Print").Range("A3:CN" & Derlig)  ''' Changé pour ligne 3 à cause des mois des trimestres
WsPrt.Visible = True
Rng2.Delete 

Je cogite sur le reste.

Gelinotte

Ok merci je test cela dès que je suis devant un ordinateur Et si tu as des questions je reste à ta disposition

Bonjour,

J'ai ajouté les mois et les encadrés pour les trimestres sur la feuille Print.

J'utilise la ligne 3, donc au début de la macro PrintM, j'ai dû modifier le champ à effacer pour la ligne 3 au lieu de 4.

Je suis fatigué. J'ai outre-passé la gestion des années bissextiles. Une fois au 4 ans, la fin de l'encadré Février est décalée ... du même élan, le début de l'encadré de Mars est lui aussi décalé.

Si c'est un drame, une fois reposé, je pourrais regarder ce détail.

Voir si ça convient...

Gelinotte

6edlede-pintv3.xlsm (209.09 Ko)

Bonjour gelinotte,

Super boulot c'est exactement ca que je désirais reste éventuellement à voir pour le petit décalage des année bissextiles, mais c'est secondaire. je me demandais si on pouvais pas juste faire une condition par rapport au nombre de colonne remplie?

As tu des idées pour gérer le(s) masque(s) également?

Car me semble lourd à gérer pour pas grand chose. de mon coté j'essaie de voir quelle sont les possibilités de manœuvres et sur combien de masque je dois partir.

En tous cas merci et bravo

Bonjour,

As tu des idées pour gérer le(s) masque(s) également?

Peux-tu me rafraîchir la mémoire; mon café du matin n'a pas encore monté jusqu'au bidule que me sert de cerveau.

En tant que gelinotte, celui-ci est relativement petit.

Gelinotte

Bonjour,

Pour l'année bissextile des encadrés de la feuille Print.

Remplace le MTrim1 dans le module5 par ceci...

Sub MTRim1()
    Range("B3:AE3").Select
    Call LesBordures
    If Worksheets("Param").Range("B1") Mod 4 = 0 Then  ' si l'année est divisible par 4 sans reste
        Range("AF3:BH3").Select
        Call LesBordures
        Range("BI3:CM3").Select
        Call LesBordures
    Else
        Range("AF3:BG3").Select
        Call LesBordures
        Range("BH3:CL3").Select
        Call LesBordures
    End If
End Sub

Par contre, il y aura encore une erreur en février 2400 (qui ne sera pas une année bissextile). Mais là, à moins d'un miracle, on ne sera plus là pour se le faire reprocher.

Gelinotte

Très bonne idée pour la division et plus simple que mon idée de base. je test ca mais il devais pas y avoir de problème.

je te met un petit exemple des anciens masques qui me pourrissait les fichiers.

Je vois avec la Qualité pour les réduire à 1 avec un titre dynamique ce qui arrangerai bien mes affaires.

Jette juste un coup d'oeuil, mais normativement ( obligation légale) il me faut le logo, le titre et la ref avec maintenant sans doute un code barre , Franchement, y a pas déjà assez de problème comme ca à gérer sur le fichier pour se rajouter des contraintes à la noix.

5masque.xlsm (113.36 Ko)

Bonjour,

Pour te permettre d'élaborer les débuts de feuilles "Print", ce que tu nommes "les masques", j'ai dynamisé le code d'impression.

Au tout début du module1, j'ai ajouté : Public Const Lig As Byte = 8. Ce qui veut dire que les constructions sur la/les feuilles "Print" commenceront à la ligne 8.

Supposons que tu préférerais qu'ils commencent à la ligne 11, tu n'as qu'à faire le changement à un seul endroit, soit la valeur de la variable publique ( Public Const Lig As Byte = 11 ).

Si tu utilises plusieurs feuilles "Print", exemple : "Print1", Print2", etc. pour les différentes données; on dynamisera le choix de la feuille.

Pour le code-à-barres : si tu as les codes-à-barres stockées en valeurs, il est possible d'utiliser une police spéciale, qui affichera la valeur en code-à-barres, afin de dynamiser selon les impressions.

J'ai vu cela dans une autre discussion. Mais, il faut que je retrouve et m'y familiarise.

Gelinotte

9edlede-pintv5.xlsm (267.64 Ko)

Bonsoir,

J au malheureusement pas eu la réponse du service qualité. Je vais regarder ta trame en espérant avoir une réponse prochainement, pour avancer dans la bonne direction.

Je valide le sujet, j en ouvrirai un spécialement pour l'insertion des masques. Un grand merci pour pour toute l aide apportée

À bientôt

Rechercher des sujets similaires à "mise page impression calendrier trimestriel"