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 :

Aperçu et Impression en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2019
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2019
    Messages : 50
    Par défaut Aperçu et Impression en VBA
    J'ai récemment ouvert une discussion sur l'interdiction d'insérer et de supprimer des lignes sur une plage de donnée par code VBA.
    J'ai été très satisfait par la réponse de lionel.
    Je suis aussi d'accords avec la réponse de Pierre que nous devons échanger sur l'espace public ou tout le monde peut participer et apprendre. D'ailleurs moi-même je veux apprendre, je suis novice en VBA et je fais mes premiers pas aux forums.
    Merci beaucoup à Pierre et à Lionel.

    Cela dit, si vous voulez toujours bien m'aider, j'ai une autre préoccupation sur ce même fichier.

    Lorsque je clique sur le bouton "Imprimer et Archiver", l'aperçu s'affiche. Mais voici le problème :

    1) Si je clique sur "fermer l'aperçu", qui se ferme, la boîte de dialogue de choix des imprimantes s'affiche normalement. Mais si je clique sur le "bouton annuler" de cette boîte, l'impression et bien annulée, mais cependant, l'archive se crée. Mais je voudrais que l'archive se crée seulement si on lance l'impression. Pas si on annule l'impression.

    2) Dans l'aperçu, si je clique sur le bouton "imprimer", l'impression se lance directement sur l'imprimante par défaut, puis la boîte de dialogue de choix des imprimantes s'affiche quand même, alors qu'une impression est déjà passée. Serait-il possible que si dans l'aperçu je clique sur le bouton "imprimer" que la boîte de dialogue de choix des imprimantes s'affiche d'abord pour que je fasse le choix, mais que l'impression par défaut ne se lance pas ? Voici le lien du fichier : Etat de besoin.xlsm

    Je sais que c'est trop demander. Ne soyez pas obligé ! Cependant, votre aide sera la bienvenue.

    Merci à tous !

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Il faudrait donner le code vba que tu utilises pour que l'on puisse t'aider (en l'entourant des balises de code => sélection du code puis clic sur le bouton # dans la barre d'outils du message).
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2019
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2019
    Messages : 50
    Par défaut Salut, merci pour la réponse !
    Voici le fichier en question avec les codes.
    Ce sont des codes que j'ai pris sur internet.
    Voici le lien du fichier :
    Le mot de passe est : 1
    Amicalement
    RJSCVF

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Il est préférable de poster le code qui pose problème que le fichier lui-même. L'idée n'est pas d'avoir une solution toute faite, mais de pouvoir appliquer par toi-même les solutions qui seront proposées. Il est donc plus utile de poster le code et non de joindre le fichier
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2019
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2019
    Messages : 50
    Par défaut OK, merci pour la remarque.
    Prochainement, je ferai selon votre conseil.
    Merci
    RJSCVF

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Par défaut
    Bonjour,

    Peux etre avec ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    If Application.Dialogs(xlDialogPrinterSetup).Show = False Then
        Exit Sub
    End If
    Cordialement,

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Perso, je préfère éviter Exit Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not Application.Dialogs(xlDialogPrinterSetup).Show = False Then
      ... ' suite du traitement
    End If
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2019
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2019
    Messages : 50
    Par défaut Salut et merci pour le réponses
    Voici le code que je viens d'adapter suivant vos posts :

    Pour le 1er code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ActiveSheet.Unprotect "1" 
    Worksheets("Marchandises").PrintOut , Preview:=True
    If Application.Dialogs(xlDialogPrinterSetup).Show = False Then
        Exit Sub
    End If
    Avec le prermier code, lorque j'annule l'impression avec la boîte de dialogue choix de l'imprimante, l'impression est annulée et l'archive ne se crée pas. Ce qui est déjà une partie de la réponse à ce que j'ai voulais faire.

    Mais lorsque au lieu d'annuler l'impression, je clique sur le bouton imprimer de cette même boîte de choix de l'imprimante, l'impression ne se lance pas, bien que l'archive se crée. Mais il faut que l'impression se lance d'abord puis que l'archive se crée.

    Quant au 2ème code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveSheet.Unprotect "1"
    Worksheets("Marchandises").PrintOut , Preview:=True
    If Not Application.Dialogs(xlDialogPrinterSetup).Show = False Then
    End If
    Tout marche comme avant, comme si le code n'avait pas été modifié. C'est-à-dire que rien n'a changer !

    Amicalement

    RJSCVF

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Tu ne postes pas assez de code pour que l'on puisse voir où ça cloche.

    Les deux solutions proposées supposent que l'archive se crée APRES la demande d'impression, avortée ou non. Si tu choisis la mienne, ce que je te conseille, place le code qui crée l'archive à la place de la ligne ... 'suite du traitement, sinon, forcément, il ne se passera rien...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2019
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2019
    Messages : 50
    Par défaut Merci pour la réponse ! Voici tout le code du bouton "Imprimer et Archiver"
    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
    Sub Archiver()
    ActiveSheet.Unprotect "1"
    Worksheets("Marchandises").PrintOut , Preview:=True
    Application.Dialogs(xlDialogPrinterSetup).Show
     
    'www.contextures.com
    'for Excel 2010 and later
    Dim wsA As Worksheet
    Dim wbA As Workbook
    Dim strName As String
    Dim strPath As String
    Dim strFile As String
    Dim strPathFile As String
    Dim myFile As Variant
    On Error GoTo errHandler
     
    Set wbA = ActiveWorkbook
    Set wsA = ActiveSheet
     
    'get active workbook folder, if saved
    strPath = wbA.Path
    If strPath = "" Then
      strPath = Application.DefaultFilePath
    End If
    strPath = strPath & "\"
     
    strName = wsA.Range("A1").Value _
              & " Mrch " & wsA.Range("A2").Value _
     
    'create default name for savng file
    strFile = strName & Format(Now(), "yyyy-mm-dd hh.mm.ss")
    strPathFile = strPath & strFile
     
    'export to PDF in current folder
        wsA.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            filename:=strPathFile, _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, _
            OpenAfterPublish:=False
        'confirmation message with file info
        MsgBox "Un archive a été créé au format PDF : " _
          & vbCrLf _
          & strPathFile
    Sheets("Marchandises").Range("C4:D4").ClearContents
    Sheets("Marchandises").Range("C6:D6").ClearContents
    Sheets("Marchandises").Range("C8:D8").ClearContents
    Sheets("Marchandises").Range("G6").ClearContents
    Sheets("Marchandises").Range("TbloExtens").ClearContents
    Sheets("Marchandises").Range("G4").Value = Sheets("Marchandises").Range("G4").Value + 1
    exitHandler:
        Exit Sub
    errHandler:
        MsgBox "Impossible de générer l'archive (fichier PDF)"
        Resume exitHandler
    ActiveSheet.Protect "1", True, True, True
    End Sub
    Amicalement
    RJSCVF

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Je n'ai pas vérifié tout ton code, me contenant d'en réorganiser les blocs, en supprimant notamment le EXIT SUB (à bannir de ton code *). Je ne comprends pas bien pourquoi le Preview puis le choix de l'imprimante, mais bon.

    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
    Sub Archiver()
    Dim wsA As Worksheet
    Dim wbA As Workbook
    Dim strName As String
    Dim strPath As String
    Dim strFile As String
    Dim strPathFile As String
    Dim myFile As Variant
     
      On Error GoTo EndHandler
      ActiveSheet.Unprotect "1"
      Worksheets("Marchandises").PrintOut , Preview:=True
      If Application.Dialogs(xlDialogPrinterSetup).Show() Then
        Set wbA = ActiveWorkbook
        Set wsA = ActiveSheet
     
        'get active workbook folder, if saved
        strPath = wbA.Path
        If strPath = "" Then
          strPath = Application.DefaultFilePath
        End If
        strPath = strPath & "\"
     
        strName = wsA.Range("A1").Value _
        & " Mrch " & wsA.Range("A2").Value _
     
        'create default name for savng file
        strFile = strName & Format(Now(), "yyyy-mm-dd hh.mm.ss")
        strPathFile = strPath & strFile
     
        'export to PDF in current folder
        wsA.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=strPathFile, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
        'confirmation message with file info
        MsgBox "Un archive a été créé au format PDF : " & vbCrLf & strPathFile
        Sheets("Marchandises").Range("C44").ClearContents
        Sheets("Marchandises").Range("C66").ClearContents
        Sheets("Marchandises").Range("C88").ClearContents
        Sheets("Marchandises").Range("G6").ClearContents
        Sheets("Marchandises").Range("TbloExtens").ClearContents
        Sheets("Marchandises").Range("G4").Value = Sheets("Marchandises").Range("G4").Value + 1
      End If
     
    EndHandler:
      If Err <> 0 Then MsgBox "Impossible de générer l'archive (fichier PDF)"
      ActiveSheet.Protect "1", True, True, True
    End Sub

    * Pas d'EXIT SUB, jamais. Pourquoi? Si tu observes ton code, tu verras que la dernière ligne de ton code (ActiveSheet.Protect "1", True, True, True ne sera JAMAIS exécutée. Dans le code que je te fournis, elle le sera TOUJOURS...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2019
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2019
    Messages : 50
    Par défaut Une aide très précieuse !
    Merci pour ton aide en corrigeant mon code.
    Je n'aurai jamais su, vu mon niveau de VBA que la dernière ligne ne s'exécuterait jamais.
    Et je aussi enlevé Preview, je me compliquais pour rien.
    J'ai donc remplacé tout le code de ce bouton par celui que tu a modifié, mais en enlevant le Preview conformément à ta remarque.
    Une fois encore merci pour ton aide.
    Amicalement
    RJSCVF

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

Discussions similaires

  1. Annuler une génération d'archive JAVA
    Par pierre24 dans le forum WinDev
    Réponses: 1
    Dernier message: 24/10/2008, 10h13
  2. Annuler échappement des quotes dans le message
    Par koKoTis dans le forum Langage
    Réponses: 11
    Dernier message: 20/10/2008, 12h33
  3. Quote dans une requete...
    Par Isildur dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/06/2006, 10h57
  4. VARCHAR contenant une quote '
    Par tonyskn dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/05/2003, 19h21
  5. Quotes dans TFilenameEdit (RXLib)
    Par AnnSo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/01/2003, 20h26

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