Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] PrintArea toujours vide...

3 réponses
Avatar
HD
Bonjour,

Pour savoir si une zone d'impression a été définie ou pas je voulais utilser
ce code :

For each Sh in WorkSheets
Sh.Select
If ActiveSheet.PageSetup.PrintArea = "" Then
ret = MsgBox("Feuille vide !!!", vbExclamation, "")
End if
Next

Or... La macro me renvoi toujours que les feuilles sont vides... alors même
que certaines ne le sont pas. Celà peut provenir du fait que la zone
d'impression n'a pas été définie... mais même si la zone d'impression n'a
pas été définie l'on peut avoir quelque chose à imprimer sur la feuille.
L'on peut alors utiliser le ActiveSheet.UsedRange.Count mais le problème est
que si il n'y a aucune cellule de remplie celà me retourne 1 et que si il
y'a une cellule utilisée celà me retourne également 1...

Comment donc savoir si il y'a des données à imprimer ou non sur une feuille
?

Merci d'avance pour votre aide
--
@+
HD

3 réponses

Avatar
HD
J'utilise maintenant une solution de rechange... qui n'est pas très propre
mais qui fonctionne :

On Error Resume Next
For Each Sh In Worksheets
Sh.Select
DoEvents
If Sh.PageSetup.PrintArea = "" Then
rMax = 0
rMax = ActiveSheet.Cells.Find("*", , LookIn:=xlFormulas,
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
If rMax > 0 Then MonTraitement
Else
MonTraitement
End If
Next

--
@+
HD
Avatar
isabelle
bonjour HD,

For Each Sh In Worksheets
Sh.Select
x = ActiveSheet.PageSetup.PrintArea
If x = "" Then
ret = MsgBox("Feuille vide !!!", vbExclamation, "")
Else
ret = MsgBox("Plage d'impression définie : " & x, vbExclamation, "")
End If
Next

isabelle

Bonjour,

Pour savoir si une zone d'impression a été définie ou pas je voulais utilser
ce code :

For each Sh in WorkSheets
Sh.Select
If ActiveSheet.PageSetup.PrintArea = "" Then
ret = MsgBox("Feuille vide !!!", vbExclamation, "")
End if
Next

Or... La macro me renvoi toujours que les feuilles sont vides... alors même
que certaines ne le sont pas. Celà peut provenir du fait que la zone
d'impression n'a pas été définie... mais même si la zone d'impression n'a
pas été définie l'on peut avoir quelque chose à imprimer sur la feuille.
L'on peut alors utiliser le ActiveSheet.UsedRange.Count mais le problème est
que si il n'y a aucune cellule de remplie celà me retourne 1 et que si il
y'a une cellule utilisée celà me retourne également 1...

Comment donc savoir si il y'a des données à imprimer ou non sur une feuille
?

Merci d'avance pour votre aide
--
@+
HD




Avatar
HD
For Each Sh In Worksheets
Sh.Select
x = ActiveSheet.PageSetup.PrintArea
If x = "" Then
ret = MsgBox("Feuille vide !!!", vbExclamation, "")
Else
ret = MsgBox("Plage d'impression définie : " & x, vbExclamation, "")
End If
Next


Eh bien non Mademoiselle Isabelle...

Car PrintArea ne correspond qu'à la zone d'impression définie manuellement
et non à la zone d'impression effective. Ainsi, si sur une feuille vous
remplissez des cellules et que vous lancez la macro elle vous apparaitra
comme vide alors que si vous lancez ensuite des impressions sans rien
définir vous aurez bien des données qui s'imprimeront...

--
@+
HD