XL 2016 Passer à la page suivante automatiquement

bennp

XLDnaute Occasionnel
Bonjour,

j'ai un tableau créé en macro, et parfois il se retrouve à la jonction de 2 pages. Quelqu'un aurait une idée pour déplacer automatiquement le tableau à la page suivante ?

Merci
 

bennp

XLDnaute Occasionnel
Bonjour @Dranreb
Mon insertion de tableau commence à la ligne 131, par contre ayant déjà pas mal d'information au dessus, la zone d'impression n'est plus bonne, j'ai essayé de modifier mais pas réussi. Autre chose, à la suite de ces tableaux j'ai d'autres informations et d'autres tableaux différents à insérer, pourrais-tu donner des explications sur les codes pour que j'essaie de reproduire pour les autres tableaux ?

Merci beaucoup
 

Pièces jointes

  • MiseEnPageBennp (1).xlsm
    2.9 MB · Affichages: 15

Dranreb

XLDnaute Barbatruc
Bonjour.
La zone d'impression est définie par TerminerMiseEnPage. Elle va de la cellule spécifiée au InitialiserMiseEnPage jusqu'à la dernière cellule à laquelle est arrivé PlageSuivante d'après les tableaux qui lui ont été spécifiés successivement. Vous n'allez quant même pas la commencer à partir de la ligne 131 ?!!… à quoi ça sert ?
Si vous voulez pouvoir spécifier des tableaux TR de 25 colonne au lieu de 11 il faut d'abord corriger le Redim TR en conséquence.
Si vous avez d'autres tableaux à mettre dans la même zone d'impression, ce n'est pas impossible. C'est curieux. Il faut les préparer dans TR
et continuer les Set Rng = PlageSuivante(TR, LR)
 
Dernière édition:

bennp

XLDnaute Occasionnel
les tableaux commencent à partir de la ligne 131 mais j'ai d'autres info qui viennent avant mais qui n'on pas eu besoin de macro. D'ailleurs je souhaite comencer la macro en C31, ça fonctionne, par contre je voudrais que mes colonnes "Épais", "Chiffre", "Clé" soit en Y Z et AA (23, 24 et 25) mais en modifiant, ça ne fonctionne pas
 

Dranreb

XLDnaute Barbatruc
Si la zone d'impression doit toujours commencer en A1, initialisez LgnPgBk = 1 au lieu de Cel.Row et à la fin
Wsh.PageSetup.PrintArea = Range(Wsh.[A1], CelCou.Offset(0, NbColMax - 1)).Address

Quelles est la 1ère chose que vous ne comprenez pas ?
 

Dranreb

XLDnaute Barbatruc
Je ne vais pas commenter chaque instruction. J'estime que ça rend la programmation plus lourde et le code encore plus obscur, parce qu'il faut comprendre les commentaires en plus de comprendre les instructions.
Mes codes sont généralement concis. Leur incompréhension résulterait de lacunes dans vos notions de base de VBA. Alors dites moi ce que vous ne comprenez pas, quitte à mettre vous même des commentaires après pour vous rappeler de certains détails, après que je vous les aurai expliqués.
 

bennp

XLDnaute Occasionnel
les voici :
ReDim TS(1 To 1000, 1 To 5)
For LE = 2 To UBound(TE, 1)
If Not IsEmpty(TE(LE, 2)) Then
LS = LS + 1
TS(LS, 1) = TE(LE, 1)
TS(LS, 2) = TE(LE, 2): End If

InitialiserMiseEnPage Feuil2.[C131], 39, 5
LS = 1
Do: Nom = TS(LS, 1): TR(1, 1) = Nom
LR = 3: For C = 1 To 4

Next C
Do: LR = LR + 1
For C = 1 To 4
TR(LR, Choose(C, 1, 23, 24, 25)) = TS(LS, C + 1)
Next C
LS = LS + 1: Loop Until TS(LS, 1) <> Nom
Set Rng = PlageSuivante(TR, LR)
LTot = Rng.Rows.Count + 1

ça serait déjà un bon début pour moi... effectivement j'ai beaucoup de lacunes en VBA
Je verrai plus tard pour les explications de mise en page

Merci beaucoup
 

Dranreb

XLDnaute Barbatruc
Vous pouvez aussi mettre le curseur sur un élément du langage et utiliser la touche F1 pour avoir de l'aide.
L'instruction Redim affecte ou réaffecte l'espace de stockage aux variables tableaux dynamiques, c'est à dire sans dimension précisée entre les parenthèses lors de leur déclaration en précisant les valeurs d'indices limites valide.
L'instruction For Variable = ValeurDébut To ValeurFin inaugure une boucle, c'est à dire un groupe d'instruction exécuté répétitivement, la Variable y étant à la ValeurDébut au 1er passage et augmentée de 1 à chaque autre passage jusqu'à ce qu'elle dépasse la ValeurFin.
Ubound(Tableau, N) permet de connaitre la limite maxi de la Nième dimension du Tableau.
L'instruction If Condition Then inaugure un bloc d'instruction qui n'est exécuté que si condition n'a pas le valeur 0 ou False. IsEempty permet de Savoir si une expression Variant n'a pas la valeur vide
Not devant une expression inverse sa valeur.
Le signe '=' en 2ième position d'une instruction marque une affectation de l'expression à sa droite à la variable ou propriété spécifiée à sa gauche.
Les 3 paramètres à spécifier à la Sub InitialiserMiseEnPage lors de son invocation sont expliqués au début de celle ci dans mon module MMiseEnPage
L'instruction Do sert aussi à inaugurer une boucle, mais contrairement à For le bloc doit se terminer par une instruction Loop et non Next.
Le ':' est un simple séparateur d'instructions lorsqu'on a décidé d'en mettre plusieurs sur une même ligne.
L'instruction Set sert à affecter à une variable objet une expression exemplaire de cet objet.
La propriété Rows d'un objet Range représente les lignes entières de cet objet.
Une propriété Count donne toujours le nombre d'éléments de l'objet.
 
Dernière édition:

bennp

XLDnaute Occasionnel
Bonjour,

je souhaite centrer horizontalement le texte mais ça ne fonctionne pas

Rng(Cells(3, 23), Cells(LTot, 25)).Select
Selection.HorizontalAlignment = xlCenter


upload_2017-12-29_12-6-23.png

c'est la case B166, etc qui est centrée...
merci
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Ah non, n'utilisez plus Select ni Selection.
Éventuellement: Range(Rng(3, 23), Rng(LTot,25)).HorizontalAlignment = xlCenter
Ma préférence irait plutot à Rng(3, 23).Resize(LTot-2, 3).HorizontalAlignment = xlCenter

Remarque: C'est vrai qu'il y a un terme Item sous-entendu et assumé dans l'expression Rng(3, 23) c'est en fait Rng.Item(3, 23) que est aussi Rng.Cells(3, 23).
Ne pas confondre objet Range et méthode Range, ce sont deux choses différentes. Seule la méthode Range admet deux paramètres Range la délimitant.
Mais la méthode Range renvoie un objet Range, bien sûr. Tout comme ma Function PlageSuivante d'ailleurs, qui le fait exactement par le même principe.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG