Excel Macro - Dynamique De La Zone D'Impression
J'ai une table avec un nombre fixe de colonnes, mais le nombre de lignes varie de semaine en semaine.
Est-il une macro, je peux créer pour définir la zone d'impression automatiquement de ce tableau?
Vous devez vous connecter pour publier un commentaire.
Je voudrais combiner dynamiquement, un redimensionnement de la plage nommée avec une méthode VBA.
D'abord créer une plage nommée, Maplagenommée: (en Supposant que le tableau commence à $1$, et votre tableau comporte des en-têtes)
Puis il suffit d'exécuter une ligne de VBA:
Suffit d'utiliser ce code simple:
Si vous êtes désireux d'imprimer la fiche complète toujours, vous pouvez en fait tout simplement effacer la zone d'impression et il sera, par défaut, le montant de la feuille qui est rempli avec des données. Si vous êtes désireux de ne pas cacher certaines colonnes, wtfsven la réponse est parfait.
Je suppose que c'est une jolie réponse tardive...
La solution ci-dessus ne fonctionne pas pour moi dans Excel 2007 j'ai donc utilisé
Cela peut sembler compliqué, mais c'est la seule chose que ça a fonctionné pour moi
ActiveSheet.PageSetup.PrintArea = "Maplagenommée", comme proposé ci-dessus par Stephen Collins ne fonctionne pas pour moi.
Mais si j'ai tapé une version légèrement modifiée:
ActiveSheet.PageSetup.PrintArea = Maplagenommée.Adresse alors qu'il fonctionne parfaitement dans mon contexte.
J'ai eu de l'Application.ReferenceStyle = xlR1C1 activé et pas xlA1.
Remarque: ActiveSheet.PageSetup.PrintArea = Maplagenommée.Adresse(ReferenceStyle:=xlR1C1) ne fonctionnerait pas pour moi.
De la même façon,
ActiveSheet.PageSetup.PrintArea = StartColumn & StartRow & ":" & EndColumn & endrow sur comme proposé ci-dessus par Bhanu Pratap fonctionne en effet très bien, la 1ère fois. Bu pas si facile à gérer par programmation (lettres de colonne).
Mais en utilisant "R" & StartRow & "C", & StartColumn & ":" & "R" & endrow sur & "C", & EndColumn --- ne fonctionne pas pour moi non plus. Donc, cohérente.
Regardant https://docs.microsoft.com/en-us/office/vba/api/excel.pagesetup.printarea
il affirme que "vous utilisez la propriété de l'Adresse de retour d'un A1 de style de l'adresse."
Ainsi, il semble être un devrait VBA comportement de ne pas utiliser xlR1C1 alors qu'il serait beaucoup plus facile à utiliser par programmation.
Mon simple moyen de contourner cela:
Ensemble Maplagenommée = Worksheets(i_sheet_idx).Range(Cells(StartRow, StartColumn), les Cellules(endrow sur, EndColumn)) -- en utilisant les mêmes variables comme suggéré ci-dessus par Bhanu Pratap.
Alors
ActiveSheet.PageSetup.PrintArea = MyNameRange.De l'adresse ' qui fait le travail pour moi.
Donc, je peux par programme jouer avec le début/la Fin de lignes/Colonnes facilement.
À l'aide d'offset comme suggéré ci-dessus devrait fonctionner aussi pour changer de gamme, mais ceci est indépendant de la programmation de la difficulté rencontrée ici en VBA pour spécifier la plage d'adresses de manière VBA accepte d'avaler sans erreur. Je ne voudrais pas compter l'étrange & peu de VBA erreur que j'ai eu sur ces essais. Je n'ai pas utiliser VBA souvent & ne programmez jamais le contraire (d'où la lutte au-dessus). Le but est d'imprimer automatiquement, intelligemment & de façon répétée un grand nombre de pièces d'une grande feuille de travail à la suite d'un motif.
NB: peut-être aucun lien, que j'ai rencontré dans la phase de débogage, sur l'PageSetup.PrintArea ligne - comme ci-dessus, un phénomène étrange où même si aucune erreur (donc le code suivant plus tard, après avoir relancer un s'attendait & chemin d'accès contrôlé), mon code de saut - parfois - à totalement différente d'une sub ou une fonction dans un autre classeur sans raison (j'ai un autre classeur personnel de stocker un certain nombre de travaux de macros dans plusieurs modules). Il arrive 4 fois dans les tests. J'ai essayé de trouver des événements susceptibles de déclencher ce mais ne pouvait pas en trouver un. Parfois c'est le même sub/function être déclenchée, il y a eu un autre, sans lien logique. Mais j'ai constaté que j'avais vu la même fonction déclenchée dans une autre situation (voir la base de code ci-dessous), sans une bonne raison. Donc, quelque chose doit arriver au niveau de l'application. Dans ce "petit morceau de code" juste écrit pour le test ci-dessus, j'ai introduit plus tard, un gestionnaire d'erreur pour attraper err.au cas où un problème surviendrait, mais bien sûr, il ne risque plus de se reproduire.
Je suppose que la fermeture & redémarrer Excel (2013) devrait corriger cette erreur. Ce qui m'est arrivé avant une fois dans Excel 2010. Un pointeur allez noix, mais avec un peu d'insistance, une répétition de la folie qui suppose une certaine logique derrière. Bizarre.
Ici est la fonction la plus souvent déclenchée dans un autre module dans un autre classeur (tout en n'étant pas activé par programme à tous, je le répète): il ne fait pas de sens logique pour moi mais il en est:
Fonction HLink de nombres aléatoires(rng Comme Range) as String
extraire l'URL du lien hypertexte
Si rng(1).Des liens hypertextes.Comte HLink = rng.Liens hypertexte(1).Adresse
Fin De Fonction
Les autres sous-activation ne pas faire plus de sens apparent.