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
 

Dranreb

XLDnaute Barbatruc
Mettez un maximum de chose dans le tableau TR. L'accès au coup par coup aux cellule c'est quand on ne peut pas faire autrement, pour les formats. Là je pens que vous avez un problème parce que vous définissez LTot = Rng.Rows.Count + 1 et beaucoup plus bas jusqu' à Rng(LTot + 3, 1).Value = "• couleur: couleur de l'objet" ce qui dépasse de 2 lignes la dernière plage qui a été définie par PlageSuivante(TR, LR). Mettez tout ça ensemble avant de le faire et incrémentez s'il y a lieu LR pour que vos textes y soient contenus.
 

bennp

XLDnaute Occasionnel
Comme je dois mettre ces phrases en dessous, je me suis dit qu'il fallait d'abord incrémenter le tableau puisque je ne sais pas combien de ligne j'aurai dans le tableau. Donc si je l’intègre avant LTot = Rng.Rows.Count + 1, ça veut dire que je dois utiliser que TR et non LTot. Mais du coup je ne sais pas à quelle ligne je devrais l'intégrer...
si je copie les phrases dans mon tableau d'origine, je ne pourrais pas les copier il me semble...

Ps : comme toujours j'essaie d'y comprendre quelque chose mais ça reste très flou... :)
 

bennp

XLDnaute Occasionnel
ok merci j'ai réussi :

VB:
   TE = Feuil3.ListObjects(1).Range.Value
   ReDim TR(1 To 50, 1 To 26)
   InitialiserMiseEnPage Feuil2.[B134], 39, 5
LE = 1
    Do:
    TR(1, 1) = UCase("Liste des outils")
    LR = 6: For C = 1 To 4
      TR(LR - 4, Choose(C, 1, 24, 25, 26)) = Choose(C, "Outil", "position", "taille", "couleur")
      Next C
      Do: LR = LR + 1
      For C = 1 To 4
         TR(LR - 4, Choose(C, 1, 24, 25, 26)) = TE(LE, C)
         Next C
      LE = LE + 1: Loop Until LE > UBound(TE, 1)
     
    Set Rng = PlageSuivante(TR, LR)
    LTot = Rng.Rows.Count + 1
    Rng(LTot - 3, 1).Value = "•    Position : droit ou plat"
    Rng(LTot - 2, 1).Value = "•    Taille : en cm"
    Rng(LTot - 1, 1).Value = "•    couleur : couleur de l'objet"
    Rng(LTot, 1).Value = "•    couleur2 : couleur de l'objet"
   
   

   Loop Until UBound(TE, 1)
 

bennp

XLDnaute Occasionnel
Bonjour,

Je n'avais pas vu le message précédent... Je n'ai pas saisi comment écrire dans TR. Je ne suis pas sûr que ça fasse accélérer la macro surtout avec la mise en page. Dites moi si je me trompe.

J'ai une autre demande du même genre :

Je souhaiterais ajouter un paragraphe supplémentaire "Images particulières" en fonction de telle ou telle case cochée :

upload_2018-10-31_15-26-31.png


Si la case est cochée, afficher le texte et l'image associée :

VB:
     ReDim TR(1 To 100, 1 To 26)
  
    LE = 2
    TR(1, 1) = UCase("Images particuliéres")
   Set Rng = PlageSuivante(TR, LR)
   LTot = Rng.Rows.Count + 1
  
    If Range("AC27") = True Then
    Range("AF27").Copy
    Rng(4, 25).PasteSpecial xlPasteValues
    Rng(6, 24).activSheet.Pictures("arbre").Value
   
    End If

J'ai donné un nom aux images mais ça n'a pas l'air de fonctionner, je sais pas si je dois ajouter les images dans ImageOgject avnt...

Tu sais pourquoi ça ne fonctionne pas ?

Merci

Ben
 

Pièces jointes

  • MiseEnPageBennp (2).xlsm
    5.5 MB · Affichages: 13

bennp

XLDnaute Occasionnel
OK par contre si je remplace activesheet par worksheet, ça fonctionne pas. Je sais pas si c'est une bonne idée de charger les images en objet... Je sais pas si tu te souviens mais la taille des lignes ne peut pas être modifiée pour éviter que le saut de page se fasse bien. Je sais pas non plus si l'image doit être à l'intérieur de la cellule pour quelle soit affichée. Tu pourrais me proposer un code ?

Merci d'avance
 

bennp

XLDnaute Occasionnel
J'ai essayé ça :
VB:
     ReDim TR(1 To 100, 1 To 26)
  
    LE = 2
    TR(1, 1) = UCase("Images particuliéres")
   Set Rng = PlageSuivante(TR, LR)
   LTot = Rng.Rows.Count + 1
   Sheets("Feuil2").Shapes("Image 5").Copy: Rng.Workseet.Paste: With Rng.Worksheet.Shapes(Rng.Worksheet.Shapes.Count): .Left = Rng(6, 8).Left:
   End With

ça bug... je sais pas si je dois remplir les top, right, etc

Peut-etre que je dois mettre un Rbg(x,y) à plusieurs endroits ?

Merci de ton aide en tout cas !!
 

bennp

XLDnaute Occasionnel
J'ai bien sûr déjà essayé l'enregistreur avant mais ça ne m'aide pas beaucoup puisque je souhaite afficher une image à un endroit qui dépend d'une variable et en plus cela doit être affiché seulement si la case est cochée... Je me trompe ?
Même quand je fais juste un simple copier coller, je ne retrouve pas la fonction shape.
 

bennp

XLDnaute Occasionnel
Ok, il manquait juste une lettre :

VB:
     ReDim TR(1 To 100, 1 To 26)
  
    LE = 2
    TR(5, 1) = UCase("Images particuliéres")
   Set Rng = PlageSuivante(TR, LR)
   LTot = Rng.Rows.Count + 1
   If Range("AC27") = True Then
   Sheets("Feuil2").Shapes("Image 5").Copy
   Rng.Worksheet.Paste
   With Rng.Worksheet.Shapes(Rng.Worksheet.Shapes.Count)
   .Left = Rng(10, 21).Left
   End With
    Range("AF27").Copy
    Rng(10, 8).PasteSpecial xlPasteValues
   
    End If
par contre je ne comprends pas pourquoi "arbre" et l'image ne sont pas sur la même ligne.

Autre chose, je souhaite que le texte et l'image apparaissent seulement si la case est cochée. Mais si la 1ére n'est pas cochée, je veux que les informations soient remontées et pas qu'il y ait de l'espace. Je pense que si je fais comme ça , ça ne fonctionnera pas. Doit-on passer par un tableau intermédiaire pour çà ?

Merci

BEn
 

Discussions similaires