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