[VBA] PrintArea toujours vide...

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
HD
Le #4391431
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
isabelle
Le #4391411
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




HD
Le #4391401
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

Publicité
Poster une réponse
Anonyme