Trouver les sauts de page

Trouver les sauts de page - VB/VBA/VBS - Programmation

Marsh Posté le 27-01-2010 à 09:27:42    

:hello:  
 
Salut à tous !
 
J'ai une feuille Excel avec beaucoup de texte et des tableaux entre mes paragraphes.
Ma mise en page est définie pour qu'il n'y ait qu'une page en largeur et vide en hauteur... donc mon document a ses pages l'une au-dessus de l'autre...
Pour le moment, rien d'extraordinaire me direz-vous !  :p  
Pourtant, ma feuille contient des tableaux et je ne souhaite pas qu'ils soient coupés par un saut de page...
Et je cherche donc une faire une procédure qui va détecter si un saut de page coupe l'un de mes tableaux et déplacera le saut de page juste au-dessus du tableau...
 
Auriez-vous une solution ?
 
Merci d'avance...


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 27-01-2010 à 09:27:42   

Reply

Marsh Posté le 27-01-2010 à 11:16:48    

Salut à toi, et à tous aussi
 
J'ai même 3 solutions, mais...
 
- la 1° serait de mettre tout ça dans Word, où le traitement des sauts de page par macro est bcp plus simple.  (et à mon sens la mise en page meilleure pour ce genre d'exercice...)
 
- la 2°: si il n'y a pas trop de pages, afficher ton classeur en mode sauts de pages, tout vérifier, et repousser les mauvais sauts à la main.
 
- la 3°: supprimer tous les sauts de pages avec cette formule:
 
                                  ActiveSheet.ResetAllPageBreaks    
 
puis définir une routine qui ajoute un saut toutes les x lignes sauf si :    activecell <> ""
 
et sans dépasser z lignes, sinon remonter à la ligne vide précédente pour mettre un saut.
 
etc.
 
 
Mettre un saut:
       ActiveSheet.HPageBreaks.Add before:=ActiveCell  (ou after)
   
 
Repousser le saut i     (qui peut prendre la valeur de i ds une boucle For i = 1 To zzz :
     
         Set ActiveSheet.HPageBreaks(i).Location = ActiveCell 'ou Range("A15" ), ou ailleurs
 
 
Voilà, joue avec ça, à moins que quelqu'un ne passe te donner une idée autre??
 
Bye

Message cité 1 fois
Message édité par Laoo le 27-01-2010 à 11:20:22
Reply

Marsh Posté le 27-01-2010 à 11:25:13    

Laoo a écrit :

Salut à toi, et à tous aussi
 
J'ai même 3 solutions, mais...
 
- la 1° serait de mettre tout ça dans Word, où le traitement des sauts de page par macro est bcp plus simple.  (et à mon sens la mise en page meilleure pour ce genre d'exercice...)
 
- la 2°: si il n'y a pas trop de pages, afficher ton classeur en mode sauts de pages, tout vérifier, et repousser les mauvais sauts à la main.
 
- la 3°: supprimer tous les sauts de pages avec cette formule:
 
                                  ActiveSheet.ResetAllPageBreaks    
 
puis définir une routine qui ajoute un saut toutes les x lignes sauf si :    activecell <> ""
 
et sans dépasser z lignes, sinon remonter à la ligne vide précédente pour mettre un saut.
 
etc.
 
 
Mettre un saut:
       ActiveSheet.HPageBreaks.Add before:=ActiveCell  (ou after)
   
 
Repousser le saut i     (qui peut prendre la valeur de i ds une boucle For i = 1 To zzz :
     
         Set ActiveSheet.HPageBreaks(i).Location = ActiveCell 'ou Range("A15" ), ou ailleurs
 
 
Voilà, joue avec ça, à moins que quelqu'un ne passe te donner une idée autre??
 
Bye


 
Merci de tes réponses !
 
Pour la première réponse, je te dit NON car je travaille sur un Excel distant utilisé via une application tierce... donc pas d'export possible vers Word.
Pour la deuxième réponse, OUI mais je souhaiterais que cette gestion des sauts de page soit automatique car le fichier Excel va être utilisé par un certain nombre de personnes.
Pour la troisième réponse, je pense effectivement créer une routine calculant la hauteur de chaque ligne et insérer un saut de page au moment où la somme de ces hauteurs dépasse le maximum... et marquer les parties avec des tableaux et ainsi insérer le saut de page juste avant...
 ;)  
 
En fait, je pensais qu'il existait une manière sous VBA de parcourir les lignes une à une et de déterminer s'il y a un saut de page...
;)


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed