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

  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)
  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. 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. 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. Contributeur
        C'est pas vrai de lire des messages çà !!!!!

        décourageant...
        Bon WE

        1. Merci pour toutes tes réponses.
          J'ai 70 ans et je ne suis pas là pour me faire engue...
          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. 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 Eric

              Pour JC80

              Tu vois, gamin, j'en ai 73 bien entamé comme quoi....
              1. 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. 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
                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
                  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
                4. Bonsoir

                  Merci pour tes conseils je suis parvenu à faire à peu près ce que je voulais.
                  Bonne continuation.
                  Cordialement