Module Application.Dialogs(xlDialogPrint).Show s'affiche deux fois

Bonjour

je desiree imprimer la derniere colonne non vide. ca marche mais le module Application.Dialogs(xlDialogPrint).Show apparait puis j'imprime mais une fois je l'imprime il s'affiche une deuxieme fois. voici le code:

Sub imprimer_scelleeshal()
'
' Macro1 Macro
'
 Dim LastCol As Long
 Dim rep As Boolean
'
 Application.EnableEvents = False
    Sheets("HAL").Select
   If WorksheetFunction.CountA(Range("D1:zz200")) = 0 Then
   MsgBox ("toute les cellules sont vide")
   Exit Sub
   Else

    With ThisWorkbook.Sheets("HAL")
        LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
        .Columns(LastCol).Copy
    End With
    Sheets("impressionhal").Visible = True

    Sheets("impressionhal").Select

     Columns("D").Insert
     Columns("E").Delete
     Columns("D:D").ColumnWidth = 21.7

     rep = Application.Dialogs(xlDialogPrint).Show
     If rep = True Then

     Application.Dialogs(xlDialogPrint).Show
     rep = False
     ActiveWindow.SelectedSheets.Visible = False
     Else

   End If
    End If

       Sheets("HAL").Select
    Application.EnableEvents = True

End Sub

Bonjour,

Pas compris ce que vous voulez faire en fait.

mais une fois je l'imprime il s'affiche une deuxieme fois.

Logique vous avez deux fois l'instruction. Lorsque le code arrive sur Rep = ... cela vous affiche la boite. Vous cliquez sur OK et vous imprimez. Là Rep = true. Donc les instructions dans le If s'exécutent.


Lorsque vous afficher la boite d'impression, vous voulez faire quoi ? Imprimer je suppose

Essayez le code comme ceci plutot

Sub imprimer_scelleeshal()
Dim LastCol As Long

With ThisWorkbook.Sheets("HAL")
    If WorksheetFunction.CountA(.Range("D1:zz200")) = 0 Then
        MsgBox ("toute les cellules sont vide")
        Exit Sub
    End If

    LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
    .Columns(LastCol).Copy
End With

With ThisWorkbook.Sheets("impressionhal")
    .Visible = True
    .Columns("D").Insert
    .Columns("E").Delete
    .Columns("D:D").ColumnWidth = 21.7
End With

Application.Dialogs(xlDialogPrint).Show

ThisWorkbook.Sheets("HAL").Select

End Sub

Pensez à faire du pas à pas avec la touche F8 pour comprendre ce qui se passe à l'exécution de votre code

Crdlt

votre code imprime toutes les feuilles de l'onglet HAL, moi je veux imprimer la feuille de l'onglet impressionhal

je veux une fois determiner la derniere colonne non vide de l'onglet HAL l'inserer dans la colonne D de l'onglet impressionhal ,imprimer la feuille de l'onglet impressionhal puis cacher l'onglet impressionhal et revenir à l'onglet HAL

mon code marche bien à l'exception que le module Application.Dialogs(xlDialogPrint).Show s'affiche de noluveau une fois l'impression de l'onglet impressionhal est terminé. Je peux faire annuler pour le deuxieme affichage mais ce n'est pas pratique ni esthetique.

votre code imprime toutes les feuilles de l'onglet HAL, moi je veux imprimer la feuille de l'onglet impressionhal

Remplacez la fin du code par ceci

'....
With ThisWorkbook.Sheets("impressionhal")
    .Visible = True
    .Select
    .Columns("D").Insert
    .Columns("E").Delete
    .Columns("D:D").ColumnWidth = 21.7
    Application.Dialogs(xlDialogPrint).Show
    .Visible = False
End With

ThisWorkbook.Sheets("HAL").Select

End Sub

si ok

Cordialement

Waw genial ca marche tres bien merci

Rechercher des sujets similaires à "module application dialogs xldialogprint show affiche deux fois"