Pourriez-vous m'expliquer pourquoi j'ai cette alerte
J'ai rentré le code suivant pour imprimer une page excel
Y a t il une erreur dans ce code
J'ai par ailleurs créé un bouton commande auquel j'ai affecté la macro
Public Sub Imprimer()
Dim n As Long
n = 5
With Feuil1
.Unprotect Password:="toto"
Do
If .Cells(n + 1, 1).Value = "" Then .Rows(n + 1).Hidden = True
n = n + 1
Loop While .Cells(n + 1, 1).Formula <> ""
With .PageSetup
.BlackAndWhite = True
.PrintArea = "$A1:M" & n
End With
.PrintOut Preview:=True
.Rows.Hidden = False
.Protect Password:="transall", UserInterFaceOnly:=True
End With
Votre Loop while s'arrête sur la première cellule vide :
VB:
Loop While .Cells(n + 1, 1).Formula <> ""
donc en ligne 12 puisque A10 et A11 ne sont pas vides.
Si vous voulez afficher la zone utile, il faut partir de la fin et remonter jusqu'à qu'une cellule soit non vide. Alors vous pouvez faire :
Code:
Public Sub ImprimerSylvanu()
Dim n As Long
Application.ScreenUpdating = False
n = Range("A65500").End(xlUp).Row ' Dernière cellule occupée
With Feuil2
.Unprotect Password:="toto"
Do
n = n - 1 ' On remonte
a = .Cells(n, 1).Value
Loop While .Cells(n, 1).Value = "" ' On sort si la cellule est non vide
With .PageSetup
.BlackAndWhite = True
.PrintArea = "$A1:M" & n +...
Votre Loop while s'arrête sur la première cellule vide :
VB:
Loop While .Cells(n + 1, 1).Formula <> ""
donc en ligne 12 puisque A10 et A11 ne sont pas vides.
Si vous voulez afficher la zone utile, il faut partir de la fin et remonter jusqu'à qu'une cellule soit non vide. Alors vous pouvez faire :
Code:
Public Sub ImprimerSylvanu()
Dim n As Long
Application.ScreenUpdating = False
n = Range("A65500").End(xlUp).Row ' Dernière cellule occupée
With Feuil2
.Unprotect Password:="toto"
Do
n = n - 1 ' On remonte
a = .Cells(n, 1).Value
Loop While .Cells(n, 1).Value = "" ' On sort si la cellule est non vide
With .PageSetup
.BlackAndWhite = True
.PrintArea = "$A1:M" & n + 1
End With
.PrintPreview
.Protect Password:="toto", UserInterFaceOnly:=True
End With
Application.ScreenUpdating = True
End Sub
J'ai mis la macro dans un module, elle n'a rien à faire dans la feuille.
Bonsoir,
Merci beaucoup @sylvanu !
Ce code fonctionne parfaitement, je le garde aussi précieusement.
Il est plus adapté pour la configuration de ce tableur.
Quelle réactivité sur ce forum, vraiment bravo à tous