IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

zone d' impression pour pdf


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 177
    Par défaut zone d' impression pour pdf
    Bonsoir les maitre du vba

    J'ai encore besoin de vos lumieres: Mon probleme est le suivant
    je genere sous pdf certaines feuilles d'un classeur (feuille nommées "lot "et n°).
    grâce au tutoriels, j'ai réussi à le faire. Mais en fait, je m'aperçois que ces tableaux qui sont tous faits de la même façon ne prennent qu'une demi page. Aussi, je souhaiterai que si l'index du lot est pair alors le tableau vienne se mettre sous le lot impair avant l'impression sous pdf. en fait, je voudrais deux lot par page un lot impair et un lot pair. Je pense à if mod 2=0 then le tableau vient se mettre sous le numéro impair avant impression.Par contre cette "fusion " ne concerne que l'impression sous VBA. Chaque onglet doit rester.

    Est ce possible et pouvez vous m'aider?

    Le tableau est toujours sur la plage B2 à L27 de chaque onglet.

    Cordialement
    lps02

    Le code que j'ai pour le pdf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub impression_cahier()
    Dim sNomFichierPDF As String
    Dim i As Long, Cpt As Long
    Dim Ar() As String
     
        sNomFichierPDF = ThisWorkbook.Path & "\" & "cahier2012.pdf"
     
        Cpt = 0
        For i = 1 To ThisWorkbook.Sheets.Count
            If Left(Sheets(i).Name, 4) = "lot " Then
                ReDim Preserve Ar(Cpt)
                Ar(Cpt) = Sheets(i).Name
                Cpt = Cpt + 1
            End If
        Next i
        If Cpt = 0 Then Exit Sub
     
        Application.ScreenUpdating = False
        Sheets(Ar).Select
     
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sNomFichierPDF _
            , Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=True
     
        Sheets("Feuil1").Select
        Application.ScreenUpdating = True
    End Sub

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, utilise une feuille intermédiaire, visible ou pas, pour faire ce genre de regroupement avant de générer le Pdf.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 177
    Par défaut
    Bonsoir Philippe

    C'est ce que je pensai faire. je pensai qu'il y avait plus simple.

    Qu'entends tu par visible ou pas?,

    Cordialement

    lps02

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 177
    Par défaut toujours des soucis
    Bonjour les maîtres du vba

    Fort de vos precieux conseils, j'ai créé le code suivant qui regroupe deux onglets en un avant impression en pdf.

    Il fonctionne mais :
    1)Lorsque le nombre de lot est impair, il ne me génère pas de pdf pour le lot qui reste
    2) il me genere un pdf por chaque regroupement alors que je voudrai un unique pdf (comme dans le code donné par kiki29) (voir mon premier message.

    Je bloque donc sur ces deux soucis. Pouvez vous m'aider??

    Cordialement

    lps02

    Mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    Sub meme_chose()
    Dim a As Long
    Dim sNomFichierPDF As String
    Dim i As Long, Cpt As Long
    Dim Ar() As String, c As String
     
     
    For a = 1 To ThisWorkbook.Sheets.Count
     
    If Left(Sheets(a).Name, 4) = "lot " Then
    b = CInt(Right(Sheets(a).Name, Len(Sheets(a).Name) - 4))
            If b Mod 2 <> 0 Then
    Sheets("lot " & b).Range("B2:L27").Copy
            With Sheets("Feuil2")
        .Range("B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        .Range("B2").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            End With
    Else
     Sheets("lot " & b).Range("B2:L27").Copy
         With Sheets("Feuil2")
        .Range("B35").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        .Range("B35").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            End With
     
     
            With Sheets("Feuil2")
        .PageSetup.PrintArea = "$B$2:$L$60"
        .PageSetup.Zoom = False
        .PageSetup.FitToPagesTall = 1
        .PageSetup.FitToPagesWide = 1
       sNomFichierPDF = ThisWorkbook.Path & "\" & "lot " & .Range("E2").Value & "et" & .Range("E35").Value & ".pdf"
        c = .Range("E2").Value & "et" & .Range("E35").Value
        .Name = "mise en page " & c
            End With
     
     
     
     
     
       Cpt = 0
        For i = 1 To ThisWorkbook.Sheets.Count
            If Left(Sheets(i).Name, 13) = "mise en page " Then
                ReDim Preserve Ar(Cpt)
                Ar(Cpt) = Sheets(i).Name
                Cpt = Cpt + 1
            End If
        Next i
        If Cpt = 0 Then Exit Sub
     
        Application.ScreenUpdating = False
        Sheets(Ar).Select
     
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sNomFichierPDF _
            , Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=True
     
           Application.CutCopyMode = False
     
      Sheets("mise en page " & c).Name = "Feuil2"
     
            Sheets("Feuil2").Range("B2:L60").Clear
    End If
      End If
      Next a
     
     
        Sheets("ACCUEIL").Select
        Application.ScreenUpdating = True
     
    End Sub

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 177
    Par défaut
    Bonjour le forum

    Apres recherche, j'ai pu trouver le code suivant qui me genere donc le pdf de chaque onglet nommé "lot " groupé par deux et le dernier onglet si le nombre d'onglet nommé "lot " est impair.
    Ce code semble marcher

    Reste la question pour ne generer qu'un seul onglet et à ce titre j'ai une question : Quand on pase par des tableaux, en vba faut il que les feuilles concernées soient toujours présente dans le fichier excel pour pouvoir les utiliser à la fin?,

    (Voir mon code précédent ou une erreur type 9 apparaissait à chaque fois à la ligne 55 sheets(Ar).Select)
    A VOUS LIRE J'OUVRIRAI SANS DOUTE UN SUJET LA DESSUS

    Cordialement
    lps02

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    Sub essai_impression()
    '
    ' Essai sur les impressions du cahier (lot groupes par 2)
    '
     
     
     
    Dim a As Long
    Dim sNomFichierPDF As String
    Dim i As Long, Cpt As Long
    Dim Ar() As String, c As String, d As Long
     
    Application.ScreenUpdating = False
     
    For a = 1 To ThisWorkbook.Sheets.Count
    'selectionne les feuilles nommées lot
    If Left(Sheets(a).Name, 4) = "lot " Then
    b = CInt(Right(Sheets(a).Name, Len(Sheets(a).Name) - 4))
    'si l'index est impair
            If b Mod 2 <> 0 Then
    Sheets("lot " & b).Range("B2:L27").Copy
            With Sheets("Feuil2")
        .Range("B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        .Range("B2").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            End With
     
    Else
    'si l'index est pair
     Sheets("lot " & b).Range("B2:L27").Copy
         With Sheets("Feuil2")
        .Range("B35").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        .Range("B35").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            End With
     
     
            With Sheets("Feuil2")
        .PageSetup.PrintArea = "$B$2:$L$60"
        .PageSetup.Zoom = False
        .PageSetup.FitToPagesTall = 1
        .PageSetup.FitToPagesWide = 1
       sNomFichierPDF = ThisWorkbook.Path & "\" & "lot " & .Range("E2").Value & " et " & .Range("E35").Value & ".pdf"
        c = .Range("E2").Value & "et" & .Range("E35").Value
     
        .ExportAsFixedFormat Type:=xlTypePDF, Filename:=sNomFichierPDF _
            , Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=True
     
            .Range("B2:L60").Clear
            End With
     
      Application.CutCopyMode = False
     
     
    End If
      End If
      Next a
     
     'si le nombre total des feuille "lot" est impair alors impression de la derniere feuille "lot "
            If b Mod 2 <> 0 Then
                    With Sheets("Feuil2")
     sNomFichierPDF = ThisWorkbook.Path & "\" & "lot " & .Range("E2").Value & ".pdf"
     
                .PageSetup.PrintArea = "$B$2:$L$60"
                .PageSetup.Zoom = False
                .PageSetup.FitToPagesTall = 1
                .PageSetup.FitToPagesWide = 1
                .ExportAsFixedFormat Type:=xlTypePDF, Filename:=sNomFichierPDF _
            , Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=True
     
                .Range("B2:L60").Clear
                    End With
     
            End If
     
     Application.CutCopyMode = False
        Sheets("ACCUEIL").Select
        Application.ScreenUpdating = True
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Changer de workbook pour impression en pdf
    Par shakapouet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/06/2012, 10h57
  2. [XL-2007] Export PDF et zone d'impression
    Par malababar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/01/2012, 21h44
  3. [XL-2002] Impression en PDF suite à sélection multiple dans zone de liste
    Par lumpys dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 20/10/2011, 21h15
  4. Réponses: 1
    Dernier message: 01/02/2009, 11h49
  5. Réponses: 6
    Dernier message: 28/06/2007, 10h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo