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
?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
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
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
?
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
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
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...
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...