Problème de macro

Résolu
Bonjour,
J'ai un problème avec cette macro que je n'arrive pas a mettre en place
Je souhaite imprimer un onglet de A1 à AD variable
Est-ce que vous pouvez me dire ce qui ne va pas?

Sub Impression1()
Range("A1:AD").CurrentRegion.Select
ActiveSheet.PageSetup.PrintArea = Range("A1").CurrentRegion.Address
ActiveWindow.SelectedSheets.PrintPreview
End Sub

Je vous remercie

Configuration: Windows / Firefox 65.0

14 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonsoir

    Merci pour tes conseils je suis parvenu à faire à peu près ce que je voulais.
    Bonne continuation.
    Cordialement
    1. Bonjour eric
      Merci pour ta réponse je vais essayer de la mettre en place.
      Crdlt
      1. Contributeur
        Bonjour,

        c'est plus pour te donner l'occasion d'apprendre à te débloquer par toi même. Reviens si difficultés.
        eric
    2. Bonsoir eric

      Ok pour la formule que tu m'as donné je l'ai modifié comme suit en gras et cela ne fonctionne pas J'aimerais avoir le moins de page possible. Pourquoi?
      Sub Impression1()
      With Sheets("poste")
      .PageSetup.PrintArea = .Range("A1:AD1").Resize(Sheets("poste").Cells.Find("*", , , , xlByRows, xlPrevious).Row).Address
      .PrintPreview
      End With
      Orientation=xlLandscape
      Zoom=80
      End Sub

      Crdlt
      1. Contributeur
        Bonjour,

        met-toi en enregistrement de macro, fait tes 2 actions et arrête l'enregistrement.
        Tu auras l'essentiel des méthodes, propriétés et paramètres que tu as besoin, et même beaucoup plus. Trop...
        Recherche les 2 propriétés qui t'intéressent. Plus qu'à les insérer correctement dans le With. Fait F1 dessus pour comprendre son fonctionnement, regarde comment la macro l'a utilisé et ce que je t'ai mis comme code.
        eric
    3. Bonjour eric

      Cela ne fonctionne toujours pas je te mets un exemple
      sur l'aperçu avant impression il n'y a qu'une cellule qui apparait A1
      https://mon-partage.fr/f/RoHA0x81/
      Si tu peux faire quelque chose cela m'arrangerait bien
      Merci pour ton aide
      Crdlt
      1. Contributeur
        Bien évidemment que ça ne fonctionne pas. Je me suis basé sur ce que tu avais écrit : Range("A1").CurrentRegion
        Hors A1 est isolée, et tes saisies dispersées aussi...
        Sub Impression1()
            With Sheets("poste")
                .PageSetup.PrintArea = .Range("A1:AD1").Resize(Sheets("poste").Cells.Find("*", , , , xlByRows, xlPrevious).Row).Address
                .PrintPreview
            End With
        End Sub

        Toujours déposer un modèle exact si on ne sait pas adapter.
        eric
    4. Contributeur
      Bonjour, salut Michel,

      tiens, j'ai dû oublier de valider la modif hier... La voici :
      Sub Impression1()
          With Sheets("poste")
              .PageSetup.PrintArea = Intersect(.Range("A1").CurrentRegion, .Range("A:AD")).Address
              .PrintPreview
          End With
      End Sub

      eric

      1. Contributeur
        Bonjour Eric

        Pour JC80

        Tu vois, gamin, j'en ai 73 bien entamé comme quoi....
        1. Bonjour eric
          Merci pour ta réponse.
          Mes boutons sont sur une feuille autre que les feuilles à imprimer
          exemple bouton1 feuille "ouvrir" feuille a imprimer "poste"
          1. Contributeur
            Bonjour à tous,

            au plus simple :
            Sub Impression1()
                ActiveSheet.PageSetup.PrintArea = Intersect(Range("A1").CurrentRegion, Range("A:AD")).Address
                ActiveWindow.SelectedSheets.PrintPreview
            End Sub

            eric

            1. Bonjour eriiic
              me suis trompé de sujet
              Désolé
          2. Merci pour toutes tes réponses.
            J'ai 70 ans et je ne suis pas là pour me faire engue...
            1. Contributeur
              C'est pas vrai de lire des messages çà !!!!!

              décourageant...
              Bon WE

              1. Toujours un bug ligne3

                Sub Impression1()
                Range("A1:AD72").CurrentRegion.Select
                DerLig = Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
                ActiveSheet.PageSetup.PrintArea = Range("A1:AD" & DerLig)
                ActiveWindow.SelectedSheets.PrintPreview
                End Sub
                1. j'ai un bug sur la 3è ligne
                  Sub Impression1()
                  Range("A1:AD72").CurrentRegion.Select
                  Derlig = Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
                  ActiveSheet.PageSetup.PrintArea = Range("A1:AD&derligne").CurrentRegion.Address
                  ActiveWindow.SelectedSheets.PrintPreview
                  End Sub
                  1. Contributeur
                    relis ce que je t'ai écris !!!!!!!

                    range("A1:AD" & derlig) et non Range("A1:AD&derligne")

                    et pourquoi
                    Range("A1:AD72").CurrentRegion.Select

                    si tu connais la dernier ligne ALORS pourquoi programmer derlig ?....
                2. Bonjour michel
                  Merci pour ta réponse
                  Qu'entends-tu par défini AD ?
                  Ma plage commence en A1 jusque la colonne AD ,mais je ne peux pas mettre de cellule ,puisque la
                  longueur de la plage est variable.
                  Crdlt
                  1. Contributeur
                    Bonjour

                    comment est défini AD ?
                    1. Contributeur
                      il faut que tu définisse la hauteur de ton tableau
                      par ex:
                      Range("A1:AD45")

                      Pour déterminer la hauteur en se basant paer exemple sue la colonneA

                      Derlig=Colummns("A").find(what:="*",searchdirection:=xlprevious).row

                      et tu auras
                      range("A1:AD" & derlig)